rbbt-util 3.2.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data/README.rdoc +65 -0
  2. data/bin/run_workflow.rb +142 -69
  3. data/lib/rbbt-util.rb +3 -3
  4. data/lib/rbbt.rb +12 -3
  5. data/lib/rbbt/annotations.rb +215 -0
  6. data/lib/rbbt/{util/fix_width_table.rb → fix_width_table.rb} +17 -13
  7. data/lib/rbbt/persist.rb +164 -0
  8. data/lib/rbbt/persist/tsv.rb +135 -0
  9. data/lib/rbbt/resource.rb +100 -0
  10. data/lib/rbbt/resource/path.rb +180 -0
  11. data/lib/rbbt/resource/rake.rb +48 -0
  12. data/lib/rbbt/resource/util.rb +111 -0
  13. data/lib/rbbt/resource/with_key.rb +28 -0
  14. data/lib/rbbt/tsv.rb +134 -0
  15. data/lib/rbbt/tsv/accessor.rb +345 -0
  16. data/lib/rbbt/tsv/attach.rb +183 -0
  17. data/lib/rbbt/tsv/attach/util.rb +277 -0
  18. data/lib/rbbt/{util/tsv/filters.rb → tsv/filter.rb} +76 -37
  19. data/lib/rbbt/tsv/index.rb +453 -0
  20. data/lib/rbbt/tsv/manipulate.rb +361 -0
  21. data/lib/rbbt/tsv/parser.rb +231 -0
  22. data/lib/rbbt/tsv/serializers.rb +79 -0
  23. data/lib/rbbt/tsv/util.rb +67 -0
  24. data/lib/rbbt/util/R.rb +3 -3
  25. data/lib/rbbt/util/chain_methods.rb +64 -0
  26. data/lib/rbbt/util/cmd.rb +17 -13
  27. data/lib/rbbt/util/excel2tsv.rb +4 -3
  28. data/lib/rbbt/util/log.rb +1 -0
  29. data/lib/rbbt/util/misc.rb +296 -285
  30. data/lib/rbbt/util/open.rb +9 -2
  31. data/lib/rbbt/util/persistence.rb +1 -1
  32. data/lib/rbbt/util/task/job.rb +3 -1
  33. data/lib/rbbt/workflow.rb +193 -0
  34. data/lib/rbbt/workflow/accessor.rb +249 -0
  35. data/lib/rbbt/workflow/annotate.rb +60 -0
  36. data/lib/rbbt/workflow/soap.rb +100 -0
  37. data/lib/rbbt/workflow/step.rb +102 -0
  38. data/lib/rbbt/workflow/task.rb +76 -0
  39. data/test/rbbt/resource/test_path.rb +12 -0
  40. data/test/rbbt/test_annotations.rb +106 -0
  41. data/test/rbbt/{util/test_fix_width_table.rb → test_fix_width_table.rb} +8 -9
  42. data/test/rbbt/test_resource.rb +66 -0
  43. data/test/rbbt/test_tsv.rb +332 -0
  44. data/test/rbbt/test_workflow.rb +102 -0
  45. data/test/rbbt/tsv/test_accessor.rb +163 -0
  46. data/test/rbbt/{util/tsv → tsv}/test_attach.rb +86 -43
  47. data/test/rbbt/{util/tsv/test_filters.rb → tsv/test_filter.rb} +31 -13
  48. data/test/rbbt/tsv/test_index.rb +284 -0
  49. data/test/rbbt/{util/tsv → tsv}/test_manipulate.rb +35 -105
  50. data/test/rbbt/util/test_R.rb +1 -1
  51. data/test/rbbt/util/test_chain_methods.rb +22 -0
  52. data/test/rbbt/util/test_filecache.rb +0 -1
  53. data/test/rbbt/util/test_misc.rb +97 -79
  54. data/test/rbbt/util/test_open.rb +1 -0
  55. data/test/rbbt/util/test_tmpfile.rb +1 -1
  56. data/test/rbbt/workflow/test_soap.rb +103 -0
  57. data/test/rbbt/workflow/test_step.rb +142 -0
  58. data/test/rbbt/workflow/test_task.rb +84 -0
  59. data/test/test_helper.rb +7 -7
  60. metadata +80 -54
  61. data/lib/rbbt/util/rake.rb +0 -176
  62. data/lib/rbbt/util/resource.rb +0 -355
  63. data/lib/rbbt/util/task.rb +0 -183
  64. data/lib/rbbt/util/tc_hash.rb +0 -324
  65. data/lib/rbbt/util/tsv.rb +0 -236
  66. data/lib/rbbt/util/tsv/accessor.rb +0 -312
  67. data/lib/rbbt/util/tsv/attach.rb +0 -416
  68. data/lib/rbbt/util/tsv/index.rb +0 -419
  69. data/lib/rbbt/util/tsv/manipulate.rb +0 -300
  70. data/lib/rbbt/util/tsv/misc.rb +0 -41
  71. data/lib/rbbt/util/tsv/parse.rb +0 -324
  72. data/lib/rbbt/util/tsv/resource.rb +0 -88
  73. data/lib/rbbt/util/workflow.rb +0 -135
  74. data/lib/rbbt/util/workflow/soap.rb +0 -116
  75. data/test/rbbt/util/test_persistence.rb +0 -201
  76. data/test/rbbt/util/test_rake.rb +0 -54
  77. data/test/rbbt/util/test_resource.rb +0 -77
  78. data/test/rbbt/util/test_task.rb +0 -133
  79. data/test/rbbt/util/test_tc_hash.rb +0 -144
  80. data/test/rbbt/util/test_tsv.rb +0 -221
  81. data/test/rbbt/util/test_workflow.rb +0 -135
  82. data/test/rbbt/util/tsv/test_accessor.rb +0 -150
  83. data/test/rbbt/util/tsv/test_index.rb +0 -241
  84. data/test/rbbt/util/tsv/test_parse.rb +0 -87
  85. data/test/rbbt/util/tsv/test_resource.rb +0 -9
