rbbt-util 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,54 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helper.rb')
2
+ require 'rbbt/util/rake'
3
+
4
+ class TestRake < Test::Unit::TestCase
5
+ def test_run
6
+ rakefile=<<-EOF
7
+ require 'rbbt/util/rake'
8
+
9
+ file "foo" do |t|
10
+ Open.write(t.name, 'bar')
11
+ end
12
+ EOF
13
+
14
+ TmpFile.with_file(rakefile) do |f|
15
+ RakeHelper.run f, :foo
16
+
17
+ assert File.exists? "foo"
18
+ FileUtils.rm "foo"
19
+ end
20
+ end
21
+
22
+ def test_run_default
23
+ rakefile=<<-EOF
24
+ require 'rbbt/util/rake'
25
+
26
+ file "foo" do |t|
27
+ Open.write(t.name, 'bar')
28
+ end
29
+ EOF
30
+
31
+ TmpFile.with_file(rakefile) do |f|
32
+ RakeHelper.run f
33
+
34
+ assert File.exists? "foo"
35
+ FileUtils.rm "foo"
36
+ end
37
+ end
38
+
39
+
40
+ def test_files
41
+ rakefile=<<-EOF
42
+ require 'rbbt/util/rake'
43
+
44
+ file "foo" do |t|
45
+ Open.write(t.name, 'bar')
46
+ end
47
+ EOF
48
+
49
+ TmpFile.with_file(rakefile) do |f|
50
+ assert RakeHelper.files(f).include? "foo"
51
+ end
52
+ end
53
+ end
54
+
@@ -12,8 +12,8 @@ row2 A B
12
12
 
13
13
  TmpFile.with_file(content) do |filename|
14
14
  data = {}
15
- key_field, fields = TSV.parse(data, File.open(filename), :sep => /\s+/, :keep_empty => true)
16
- assert_equal ["ValueA", "ValueB", "Comment"], fields
15
+ data, extra = TSV.parse(File.open(filename), :sep => /\s+/, :keep_empty => true)
16
+ assert_equal ["ValueA", "ValueB", "Comment"], extra[:fields]
17
17
  assert_equal ["c"], data["row1"][2]
18
18
  assert_equal [""], data["row2"][2]
19
19
  end
@@ -27,7 +27,7 @@ row2 A B C
27
27
  EOF
28
28
 
29
29
  TmpFile.with_file(content) do |filename|
30
- tsv = TSV.new(File.open(filename), :sep => /\s/)
30
+ tsv = TSV.new(File.open(filename), :double, :sep => /\s/)
31
31
  assert_equal [["a"],["c"]], tsv.reorder(:main, ["ValueA", "Comment"])["row1"]
32
32
  end
33
33
  end
@@ -64,9 +64,9 @@ row2 A B
64
64
 
65
65
  TmpFile.with_file(content) do |filename|
66
66
  data = {}
67
- key_field, fields = TSV.parse(data, File.open(filename), :sep => /\s+/)
68
- assert_equal "Id", key_field
69
- assert_equal ["ValueA", "ValueB"], fields
67
+ data, extra = TSV.parse(File.open(filename), :sep => /\s+/)
68
+ assert_equal "Id", extra[:key_field]
69
+ assert_equal ["ValueA", "ValueB"], extra[:fields]
70
70
  assert_equal ["a", "aa", "aaa"], data["row1"][0]
71
71
  end
72
72
  end
@@ -79,7 +79,7 @@ row2 A B Id3
79
79
  EOF
80
80
 
81
81
  TmpFile.with_file(content) do |filename|
82
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :large => true)
82
+ tsv = TSV.new(File.open(filename), :double, :sep => /\s+/, :key => "OtherID", :large => true)
83
83
  assert_equal "OtherID", tsv.key_field
84
84
  assert_equal ["Id", "ValueA", "ValueB"], tsv.fields
85
85
  assert_equal ["a", "aa", "aaa"], tsv["Id2"][1]
@@ -94,7 +94,7 @@ row2 A B Id3
94
94
  EOF
95
95
 
96
96
  TmpFile.with_file(content) do |filename|
97
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID")
97
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID")
98
98
  assert_equal "OtherID", tsv.key_field
99
99
  assert_equal ["Id", "ValueA", "ValueB"], tsv.fields
100
100
  assert_equal ["a", "aa", "aaa"], tsv["Id1"][1]
@@ -111,7 +111,7 @@ row3 a C Id4
111
111
  EOF