@@ -1,5 +1,5 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
- require 'rbbt/util/tsv/filters'
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helper.rb')
2
+ require 'rbbt/tsv/filter'
3
3
 
4
4
  class TestTSVFilters < Test::Unit::TestCase
5
5
  def test_collect
@@ -11,7 +11,7 @@ row2 A B
11
11
  EOF
12
12
 
13
13
  TmpFile.with_file(content1) do |filename|
14
- tsv = TSV.new filename
14
+ tsv = TSV.open filename
15
15
  tsv.filter
16
16
  tsv.add_filter "field:ValueA", ["A"]
17
17
  assert_equal 1, tsv.collect.size
@@ -27,7 +27,7 @@ row2 A B
27
27
  EOF
28
28
 
29
29
  TmpFile.with_file(content1) do |filename|
30
- tsv = TSV.new filename
30
+ tsv = TSV.open filename
31
31
  tsv.filter
32
32
  tsv.add_filter "field:ValueA", ["A"]
33
33
  elem = []
@@ -46,7 +46,7 @@ row3 A C
46
46
  EOF
47
47
 
48
48
  TmpFile.with_file(content1) do |filename|
49
- tsv = TSV.new filename
49
+ tsv = TSV.open filename
50
50
  tsv.filter
51
51
  tsv.add_filter "field:ValueA", ["A"]
52
52
 
@@ -72,9 +72,9 @@ row3 A C
72
72
  EOF
73
73
 
74
74
  TmpFile.with_file(content1) do |filename|
75
- tsv = TSV.new filename
75
+ tsv = TSV.open filename
76
76
  tsv.filter
77
- tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA
77
+ tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA.find(:user)
78
78
 
79
79
  elem = []
80
80
  tsv.through do |k,v| elem << k end
@@ -86,9 +86,9 @@ row3 A C
86
86
  tsv.through do |k,v| elem << k end
87
87
  assert_equal 1, elem.size
88
88
 
89
- tsv = TSV.new filename
89
+ tsv = TSV.open filename
90
90
  tsv.filter
91
- tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA
91
+ tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA.find(:user)
92
92
 
93
93
  elem = []
94
94
  tsv.through do |k,v| elem << k end
@@ -105,7 +105,7 @@ row2 A B
105
105
  EOF
106
106
 
107
107
  TmpFile.with_file(content1) do |filename|
108
- tsv = TSV.new filename
108
+ tsv = TSV.open filename
109
109
  tsv.filter
110
110
  tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA.find(:user)
111
111
 
@@ -125,7 +125,7 @@ row2 A B
125
125
  tsv.through do |k,v| elem << k end
126
126
  assert_equal 1, elem.size
127
127
 
128
- tsv = TSV.new filename
128
+ tsv = TSV.open filename
129
129
  tsv.filter
130
130
  tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA.find(:user)
131
131
 
@@ -143,12 +143,12 @@ row2 A B C
143
143
  EOF
144
144
 
145
145
  TmpFile.with_file(content) do |filename|
146
- tsv = TSV.new(File.open(filename), :double, :sep => /\s/)
146
+ tsv = TSV.open(File.open(filename), :double, :sep => /\s/)
147
147
  assert_equal 2, tsv.keys.length
148
148
  tsv.delete "row2"
149
149
  assert_equal 1, tsv.keys.length
150
150
 
151
- tsv = TSV.new(File.open(filename), :double, :sep => /\s/)
151
+ tsv = TSV.open(File.open(filename), :double, :sep => /\s/)
152
152
  tsv.filter
153
153
  tsv.add_filter "field:ValueA", ["A"]
154
154
 
@@ -163,5 +163,23 @@ row2 A B C
163
163
  end
164
164
  end
165
165
 
166
+ def test_filename
167
+ content1 =<<-EOF
168
+ #: :sep=/\\s+/#:case_insensitive=false
169
+ #Id ValueA ValueB
170
+ row1 a|aa|aaa b
171
+ row2 A B
172
+ EOF
173
+
174
+ TmpFile.with_file(content1) do |filename|
175
+ tsv = TSV.open filename
176
+ tsv.filter
177
+ tsv.add_filter "field:ValueA", ["A"]
178
+ assert tsv.filename =~ /ValueA/
179
+ tsv.pop_filter
180
+ assert tsv.filename !~ /ValueA/
181
+ end
182
+
183
+ end
166
184
  end
167
185
 