112
112
 
113
113
  TmpFile.with_file(content) do |filename|
114
- tsv = TSV.open_file(filename + '#:sep=/\s+/#:native=OtherID')
114
+ tsv = TSV.open_file(filename + '#:sep=/\s+/#:key=OtherID')
115
115
  assert_equal "OtherID", tsv.key_field
116
116
  assert_equal ["Id", "ValueA", "ValueB"], tsv.fields
117
117
  assert_equal ["a", "aa", "aaa"], tsv["Id1"][1]
@@ -129,9 +129,9 @@ row2 A B Id3
129
129
  EOF
130
130
 
131
131
  TmpFile.with_file(content) do |filename|
132
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :extra => 2)
132
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID", :others => 2)
133
133
  assert_equal ["b"], tsv["Id2"][0]
134
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :extra => 'ValueB')
134
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID", :others => 'ValueB')
135
135
  assert_equal ["b"], tsv["Id2"][0]
136
136
  end
137
137
  end
@@ -144,7 +144,7 @@ row2 A B Id3
144
144
  EOF
145
145
 
146
146
  TmpFile.with_file(content) do |filename|
147
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :case_insensitive => true)
147
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID", :case_insensitive => true)
148
148
  assert_equal "OtherID", tsv.key_field
149
149
  assert_equal ["Id", "ValueA", "ValueB"], tsv.fields
150
150
  assert_equal ["a", "aa", "aaa"], tsv["id1"][1]
@@ -160,15 +160,16 @@ row2 A B Id3
160
160
  EOF
161
161
 
162
162
  TmpFile.with_file(content) do |filename|
163
- tsv = TSV.new(filename, :sep => /\s+/, :native => "OtherID", :persistence => true)
163
+ tsv = TSV.new(filename, :sep => /\s+/, :key => "OtherID", :persistence => true)
164
164
  assert_equal ["Id", "ValueA", "ValueB"], tsv.fields
165
165
  tsv['Id4'] = [["row3"],["aA"],["bB","bbBB"]]
166
166
  assert_equal ["aA"], tsv["Id4"][1]
167
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :persistence => true)
167
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID", :persistence => true)
168
168
  assert_equal ["Id", "ValueA", "ValueB"], tsv.fields
169
+
169
170
  assert_equal ["aA"], tsv["Id4"][1]
170
171
  assert_equal [["b"],["B"]], tsv.values_at("Id1", "Id3").collect{|values| values[2]}
171
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :persistence => true, :flatten => true)
172
+ tsv = TSV.new(File.open(filename), :flat, :sep => /\s+/, :key => "OtherID", :persistence => false)
172
173
  assert(tsv["Id3"].include? "A")
173
174
  end
174
175
  end
@@ -181,7 +182,7 @@ row2 A B Id3
181
182
 
182
183
  TmpFile.with_file(content) do |filename|
183
184
  tsv = TSV.new(File.open(filename), :sep => /\s+/)
184
- index = tsv.index(:case_insensitive => true, :field => 2)
185
+ index = tsv.index(:case_insensitive => true, :target => 2)
185
186
  assert index["row1"].include? "Id1"
186
187
  end
187
188
  end
@@ -195,14 +196,14 @@ row2 A B Id3
195
196
  EOF
196
197
 
197
198
  TmpFile.with_file(content) do |filename|
198
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :persistence => false)
199
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID", :persistence => false)
199
200
  index = tsv.index(:case_insensitive => true)
200
201
  assert index["row1"].include? "Id1"
201
202
  assert_equal "OtherID", index.key_field
202
203
  end
203
204
 
204
205
  TmpFile.with_file(content) do |filename|
205
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID")
206
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID")
206
207
  index = tsv.index(:case_insensitive => true)
207
208
  assert index["row1"].include? "Id1"
208
209
  assert_equal "OtherID", index.key_field
@@ -217,7 +218,7 @@ row2 A a|B Id3
217
218
  EOF
218
219
 
219
220
  TmpFile.with_file(content) do |filename|
220
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :persistence => true)
221
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID", :persistence => true)
221
222
  index = tsv.index(:case_insensitive => false, :order => true)
222
223
  assert_equal "Id1", index['a'].first
223
224
  assert_equal "Id3", index['A'].first
@@ -225,7 +226,7 @@ row2 A a|B Id3
225
226
  end
226
227
 
227
228
  TmpFile.with_file(content) do |filename|