@@ -0,0 +1,284 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helper.rb')
2
+ require 'rbbt/tsv'
3
+ require 'rbbt/tsv/index'
4
+
5
+ class TestTSVManipulate < Test::Unit::TestCase
6
+
7
+ def load_segment_data(data)
8
+ tsv = TSV.open(data, :list, :sep=>":", :cast => proc{|e| e =~ /(\s*)(_*)/; ($1.length..($1.length + $2.length - 1))})
9
+ tsv.add_field "Start" do |key, values|
10
+ values["Range"].first
11
+ end
12
+ tsv.add_field "End" do |key, values|
13
+ values["Range"].last
14
+ end
15
+
16
+ tsv = tsv.slice ["Start", "End"]
17
+
18
+ tsv
19
+ end
20
+
21
+ def test_index
22
+ content =<<-EOF
23
+ #Id ValueA ValueB OtherID
24
+ row1 a|aa|aaa b Id1|Id2
25
+ row2 A B Id3
26
+ EOF
27
+
28
+ TmpFile.with_file(content) do |filename|
29
+ tsv = TSV.open(File.open(filename), :sep => /\s+/, :key_field => "OtherID", :persistence => false)
30
+ index = tsv.index(:case_insensitive => true, :persistence => true)
31
+ assert index["row1"].include? "Id1"
32
+ assert_equal "OtherID", index.fields.first
33
+ end
34
+
35
+ end
36
+
37
+ def test_best_index
38
+ content =<<-EOF
39
+ #Id ValueA ValueB OtherID
40
+ row1 a|aa|aaa b|A Id1
41
+ row2 A a|B Id3
42
+ row3 A a|B Id4
43
+ EOF
44
+
45
+ TmpFile.with_file(content) do |filename|
46
+ tsv = TSV.open(File.open(filename), :sep => /\s+/, :key_field => "OtherID")
47
+ index = tsv.index(:order => true)
48
+ assert_equal "Id1", index['a'].first
49
+ assert_equal "Id3", index['A'].first
50
+ assert_equal "OtherID", index.fields.first
51
+
52
+ index = tsv.index(:order => false)
53
+ assert_equal "Id1", index['a'].first
54
+ end
55
+
56
+ TmpFile.with_file(content) do |filename|
57
+ tsv = TSV.open(File.open(filename), :sep => /\s+/, :key_field => "OtherID")
58
+ index = tsv.index
59
+ assert index["row1"].include? "Id1"
60
+ assert_equal "OtherID", index.fields.first
61
+ end
62
+ end
63
+
64
+
65
+ def test_index_from_persit
66
+ content =<<-EOF
67
+ #Id ValueA ValueB OtherID
68
+ row1 a|aa|aaa b|A Id1
69
+ row2 A a|B Id3
70
+ row3 A a|B Id4
71
+ EOF
72
+
73
+ TmpFile.with_file(content) do |filename|
74
+ tsv = TSV.open(Open.open(filename), :sep => /\s+/, :key_field => "OtherID", :persist => true)
75
+ index = tsv.index(:order => true)
76
+ assert_equal "Id1", index['a'].first
77
+ assert_equal "Id3", index['A'].first
78
+ assert_equal "OtherID", index.fields.first
79
+ end
80
+ end
81
+
82
+ def test_index_to_persist
83
+ content =<<-EOF
84
+ #Id ValueA ValueB OtherID
85
+ row1 a|aa|aaa b|A Id1
86
+ row2 A a|B Id3
87
+ row3 A a|B Id4
88
+ EOF
89
+
90
+ TmpFile.with_file(content) do |filename|
91
+ tsv = TSV.open(Open.open(filename), :sep => /\s+/, :key_field => "OtherID", :persist => true)
92
+
93
+ index = tsv.index(:order => true, :persist => true)
94
+ assert_equal "Id1", index['a'].first
95
+ assert_equal "Id3", index['A'].first
96
+ assert_equal "OtherID", index.fields.first
97
+
98
+ tsv.delete "Id1"
99
+
100
+ index = tsv.index(:order => true, :persist => true)
101
+ assert_equal "Id1", index['a'].first
102
+ assert_equal "Id3", index['A'].first
103
+ assert_equal "OtherID", index.fields.first
104
+
105
+ index = tsv.index(:order => true, :persist => false)
106
+ assert_equal "Id3", index['a'].first
107
+ end
108
+ end
109
+
110
+ def test_index_static
111
+ content =<<-EOF
112
+ #Id ValueA ValueB OtherID
113
+ row1 a|aa|aaa b|A Id1
114
+ row2 A a|B Id3
115
+ row3 A a|B Id4
116
+ EOF
117
+
118
+ TmpFile.with_file(content) do |filename|
119
+ index = TSV.index(filename, :target => "OtherID", :data_sep => /\s+/, :order => true, :persist => false)
120
+ assert_equal "Id1", index['a'].first
121
+ assert_equal "Id3", index['A'].first
122
+ assert_equal "OtherID", index.fields.first
123
+ end
124
+ end
125
+
126
+ def test_index_static_persist
127
+ content =<<-EOF
128
+ #Id ValueA ValueB OtherID
129
+ row1 a|aa|aaa b|A Id1
130
+ row2 A a|B Id3
131
+ row3 A a|B Id4
132
+ EOF
133
+
134
+ TmpFile.with_file(content) do |filename|
135
+ index = TSV.index(filename, :target => "OtherID", :data_sep => /\s+/, :order => true, :persist => false)
136
+ assert_equal "Id1", index['a'].first
137
+ assert_equal "Id3", index['A'].first
138
+ assert_equal "OtherID", index.fields.first
139
+
140
+ index = TSV.index(filename, :target => "OtherID", :data_sep => /\s+/, :order => true, :persist => true)
141
+ assert_equal "Id1", index['a'].first
142
+ assert_equal "Id3", index['A'].first
143
+ assert_equal "OtherID", index.fields.first
144
+
145
+ Open.write(filename, Open.read(filename).sub(/row1.*Id1\n/,''))
146
+
147
+ index = TSV.index(filename, :target => "OtherID", :data_sep => /\s+/, :order => true, :persist => true)
148
+ assert_equal "Id1", index['a'].first
149
+ assert_equal "Id3", index['A'].first
150
+ assert_equal "OtherID", index.fields.first
151
+ assert index.include?('aaa')
152
+
153
+ index = TSV.index(filename, :target => "OtherID", :data_sep => /\s+/, :order => true, :persist => false)
154
+ assert ! index.include?('aaa')
155
+ end
156
+ end
157
+
158
+ def test_pos_index
159
+ content =<<-EOF
160
+ #Id ValueA ValueB Pos
161
+ row1 a|aa|aaa b 0|10
162
+ row2 A B 30
163
+ EOF
164
+
165
+ TmpFile.with_file(content) do |filename|
166
+ tsv = TSV.open(File.open(filename), :double, :sep => /\s+/)
167
+ index = tsv.pos_index("Pos")
168
+ assert_equal ["row1"], index[10]
169
+ end
170
+ end
171
+
172
+ def test_range_index
173
+ content =<<-EOF
174
+ #Id ValueA ValueB Pos1 Pos2
175
+ row1 a|aa|aaa b 0|10 10|30
176
+ row2 A B 30 35
177
+ EOF
178
+
179
+ TmpFile.with_file(content) do |filename|
180
+ tsv = TSV.open(File.open(filename), :double, :sep => /\s+/)
181
+ index = tsv.pos_index("Pos1")
182
+ assert_equal ["row1"], index[10]
183
+
184
+ index = tsv.range_index("Pos1", "Pos2")
185
+ assert_equal ["row1"], index[20]
186
+ end
187
+ end
188
+
189
+ def test_range_index2
190
+ data =<<-EOF
191
+ #ID:Range
192
+ #:012345678901234567890
193
+ a: ______
194
+ b: ______
195
+ c: _______
196
+ d: ____
197
+ e: ______
198
+ f: ___
199
+ g: ____
200
+ EOF
201
+ TmpFile.with_file(data) do |datafile|
202
+ tsv = load_segment_data(datafile)
203
+ f = tsv.range_index("Start", "End", :persist => true)
204
+
205
+ assert_equal %w(), f[0].sort
206
+ assert_equal %w(b), f[1].sort
207
+ assert_equal %w(), f[20].sort
208
+ assert_equal %w(), f[(20..100)].sort
209
+ assert_equal %w(a b d), f[3].sort
210
+ assert_equal %w(a b c d e), f[(3..4)].sort
211
+ end
212
+ end
213
+
214
+ def test_range_index_persistent
215
+ data =<<-EOF
216
+ #ID:Range
217
+ #:012345678901234567890
218
+ a: ______
219
+ b: ______
220
+ c: _______
221
+ d: ____
222
+ e: ______
223
+ f: ___
224
+ g: ____
225
+ EOF
226
+ TmpFile.with_file(data) do |datafile|
227
+ TmpFile.with_file(load_segment_data(datafile)) do |tsvfile|
228
+ f = TSV.range_index(tsvfile, "Start", "End", :persistence => true)
229
+
230
+ assert_equal %w(), f[0].sort
231
+ assert_equal %w(b), f[1].sort
232
+ assert_equal %w(), f[20].sort
233
+ assert_equal %w(), f[(20..100)].sort
234
+ assert_equal %w(a b d), f[3].sort
235
+ assert_equal %w(a b c d e), f[(3..4)].sort
236
+ end
237
+ end
238
+ end
239
+
240
+
241
+ # #{{{ Test Attach
242
+ # def test_index_headerless
243
+ # content =<<-EOF
244
+ #row1 a|aa|aaa b Id1|Id2
245
+ #row2 A B Id3
246
+ # EOF
247
+ #
248
+ # TmpFile.with_file(content) do |filename|
249
+ # tsv = TSV.open(File.open(filename), :sep => /\s+/)
250
+ # index = tsv.index(:target => 2)
251
+ # assert index["row1"].include? "Id1"
252
+ # end
253
+ # end
254
+
255
+
256
+
257
+ def test_range_index_persistent_with_filter
258
+ data =<<-EOF
259
+ #ID:Range
260
+ #:012345678901234567890
261
+ a: ______
262
+ b: ______
263
+ c: _______
264
+ d: ____
265
+ e: ______
266
+ f: ___
267
+ g: ____
268
+ EOF
269
+ TmpFile.with_file(data) do |datafile|
270
+ TmpFile.with_file(load_segment_data(datafile)) do |tsvfile|
271
+ f = TSV.range_index(tsvfile, "Start", "End", :filters => [["field:Start", "3"]])
272
+
273
+ assert_equal %w(), f[0].sort
274
+ assert_equal %w(), f[1].sort
275
+ assert_equal %w(), f[20].sort
276
+ assert_equal %w(), f[(20..100)].sort
277
+ assert_equal %w(a), f[3].sort
278
+ assert_equal %w(a), f[(3..4)].sort
279
+ end
280
+ end
281
+ end
282
+
283
+ end
284
+
@@ -1,23 +1,28 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
- require 'rbbt/util/tsv'
3
- require 'rbbt/util/tsv/manipulate'
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../../', 'test_helper.rb')
2
+ require 'rbbt/tsv'
3
+ require 'rbbt/tsv/manipulate'
4
4
 
5
5
  class TestTSVManipulate < Test::Unit::TestCase
6
6
 
7
- def test_indentify_fields
7
+ def test_through
8
8
  content =<<-EOF
9
- #ID ValueA ValueB Comment
10
- row1 a b c
11
- row2 A B C
9
+ #Id ValueA ValueB OtherID
10
+ row1 a|aa|aaa b Id1|Id2
11
+ row2 A B Id3
12
+ row3 a C Id4
12
13
  EOF
13
14
 
14
15
  TmpFile.with_file(content) do |filename|
15
- tsv = TSV.new(File.open(filename), :double, :sep => /\s/)
16
- assert_equal :key, tsv.identify_field("ID")
16
+ tsv = TSV.open(File.open(filename), :sep => /\s+/)
17
+
18
+ new_key, new_fields = tsv.through "ValueA" do |key, values|
19
+ assert(tsv.keys.include? values["Id"].first)
20
+ end
21
+
22
+ assert_equal "ValueA", new_key
17
23
  end
18
24
  end
19
25
 
20
-
21
26
  def test_reorder_simple
22
27
  content =<<-EOF
23
28
  #Id ValueA ValueB OtherID
@@ -27,41 +32,19 @@ row3 a C Id4
27
32
  EOF
28
33
 
29
34
  TmpFile.with_file(content) do |filename|