228
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID")
229
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID")
229
230
  index = tsv.index(:case_insensitive => true)
230
231
  assert index["row1"].include? "Id1"
231
232
  assert_equal "OtherID", index.key_field
@@ -240,7 +241,7 @@ row2 A B Id3
240
241
  EOF
241
242
 
242
243
  TmpFile.with_file(content) do |filename|
243
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :persistence => true)
244
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID", :persistence => true)
244
245
  index = tsv.index(:case_insensitive => true)
245
246
  assert index.values_at(*["row1"]).first.include? "Id1"
246
247
  end
@@ -254,7 +255,7 @@ row2 A B Id3
254
255
  EOF
255
256
 
256
257
  TmpFile.with_file(content) do |filename|
257
- tsv = TSV.new(File.open(filename), :sep => /\s+/, :native => "OtherID", :case_insensitive => true)
258
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :key => "OtherID", :case_insensitive => true)
258
259
  assert_equal "OtherID", tsv.key_field
259
260
  assert_equal ["Id", "ValueA", "ValueB"], tsv.fields
260
261
  assert_equal ["a", "aa", "aaa"], tsv["id1"][1]
@@ -273,16 +274,31 @@ row2 A B Id3
273
274
  require 'rbbt/sources/organism'
274
275
  filename = File.join(Organism.datadir('Sce'), 'identifiers')
275
276
  missing = true
276
- index = TSV.index(filename, :persistence => true, :native => "Associated Gene Name")
277
+ index = TSV.index(filename, :persistence => true, :key => "Associated Gene Name")
277
278
  assert index['1020'].include? 'CDK5'
278
- index = TSV.index(filename, :persistence => true, :native => "Associated Gene Name")
279
+ index = TSV.index(filename, :persistence => true, :key => "Associated Gene Name")
279
280
  assert index[[nil,'1020']].include? 'CDK5'
280
- index = TSV.index(filename, :persistence => true, :native => "Associated Gene Name")
281
+ index = TSV.index(filename, :persistence => true, :key => "Associated Gene Name")
281
282
  assert index[['MISSING','1020']].include? 'CDK5'
282
283
  rescue Exception
283
284
  end
284
285
  end
285
286
 
287
+ def test_grep
288
+ content =<<-EOF
289
+ #Id ValueA ValueB OtherID
290
+ row1 a|aa|aaa b Id1|Id2
291
+ row2 A B Id3
292
+ EOF
293
+
294
+ TmpFile.with_file(content) do |filename|
295
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :grep => %w(row1))
296
+ assert tsv.keys.include? "row1"
297
+ assert( ! tsv.keys.include?("row2"))
298
+ end
299
+ end
300
+
301
+
286
302
 
287
303
  def test_sort
288
304
  content =<<-EOF
@@ -316,6 +332,27 @@ row2 A B Id3
316
332
  end
317
333
  end
318
334
 
335
+ def test_to_s_ordered
336
+ content =<<-EOF
337
+ #Id ValueA ValueB OtherID
338
+ row1 a|aa|aaa b Id1|Id2
339
+ row2 A B Id3
340
+ EOF
341
+
342
+ content2 =<<-EOF
343
+ #Id ValueA ValueB OtherID
344
+ row2 A B Id3
345
+ row1 a|aa|aaa b Id1|Id2
346
+ EOF
347
+
348
+
349
+ TmpFile.with_file(content) do |filename|
350
+ tsv = TSV.new(File.open(filename), :sep => /\s+/)
351
+ assert_equal content, tsv.to_s(%w(row1 row2))
352
+ assert_not_equal content, tsv.to_s(%w(row2 row1))
353
+ assert_equal content2, tsv.to_s(%w(row2 row1))
354
+ end
355
+ end
319
356
 
320
357
  def test_smart_merge_single
321
358
  content1 =<<-EOF
@@ -332,11 +369,11 @@ C B Id3
332
369
 
333
370
  tsv1 = tsv2 = nil
334
371
  TmpFile.with_file(content1) do |filename|
335
- tsv1 = TSV.new(File.open(filename), :sep => /\s+/, :unique => true)
372
+ tsv1 = TSV.new(File.open(filename), :list, :sep => /\s+/)
336
373
  end
337
374
 
338
375
  TmpFile.with_file(content2) do |filename|
339
- tsv2 = TSV.new(File.open(filename), :sep => /\s+/, :unique => true)
376
+ tsv2 = TSV.new(File.open(filename), :list, :sep => /\s+/)
340
377
  end