30
- tsv = TSV.new(File.open(filename), :sep => /\s+/)
35
+ tsv = TSV.open(File.open(filename), :sep => /\s+/)
31
36
 
32
37
  tsv1 = tsv.reorder("ValueA")
33
38
 
34
39
  assert_equal "ValueA", tsv1.key_field
35
- assert_equal %w(Id ValueB OtherID), tsv1.fields
36
40
  assert_equal ["B"], tsv1["A"]["ValueB"]
37
41
  assert_equal ["b","C"], tsv1["a"]["ValueB"]
38
42
  assert_equal ["b"], tsv1["aa"]["ValueB"]
43
+ assert_equal %w(Id ValueB OtherID), tsv1.fields
39
44
 
40
45
  end
41
46
  end
42
47
 
43
- def test_reorder_simple_headerless
44
- content =<<-EOF
45
- row1 a|aa|aaa b Id1|Id2
46
- row2 A B Id3
47
- row3 a C Id4
48
- EOF
49
-
50
- TmpFile.with_file(content) do |filename|
51
- tsv = TSV.new(File.open(filename), :sep => /\s+/)
52
-
53
- tsv1 = tsv.reorder 0
54
-
55
- assert_nil tsv1.key_field
56
- assert_equal ["B"], tsv1["A"][1]
57
- assert_equal ["b","C"], tsv1["a"][1]
58
- assert_equal ["b"], tsv1["aa"][1]
59
- assert_equal ["row1"], tsv1["aa"][0]
60
- assert_equal ["row1","row3"], tsv1["a"][0]
61
- end
62
- end
63
-
64
-
65
48
  def test_reorder_remove_field
66
49
  content =<<-EOF
67
50
  #Id ValueA ValueB OtherID
@@ -71,7 +54,7 @@ row3 a C Id4
71
54
  EOF
72
55
 
73
56
  TmpFile.with_file(content) do |filename|
74
- tsv = TSV.new(File.open(filename), :sep => /\s+/)
57
+ tsv = TSV.open(File.open(filename), :sep => /\s+/)
75
58
 
76
59
  tsv1 = tsv.reorder("ValueA", ["ValueB", "Id"])
77
60
 
@@ -84,24 +67,6 @@ row3 a C Id4
84
67
  end
85
68
  end
86
69
 
87
- def test_through
88
- content =<<-EOF
89
- #Id ValueA ValueB OtherID
90
- row1 a|aa|aaa b Id1|Id2
91
- row2 A B Id3
92
- row3 a C Id4
93
- EOF
94
-
95
- TmpFile.with_file(content) do |filename|
96
- tsv = TSV.new(File.open(filename), :sep => /\s+/)
97
-
98
- tsv.through "ValueA" do |key, values|
99
- assert(tsv.keys.include? values["Id"].first)
100
- end
101
- end
102
- end
103
-
104
-
105
70
  def test_slice
106
71
  content =<<-EOF
107
72
  #ID ValueA ValueB Comment
@@ -110,28 +75,11 @@ row2 A B C
110
75
  EOF
111
76
 
112
77
  TmpFile.with_file(content) do |filename|
113
- tsv = TSV.new(File.open(filename), :double, :sep => /\s/)
78
+ tsv = TSV.open(File.open(filename), :type => :double, :sep => /\s/)
114
79
  assert_equal [["a"],["c"]], tsv.reorder(:key, ["ValueA", "Comment"])["row1"]
115
80
  end
116
81
  end
117
82
 
118
- def test_sort
119
- content =<<-EOF
120
- #Id ValueA ValueB OtherID Pos
121
- row1 a|aa|aaa b Id1|Id2 2
122
- row2 A B Id3 1
123
- row3 A|AA|AAA|AAA B Id3 3
124
- EOF
125
-
126
- TmpFile.with_file(content) do |filename|
127
- tsv = TSV.new(File.open(filename), :sep => /\s+/)
128
- assert_equal %w(row1 row2 row3), tsv.sort
129
- assert_equal %w(row1 row2 row3), tsv.sort(:key)
130
- assert_equal %w(row2 row1 row3), tsv.sort("Pos")
131
- assert_equal %w(row3 row2 row1), tsv.sort("ValueA") do |values| values["ValueA"].length end
132
- end
133
- end
134
-
135
83
  def test_select
136
84
  content =<<-EOF
137
85
  #Id ValueA ValueB OtherID
@@ -141,7 +89,7 @@ row3 a C Id4
141
89
  EOF
142
90
 
143
91
  TmpFile.with_file(content) do |filename|
144
- tsv = TSV.new(filename + '#:sep=/\s+/')
92
+ tsv = TSV.open(filename, :sep => /\s+/)
145
93
  assert tsv.type == :double
146
94
 
147
95
  new = tsv.select %w(b Id4)
@@ -156,13 +104,12 @@ row3 a C Id4
156
104
  new = tsv.select "ValueB" => /b|Id4/