341
378
 
342
379
  tsv1.smart_merge tsv2, "ValueB"
@@ -490,6 +527,7 @@ B BB
490
527
 
491
528
  assert_equal %w(a aa aaa aaaa), tsv1["row1"]["ValueA"]
492
529
  end
530
+
493
531
  def test_smart_merge_common_fields
494
532
  content1 =<<-EOF
495
533
  #Id ValueA ValueB
@@ -649,6 +687,20 @@ row3 a C Id4
649
687
  end
650
688
  end
651
689
 
690
+ def test_break_with_fix
691
+ content =<<-EOF
692
+ #Id ValueA ValueB OtherID
693
+ row1 a|aa|aaa b Id1|Id2
694
+ row2 A B Id3
695
+ row3 a C Id4
696
+ EOF
697
+
698
+ TmpFile.with_file(content) do |filename|
699
+ tsv = TSV.new(File.open(filename), :sep => /\s+/, :fix => proc{|l| l =~ /^row2/? nil : l})
700
+ assert_equal %w(row1), tsv.keys
701
+ end
702
+ end
703
+
652
704
  def test_open_stringoptions
653
705
  content =<<-EOF
654
706
  #Id ValueA ValueB OtherID
@@ -678,7 +730,7 @@ row3 a C Id4
678
730
 
679
731
  TmpFile.with_file(content) do |filename|
680
732
  tsv = TSV.new(filename + '#:sep=/\s+/')
681
- assert tsv.list
733
+ assert tsv.type == :double
682
734
 
683
735
  new = tsv.select %w(b Id4)
684
736
  assert_equal %w(row1 row3).sort, new.keys
@@ -692,8 +744,8 @@ row3 a C Id4
692
744
  new = tsv.select "ValueB" => /b|Id4/
693
745
  assert_equal %w(row1).sort, new.keys
694
746
 
695
- tsv = TSV.new(filename + '#:sep=/\s+/#:unique')
696
- assert ! tsv.list
747
+ tsv = TSV.new(filename + '#:sep=/\s+/#:type=:flat')
748
+ assert tsv.type != :double
697
749
 
698
750
  new = tsv.select %w(b Id4)
699
751
  end
@@ -727,15 +779,14 @@ row3 a C Id4
727
779
  tsv.add_field "Str length" do |k,v|
728
780
  (v.flatten * " ").length
729
781
  end
730
-
731
782
 
732
783
  assert tsv.fields.include?("Str length")
733
784
  end
734
785
 
735
786
  end
736
787
 
737
- def test_tsv_cache
738
- content =<<-EOF
788
+ def test_cast
789
+ content =<<-EOF
739
790
  #Id LetterValue#ValueA LetterValue#ValueB OtherID
740
791
  row1 a|aa|aaa b Id1|Id2
741
792
  row2 A B Id3
@@ -743,20 +794,14 @@ row3 a C Id4
743
794
  EOF
744
795
 
745
796
  TmpFile.with_file(content) do |filename|
746
- tsv = CacheHelper.tsv_cache('test_tsv_cache', filename) do
747
- TSV.new(filename + '#:sep=/\s+/')
748
- end
749
- tsv
750
-
751
- tsv1 = CacheHelper.tsv_cache('test_tsv_cache', filename) do
752
- assert false
753
- end
797
+ tsv = TSV.new(filename + '#:sep=/\s+/#:cast="to_sym"')
798
+ assert tsv['row1']["OtherID"].include?(:Id1)
799
+ assert ! tsv['row1']["OtherID"].include?("Id1")
754
800
 
755
- assert_equal tsv.fields, tsv1.fields
756
-
757
- CacheHelper.clean 'test_tsv_cache'
801
+ tsv = TSV.new(filename + '#:sep=/\s+/')
802
+ assert tsv['row1']["OtherID"].include?("Id1")
803
+ assert ! tsv['row1']["OtherID"].include?(:Id1)
758
804
  end
759
-
760
- end
805
+ end
761
806
  end
762
807
 
@@ -1,10 +1,13 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
2
+ require 'rbbt'
2
3
  require 'rbbt/util/tsv'
3
4
  require 'rbbt/util/tmpfile'
5
+ require 'rbbt/util/workflow'
4
6
 
5
- class TestTSV < Test::Unit::TestCase
7
+ class TestWorkflow < Test::Unit::TestCase
6
8
 