157
105
  assert_equal %w(row1).sort, new.keys
158
106
 
159
- tsv = TSV.new(filename + '#:sep=/\s+/#:type=:flat')
107
+ tsv = TSV.open(filename, :sep => /\s+/, :type => :flat)
160
108
  assert tsv.type != :double
161
109
 
162
110
  new = tsv.select %w(b Id4)
163
111
  assert_equal %w(row1 row3).sort, new.keys.sort
164
112
 
165
-
166
113
  new = tsv.select do |k,v| v["ValueA"].include? "A" end
167
114
  assert_equal %w(row2).sort, new.keys.sort
168
115
  end
@@ -177,7 +124,7 @@ row3 a C Id4
177
124
  EOF
178
125
 
179
126
  TmpFile.with_file(content) do |filename|
180
- tsv = TSV.new(File.open(filename), :sep => /\s+/)
127
+ tsv = TSV.open(File.open(filename), :sep => /\s+/)
181
128
 
182
129
  tsv.process "ValueA" do |field_values,key,values|
183
130
  field_values.collect{|v| "Pref:#{v}"}
@@ -196,7 +143,7 @@ row3 a C Id4
196
143
  EOF
197
144
 
198
145
  TmpFile.with_file(content) do |filename|
199
- tsv = TSV.new(filename + '#:sep=/\s+/')
146
+ tsv = TSV.open(filename, :sep => /\s+/)
200
147
  tsv.add_field "Str length" do |k,v|
201
148
  (v.flatten * " ").length
202
149
  end
@@ -205,23 +152,6 @@ row3 a C Id4
205
152
  end
206
153
  end
207
154
 
208
- def test_slice_namespace
209
- content =<<-EOF
210
- #Id LetterValue:ValueA LetterValue:ValueB OtherID
211
- row1 a|aa|aaa b Id1|Id2
212
- row2 A B Id3
213
- row3 a C Id4
214
- EOF
215
-
216
- TmpFile.with_file(content) do |filename|
217
- tsv = TSV.new(filename + '#:sep=/\s+/')
218
-
219
- tsv_ns = tsv.slice_namespace "LetterValue"
220
- assert_equal %w(LetterValue:ValueA LetterValue:ValueB), tsv_ns.fields
221
- end
222
-
223
- end
224
-
225
155
  def test_add_field_double_with_list_result
226
156
  content =<<-EOF
227
157
  #Id LetterValue:ValueA LetterValue:ValueB OtherID
@@ -231,7 +161,7 @@ row3 a C Id4
231
161
  EOF
232
162
 
233
163
  TmpFile.with_file(content) do |filename|
234
- tsv = TSV.new(filename + '#:sep=/\s+/')
164
+ tsv = TSV.open(filename, :sep => /\s+/)
235
165
 
236
166
  tsv.add_field "Test" do
237
167
  "test"
@@ -239,26 +169,26 @@ row3 a C Id4
239
169
 
240
170
  assert Array === tsv["row1"]["Test"]
241
171
  end
242
-
243
172
  end
244
173
 
245
- def test_through_single
174
+ def test_through_headless
246
175
  content =<<-EOF
247
- #Id LetterValue
248
- row1 a1
249
- row2 A1
250
- row3 a2
176
+ row1 a|aa|aaa b Id1|Id2
177
+ row2 A B Id3
178
+ row3 a C Id4
251
179
  EOF
252
180
 
253
181
  TmpFile.with_file(content) do |filename|
254
- tsv = TSV.new(filename + '#:sep=/\s+/#:type=:single')
182
+ tsv = TSV.open(filename, :sep => /\s+/)
183
+
184
+ test = false
185
+ tsv.through do
186
+ test = true
187
+ end
188
+ assert test
255
189
 
256
- #TODO: WTF!!!
257
- assert_equal "row3", tsv.reorder("LetterValue", :key)[97]
258
190
  end
259
191
 
260
192
  end
261
193
 
262
-
263
194
  end
264
-