7
- def test_add_column
9
+ def test_true
10
+ assert true
8
11
  end
9
12
 
10
13
  end
data/test/test_helper.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  require 'test/unit'
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  $LOAD_PATH.unshift(File.dirname(__FILE__))
4
+ require 'rbbt/util/tmpfile'
5
+ require 'rbbt/util/log'
6
+ require 'fileutils'
4
7
 
5
8
  class Test::Unit::TestCase
9
+ include FileUtils
6
10
  def test_datafile(file)
7
11
  File.join(File.dirname(__FILE__), 'data', file)
8
12
  end
data/test/test_pkg.rb CHANGED
@@ -19,16 +19,6 @@ module B
19
19
  self.load_cfg(%w(datadir), {"datadir" => "/tmp/B"}.to_yaml)
20
20
  end
21
21
 
22
- module DA
23
- PKG=A
24
- extend DataModule
25
- end
26
-
27
- module DB
28
- PKG=B
29
- extend DataModule
30
- end
31
-
32
22
  class TestPKG < Test::Unit::TestCase
33
23
  def test_datadir
34
24
  assert_equal "/tmp/A", A.datadir
data/test/test_rbbt.rb CHANGED
@@ -5,54 +5,9 @@ require 'rbbt/util/open'
5
5
 
6
6
  class TestRbbt < Test::Unit::TestCase
7
7
  def test_url
8
- Rbbt.add_datafiles :test => ['test', 'http://google.com']
9
- assert(Misc.fixutf8(File.open(Rbbt.find_datafile('test')).read) =~ /html/)
10
- FileUtils.rm_rf File.dirname(Rbbt.find_datafile('test'))
11
- end
12
-
13
- def test_proc
14
- Rbbt.add_datafiles :test => ['test', proc{'test'}]
15
- assert(Open.read(Rbbt.find_datafile('test')) == 'test')
16
- FileUtils.rm_rf File.dirname(Rbbt.find_datafile('test'))
17
- end
18
-
19
- def test_Rakefile
20
- sharedir = PKGData.sharedir_for_file(__FILE__)
21
-
22
- FileUtils.rmtree File.join(Rbbt.datadir, 'rake')
23
- FileUtils.mkdir_p File.join(sharedir, 'install', 'rake')
24
- File.open(File.join(sharedir, 'install', 'rake', 'Rakefile'), 'w') do |f|
25
- f.puts "task :default do File.open('foo', 'w') do |f| f.puts 'bar' end end"
26
- end
27
-
28
- Rbbt.add_datafiles :rake => ['', 'rake']
29
-
30
- assert_equal 'bar', Open.read(File.join(Rbbt.datadir, 'rake', 'foo')).chomp
31
-
32
- FileUtils.rmtree File.join(sharedir, 'install', 'rake')
33
- FileUtils.rmtree File.join(Rbbt.datadir, 'rake')
34
- end
35
-
36
- def test_Rakefile_with_file
37
- sharedir = PKGData.sharedir_for_file(__FILE__)
38
-
39
- FileUtils.mkdir_p File.join(sharedir, 'install', 'rake')
40
- File.open(File.join(sharedir, 'install', 'rake', 'Rakefile'), 'w') do |f|
41
- f.puts "\
42
- task :default do File.open('foo', 'w') do |f| f.puts 'bar' end end
43
- task 'file1' do |t| File.open(t.name, 'w') do |f| f.puts 'file 1' end end
44
- "
45
- end
46
-
47
- Rbbt.add_datafiles 'rake/file1' => ['', 'rake']
48
-
49
- assert(! File.exists?(File.join(Rbbt.datadir, 'rake', 'foo')))
50
- assert(File.exists?(File.join(Rbbt.datadir, 'rake', 'file1')))
51
- assert_equal('file 1', Open.read(File.join(Rbbt.datadir, 'rake', 'file1')).chomp)
52
- assert_equal('file 1', Open.read(Rbbt.find_datafile('rake/file1')).chomp)
53
-
54
- FileUtils.rm_rf File.join(sharedir, 'install', 'rake')
55
- FileUtils.rm_rf File.join(Rbbt.datadir, 'rake')
8
+ Rbbt.claim :test_url, 'http://google.com'
9
+ assert Rbbt.files.test_url.read =~ /html/
10
+ FileUtils.rm Rbbt.files.test_url
56
11
  end
57
12
 
58
13
  def test_xclip