riel 1.0.0

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.
Files changed (48) hide show
  1. data/README +0 -0
  2. data/lib/riel/ansicolor.rb +93 -0
  3. data/lib/riel/array.rb +20 -0
  4. data/lib/riel/command.rb +30 -0
  5. data/lib/riel/date.rb +16 -0
  6. data/lib/riel/dir.rb +90 -0
  7. data/lib/riel/enumerable.rb +66 -0
  8. data/lib/riel/env.rb +49 -0
  9. data/lib/riel/file.rb +212 -0
  10. data/lib/riel/filetype.rb +189 -0
  11. data/lib/riel/hash.rb +12 -0
  12. data/lib/riel/io.rb +20 -0
  13. data/lib/riel/log.rb +548 -0
  14. data/lib/riel/matchdata.rb +13 -0
  15. data/lib/riel/optproc.rb +369 -0
  16. data/lib/riel/pathname.rb +16 -0
  17. data/lib/riel/rcfile.rb +35 -0
  18. data/lib/riel/regexp.rb +152 -0
  19. data/lib/riel/setdiff.rb +53 -0
  20. data/lib/riel/size_converter.rb +62 -0
  21. data/lib/riel/string.rb +81 -0
  22. data/lib/riel/tempfile.rb +28 -0
  23. data/lib/riel/text.rb +408 -0
  24. data/lib/riel/timer.rb +52 -0
  25. data/lib/riel.rb +13 -0
  26. data/test/riel/array_test.rb +22 -0
  27. data/test/riel/command_test.rb +28 -0
  28. data/test/riel/date_test.rb +17 -0
  29. data/test/riel/dir_test.rb +98 -0
  30. data/test/riel/enumerable_test.rb +27 -0
  31. data/test/riel/env_test.rb +52 -0
  32. data/test/riel/file_test.rb +242 -0
  33. data/test/riel/filetype_test.rb +32 -0
  34. data/test/riel/hash_test.rb +12 -0
  35. data/test/riel/io_test.rb +22 -0
  36. data/test/riel/log_test.rb +184 -0
  37. data/test/riel/matchdata_test.rb +15 -0
  38. data/test/riel/optproc_test.rb +233 -0
  39. data/test/riel/pathname_test.rb +36 -0
  40. data/test/riel/rcfile_test.rb +44 -0
  41. data/test/riel/regexp_test.rb +24 -0
  42. data/test/riel/setdiff_test.rb +26 -0
  43. data/test/riel/size_converter_test.rb +64 -0
  44. data/test/riel/string_test.rb +58 -0
  45. data/test/riel/tempfile_test.rb +16 -0
  46. data/test/riel/text_test.rb +102 -0
  47. data/test/riel/timer_test.rb +43 -0
  48. metadata +134 -0
@@ -0,0 +1,233 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'pathname'
5
+ require 'tempfile'
6
+ require 'rubyunit'
7
+ require 'riel/optproc'
8
+
9
+ class OptProcTestCase < RUNIT::TestCase
10
+
11
+ def setup
12
+ # ignore what they have in ENV[HOME]
13
+ ENV['HOME'] = '/this/should/not/exist'
14
+ end
15
+
16
+ def do_test(args, exp, &blk)
17
+ expected = DEFAULTS.merge(exp)
18
+
19
+ # ignore what they have in ENV[HOME]
20
+ ENV['HOME'] = '/this/should/not/exist'
21
+
22
+ origargs = args.dup
23
+
24
+ gopt = GlarkOptions.instance
25
+ gopt.run(args)
26
+
27
+ expected.sort { |a, b| a[0].to_s <=> b[0].to_s }.each do |opt, exval|
28
+ meth = gopt.method(opt)
29
+ val = meth.call
30
+ if val.kind_of? Array
31
+ assert_equal exval.length, val.length, "#{opt} => #{exval.class}.length #{exval.inspect}; #{val.class}.length #{val.inspect}; #{origargs.inspect}"
32
+ (0 ... exval.length).each do |idx|
33
+ assert_equal exval[idx], val[idx], "#{opt}[#{idx}] => #{exval.class}.length #{exval.inspect}; #{val.class}.length #{val.inspect}; #{origargs.inspect}"
34
+ end
35
+ else
36
+ assert_equal exval, val, "#{opt} => #{exval.class} #{exval.inspect}; #{val.class} #{val.inspect}; #{origargs.inspect}"
37
+ end
38
+ end
39
+
40
+ blk.call(gopt) if blk
41
+
42
+ gopt.reset
43
+ end
44
+
45
+ def do_match_tag_test(opt, exp, tag)
46
+ m = opt.match([ tag ])
47
+ match = nil
48
+ if exp.respond_to? :include?
49
+ match = exp.include? m
50
+ else
51
+ match = exp == m
52
+ end
53
+ assert match, "match_tag(#{tag}): expected: #{exp.inspect}; actual: #{m.inspect}"
54
+ end
55
+
56
+ def test_match_tag
57
+ @after = "nothing"
58
+ opt = OptProc::Option.new(:tags => %w{ --after-context -A }, :arg => [ :integer ])
59
+
60
+ %w{ --after-context --after-context=3 -A }.each do |tag|
61
+ do_match_tag_test(opt, 1.0, tag)
62
+ end
63
+
64
+ do_match_tag_test(opt, nil, '-b')
65
+
66
+ # we don't support case insensitivity (which is insensitive of us):
67
+ %w{ --After-Context --AFTER-CONTEXT=3 -a }.each do |tag|
68
+ do_match_tag_test(opt, nil, tag)
69
+ end
70
+
71
+ %w{ --after --after=3 }.each do |tag|
72
+ do_match_tag_test(opt, 0.07, tag)
73
+ end
74
+
75
+ %w{ --after-cont --after-cont=3 }.each do |tag|
76
+ do_match_tag_test(opt, 0.12, tag)
77
+ end
78
+
79
+ %w{ --aft --aft=3 }.each do |tag|
80
+ do_match_tag_test(opt, 0.05, tag)
81
+ end
82
+ end
83
+
84
+ def do_match_value_test(opt, exp, val)
85
+ m = opt.match_value(val)
86
+ assert !!m == !!exp, "match value #{val}; expected: #{exp.inspect}; actual: #{m.inspect}"
87
+ end
88
+
89
+ def test_value_none
90
+ opt = OptProc::Option.new(:arg => [ :none ])
91
+
92
+ {
93
+ '34' => nil,
94
+ '43' => nil,
95
+ '34.12' => nil
96
+ }.each do |val, exp|
97
+ do_match_value_test(opt, exp, val)
98
+ end
99
+ end
100
+
101
+ def test_value_integer
102
+ opt = OptProc::Option.new(:arg => [ :integer ])
103
+
104
+ {
105
+ '34' => true,
106
+ '43' => true,
107
+ '34.12' => nil,
108
+ '-34' => true,
109
+ '+34' => true,
110
+ }.each do |val, exp|
111
+ do_match_value_test(opt, exp, val)
112
+ end
113
+ end
114
+
115
+ def test_value_float
116
+ opt = OptProc::Option.new(:arg => [ :float ])
117
+
118
+ {
119
+ '34' => true,
120
+ '43' => true,
121
+ '34.12' => true,
122
+ '.12' => true,
123
+ '.' => false,
124
+ '12.' => false,
125
+ }.each do |val, exp|
126
+ do_match_value_test(opt, exp, val)
127
+ end
128
+ end
129
+
130
+ def test_value_string
131
+ opt = OptProc::Option.new(:arg => [ :string ])
132
+
133
+ {
134
+ '34' => true,
135
+ '43' => true,
136
+ '34.12' => true,
137
+ '.12' => true,
138
+ '.' => true,
139
+ '12.' => true,
140
+ 'hello' => true,
141
+ 'a b c' => true,
142
+ '' => true,
143
+ }.each do |val, exp|
144
+ [
145
+ '"' + val + '"',
146
+ "'" + val + "'",
147
+ val,
148
+ ].each do |qval|
149
+ do_match_value_test(opt, exp, qval)
150
+ end
151
+ end
152
+ end
153
+
154
+ def test_after_context_float
155
+ @after = nil
156
+ opt = OptProc::Option.new(:tags => %w{ --after-context -A },
157
+ :arg => [ :required, :float ],
158
+ :set => Proc.new { |val| @after = val })
159
+ [
160
+ %w{ --after-context 3 },
161
+ %w{ --after-context=3 },
162
+ %w{ -A 3 },
163
+ ].each do |args|
164
+ @after = nil
165
+
166
+ m = opt.match(args)
167
+ assert_equal 1.0, m, "args: #{args.inspect}"
168
+ # curr = args.shift
169
+ opt.set_value(args)
170
+ assert_equal 3.0, @after
171
+ end
172
+ end
173
+
174
+ def test_regexp_option
175
+ @after = nil
176
+ opt = OptProc::Option.new(:res => %r{ ^ - ([1-9]\d*) $ }x,
177
+ :tags => %w{ --context -C },
178
+ :arg => [ :optional, :integer ],
179
+ :set => Proc.new { |val| @ctx = val })
180
+ [
181
+ %w{ --context 3 },
182
+ %w{ --context=3 },
183
+ %w{ -C 3 },
184
+ ].each do |args|
185
+ @ctx = nil
186
+
187
+ m = opt.match(args)
188
+ assert_equal 1.0, m, "args: #{args.inspect}"
189
+ opt.set_value(args)
190
+ assert_equal 3, @ctx
191
+ end
192
+
193
+ vals = (1 .. 10).to_a | (1 .. 16).collect { |x| 2 ** x }
194
+ # vals = [ 4 ]
195
+ vals.each do |val|
196
+ args = [ '-' + val.to_s, 'foo' ]
197
+
198
+ @ctx = nil
199
+
200
+ m = opt.match(args)
201
+ assert_equal 1.0, m, "args: #{args.inspect}"
202
+ opt.set_value(args)
203
+ assert_equal val, @ctx
204
+ end
205
+ end
206
+
207
+ def test_value_regexp
208
+ @range_start = nil
209
+ opt = OptProc::Option.new(:tags => %w{ --after },
210
+ :arg => [ :required, :regexp, %r{ ^ (\d+%?) $ }x ],
211
+ :set => Proc.new { |md| @range_start = md[1] })
212
+
213
+ %w{ 5 5% 10 90% }.each do |rg|
214
+ [
215
+ [ '--after', rg ],
216
+ [ '--after=' + rg ]
217
+ ].each do |args|
218
+ @range_start = nil
219
+
220
+ m = opt.match(args)
221
+ assert_equal 1.0, m, "args: #{args.inspect}"
222
+ opt.set_value(args)
223
+ assert_equal rg, @range_start
224
+ end
225
+ end
226
+ end
227
+
228
+ end
229
+
230
+
231
+ if __FILE__ == $0
232
+ Log.level = Log::DEBUG
233
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubyunit'
5
+ require 'riel/pathname'
6
+
7
+
8
+ class PathnameTestCase < RUNIT::TestCase
9
+
10
+ def do_rootname_test(exp, path)
11
+ pn = Pathname.new(path)
12
+ assert_equals(exp, pn.rootname)
13
+ end
14
+
15
+ def test_rootname
16
+ [
17
+ "/this/is/a.test",
18
+ "/a.test",
19
+ "a.test",
20
+ "/this/is/a",
21
+ "/a",
22
+ "a"
23
+ ].each do |path|
24
+ do_rootname_test("a", path)
25
+ end
26
+
27
+ [
28
+ "/this/is/.atest",
29
+ "/.atest",
30
+ ".atest"
31
+ ].each do |path|
32
+ do_rootname_test(".atest", path)
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubyunit'
5
+ require 'riel/rcfile'
6
+ require 'riel/tempfile'
7
+
8
+ class RCFileTestCase < RUNIT::TestCase
9
+
10
+ def test
11
+ separators = %w{ = : }
12
+ leading_spaces = [ "", " ", " " ]
13
+ trailing_spaces = leading_spaces.dup
14
+ comments = [ "", "# a comment" ]
15
+
16
+ num = 0
17
+ tempfile = Tempfile.open("rcfile_test") do |tf|
18
+
19
+ tf.puts "# this is a comment"
20
+ tf.puts ""
21
+
22
+ separators.each do |sep|
23
+ leading_spaces.each do |lsp|
24
+ trailing_spaces.each do |tsp|
25
+ comments.each do |cmt|
26
+ tf.puts "#{lsp}name#{num}#{sep}value#{num}#{tsp}#{cmt}"
27
+ num += 1
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ rc = RCFile.new(tempfile)
35
+ (0 ... num).each do |i|
36
+ key = "name#{i}"
37
+ assert_not_nil rc.settings[i]
38
+ pair = rc.settings[i]
39
+
40
+ assert_equals [ "name#{i}", "value#{i}" ], rc.settings[i]
41
+ end
42
+ end
43
+
44
+ end
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubyunit'
5
+ require 'riel/regexp'
6
+
7
+ class RegexpTestCase < RUNIT::TestCase
8
+
9
+ def test_unixre_to_string
10
+ assert_equal("a[b-z]", Regexp.unixre_to_string("a[b-z]"))
11
+ assert_equal("ab\\.z", Regexp.unixre_to_string("ab.z"))
12
+ assert_equal("ab\\.z.*", Regexp.unixre_to_string("ab.z*"))
13
+ assert_equal("a.c", Regexp.unixre_to_string("a?c"))
14
+ assert_equal("ab\\$", Regexp.unixre_to_string("ab$"))
15
+ assert_equal("a\\/c", Regexp.unixre_to_string("a/c"))
16
+ assert_equal("a\\(bc\\)", Regexp.unixre_to_string("a(bc)"))
17
+ end
18
+
19
+ def test_negated
20
+ assert(NegatedRegexp.new("a[b-z]").match("aa"))
21
+ assert(NegatedRegexp.new(".+").match(""))
22
+ end
23
+
24
+ end
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubyunit'
5
+ require 'riel/setdiff'
6
+
7
+ class SetDiffTestCase < RUNIT::TestCase
8
+
9
+ def do_test(a, b, expected)
10
+ sd = SetDiff.new(a, b)
11
+
12
+ assert_equal(expected, sd.diff_type)
13
+ end
14
+
15
+ def test_all
16
+ do_test(%w{ one two three }, %w{ two one three }, :identical)
17
+ do_test(%w{ one two }, %w{ two one three }, :b_contains_a)
18
+ do_test(%w{ one two three }, %w{ two }, :a_contains_b)
19
+ do_test(%w{ one two three }, %w{ four five six }, :no_common)
20
+ do_test(%w{ one two three }, %w{ }, :no_common)
21
+ do_test(%w{ }, %w{ one two three }, :no_common)
22
+ do_test(%w{ }, %w{ }, :no_common)
23
+ do_test(%w{ one two three}, %w{ two three four }, :common)
24
+ end
25
+
26
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubyunit'
5
+ require 'riel/size_converter'
6
+
7
+ class SizeConverterTestCase < RUNIT::TestCase
8
+
9
+ SIZES = [
10
+ # 0123456789012345 0123456789012345 0123456789012345 0123456789012345 0123456789012345 0123456789012345 0123456789012345
11
+ # base10.0 base10.1 base10.2 si.0 si.1 si.2 num ]
12
+ [ "1", "1.0", "1.00", "1", "1.0", "1.00", 1 ],
13
+
14
+ [ "1K", "1.0K", "1.02K", "1KiB", "1.0KiB", "1.00KiB", 1024 ],
15
+ [ "1K", "1.0K", "1.00K", "1000", "1000.0", "1000.00", 1000 ],
16
+ [ "2K", "2.0K", "2.05K", "2KiB", "2.0KiB", "2.00KiB", 2048 ],
17
+ [ "2K", "2.0K", "2.00K", "2KiB", "2.0KiB", "1.95KiB", 2000 ],
18
+
19
+ [ "1M", "1.0M", "1.00M", "977KiB", "976.6KiB", "976.56KiB", 10 ** 6 ],
20
+ [ "2M", "2.0M", "2.00M", "2MiB", "1.9MiB", "1.91MiB", 2 * 10 ** 6 ],
21
+ [ "1M", "1.0M", "1.05M", "1MiB", "1.0MiB", "1.00MiB", 2 ** 20 ],
22
+ [ "2M", "2.1M", "2.10M", "2MiB", "2.0MiB", "2.00MiB", 2 * 2 ** 20 ],
23
+
24
+ [ "1G", "1.0G", "1.00G", "954MiB", "953.7MiB", "953.67MiB", 10 ** 9 ],
25
+ [ "2G", "2.0G", "2.00G", "2GiB", "1.9GiB", "1.86GiB", 2 * 10 ** 9 ],
26
+
27
+ [ "1G", "1.1G", "1.07G", "1GiB", "1.0GiB", "1.00GiB", 2 ** 30 ],
28
+ [ "2G", "2.1G", "2.15G", "2GiB", "2.0GiB", "2.00GiB", 2 * 2 ** 30 ],
29
+
30
+ [ "1T", "1.0T", "1.00T", "931GiB", "931.3GiB", "931.32GiB", 10 ** 12 ],
31
+ [ "2T", "2.0T", "2.00T", "2TiB", "1.8TiB", "1.82TiB", 2 * 10 ** 12 ],
32
+
33
+ [ "1T", "1.1T", "1.10T", "1TiB", "1.0TiB", "1.00TiB", 2 ** 40 ],
34
+ [ "2T", "2.2T", "2.20T", "2TiB", "2.0TiB", "2.00TiB", 2 * 2 ** 40 ],
35
+ ]
36
+
37
+ def assert_conversion(cls, data, offset, didx, sidx, dec_places = nil)
38
+ numstr = data[-1]
39
+ conv = dec_places.nil? ? cls.convert(numstr) : cls.convert(numstr, dec_places)
40
+ assert_equals data[offset + didx], conv, "size index: #{sidx}; data index: #{didx}; offset: #{offset}; decimal_places: #{dec_places}"
41
+ end
42
+
43
+ def do_test(cls, offset)
44
+ SIZES.each_with_index do |data, sidx|
45
+ assert_conversion(cls, data, offset, 1, sidx)
46
+ (0 .. 2).each do |dec_places|
47
+ assert_conversion(cls, data, offset, dec_places, sidx, dec_places)
48
+ end
49
+ end
50
+ end
51
+
52
+ def test_default
53
+ do_test(SizeConverter, 0)
54
+ end
55
+
56
+ def test_human
57
+ do_test(SizeConverter::Human, 0)
58
+ end
59
+
60
+ def test_si
61
+ do_test(SizeConverter::SI, 3)
62
+ end
63
+
64
+ end
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'pathname'
5
+ require 'rubyunit'
6
+ require 'riel/string'
7
+
8
+ class StringToRangeTestCase < RUNIT::TestCase
9
+
10
+ def do_string_to_range_test(exp, str, args = Hash.new)
11
+ String.to_ranges(str, args).each_with_index do |rg, idx|
12
+ assert_equal exp[idx], rg
13
+ end
14
+ end
15
+
16
+ def test_string_to_range
17
+ do_string_to_range_test([ ], "")
18
+ do_string_to_range_test([ 1 .. 1 ], "1")
19
+ do_string_to_range_test([ 1 .. 2 ], "1..2")
20
+ do_string_to_range_test([ 1 .. 1, 2 .. 2 ], "1,2")
21
+ do_string_to_range_test([ 1 .. 2 ], "1,2", :collapse => true)
22
+
23
+ do_string_to_range_test([ 1 .. 4 ], "1-4")
24
+ do_string_to_range_test([ -String::Infinity .. 4 ], "-4")
25
+ do_string_to_range_test([ 4 .. String::Infinity ], "4-")
26
+
27
+ do_string_to_range_test([ -8 .. 4 ], "-4", :min => -8)
28
+ do_string_to_range_test([ 0 .. 4 ], "-4", :min => 0)
29
+ do_string_to_range_test([ 1 .. 8 ], "1-", :min => 0, :max => 8)
30
+ do_string_to_range_test([ 1 .. 5 ], "1-4,5", :collapse => true)
31
+ do_string_to_range_test([ 1 .. 4, 5 .. 5 ], "1-4,5", :collapse => false)
32
+ do_string_to_range_test([ 1 .. 4, 5 .. 5 ], "1-4,5")
33
+ do_string_to_range_test([ 1 .. 3, 5 .. 8 ], "1,2,3,5-", :min => 0, :max => 8, :collapse => true)
34
+ do_string_to_range_test([ 1 .. 1, 2 .. 2, 3 .. 3, 5 .. 8 ], "1,2,3,5-", :min => 0, :max => 8)
35
+ do_string_to_range_test([ 1 .. 3, 5 .. 6 ], "1-3,5,6", :min => 0, :max => 8, :collapse => true)
36
+ do_string_to_range_test([ 1 .. 3, 5 .. 5, 6 .. 6 ], "1-3,5,6", :min => 0, :max => 8)
37
+ do_string_to_range_test([ 1 .. 3, 5 .. 6, 10 .. 12 ], "1-3,5-6,10,11,12,", :collapse => true)
38
+ do_string_to_range_test([ 1 .. 3, 5 .. 6, 10 .. 10, 11 .. 11, 12 .. 12 ], "1-3,5-6,10,11,12,")
39
+
40
+ do_string_to_range_test([ ], "abc")
41
+ end
42
+
43
+ def test_num
44
+ assert_equals(1, "1".num)
45
+ assert_equals(nil, "one".num)
46
+ end
47
+
48
+ def test_minus
49
+ assert_equals("foo", "food" - "d")
50
+ assert_equals("fd", "food" - %r{o+})
51
+ end
52
+
53
+ def test_highlight
54
+ assert_equals("...\e[34mthis\e[0m... is blue", "...this... is blue".highlight(%r{this}, "blue"))
55
+ assert_equals("...\e[34m\e[42mthis\e[0m... is blue", "...this... is blue".highlight(%r{this}, "blue on green"))
56
+ end
57
+
58
+ end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubyunit'
5
+ require 'riel/tempfile'
6
+
7
+ class TempfileTestCase < RUNIT::TestCase
8
+
9
+ def test
10
+ tfname = Tempfile.open("tempfile_test") do |tf|
11
+ end
12
+
13
+ assert_not_nil tfname
14
+ end
15
+
16
+ end
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubyunit'
5
+ require 'riel/text'
6
+
7
+ class TextTestCase < RUNIT::TestCase
8
+
9
+ def do_ansi_test(str, input, *chars)
10
+ escape_sequence = chars.collect { |ch| "\e[#{ch}m" }.join("")
11
+ assert_equals "#{escape_sequence}#{str}\e[0m", input
12
+ end
13
+
14
+ def test_ansi_highlight
15
+ String.highlighter = "ANSI"
16
+
17
+ str = "precision"
18
+
19
+ do_ansi_test(str, str.none, 0)
20
+ do_ansi_test(str, str.bold, 1)
21
+ do_ansi_test(str, str.underline, 4)
22
+ do_ansi_test(str, str.underscore, 4)
23
+ do_ansi_test(str, str.blink, 5) # every geocities site circa 1998
24
+ do_ansi_test(str, str.negative, 7)
25
+ do_ansi_test(str, str.concealed, 8)
26
+ do_ansi_test(str, str.black, 30)
27
+ do_ansi_test(str, str.red, 31)
28
+ do_ansi_test(str, str.green, 32)
29
+ do_ansi_test(str, str.yellow, 33)
30
+ do_ansi_test(str, str.blue, 34)
31
+ do_ansi_test(str, str.magenta, 35)
32
+ do_ansi_test(str, str.cyan, 36)
33
+ do_ansi_test(str, str.white, 37)
34
+ do_ansi_test(str, str.on_black, 40)
35
+ do_ansi_test(str, str.on_red, 41)
36
+ do_ansi_test(str, str.on_green, 42)
37
+ do_ansi_test(str, str.on_yellow, 43)
38
+ do_ansi_test(str, str.on_blue, 44)
39
+ do_ansi_test(str, str.on_magenta, 45)
40
+ do_ansi_test(str, str.on_cyan, 46)
41
+ do_ansi_test(str, str.on_white, 47)
42
+ do_ansi_test(str, str.none_on_white, 0, 47)
43
+ do_ansi_test(str, str.none_on_black, 0, 40)
44
+ do_ansi_test(str, str.none_on_blue, 0, 44)
45
+ do_ansi_test(str, str.red_on_white, 31, 47)
46
+ do_ansi_test(str, str.bold_red_on_white, 1, 31, 47)
47
+
48
+ end
49
+
50
+ def do_html_test(expected, input)
51
+ assert_equals expected, input
52
+ end
53
+
54
+ def test_html_highlight
55
+ String.highlighter = "HTML"
56
+
57
+ str = "precision"
58
+
59
+ do_html_test(str, str.none)
60
+ do_html_test("<b>" + str + "</b>", str.bold)
61
+
62
+ [ str.underline, str.underscore ].each do |input|
63
+ do_html_test("<u>" + str + "</u>", input)
64
+ end
65
+
66
+ do_html_test("<blink>" + str + "</blink>", str.blink)
67
+ do_html_test("<span style=\"color: white; background-color: black\">" + str + "</span>", str.negative)
68
+ do_html_test("<!-- " + str + " -->", str.concealed)
69
+ do_html_test("<span style=\"color: black\">" + str + "</span>", str.black)
70
+ do_html_test("<span style=\"color: red\">" + str + "</span>", str.red)
71
+ do_html_test("<span style=\"color: green\">" + str + "</span>", str.green)
72
+ do_html_test("<span style=\"color: yellow\">" + str + "</span>", str.yellow)
73
+ do_html_test("<span style=\"color: blue\">" + str + "</span>", str.blue)
74
+ do_html_test("<span style=\"color: #FF00FF\">" + str + "</span>", str.magenta)
75
+ do_html_test("<span style=\"color: #00FFFF\">" + str + "</span>", str.cyan)
76
+ do_html_test("<span style=\"color: white\">" + str + "</span>", str.white)
77
+ do_html_test("<span style=\"background-color: black\">" + str + "</span>", str.on_black)
78
+ do_html_test("<span style=\"background-color: red\">" + str + "</span>", str.on_red)
79
+ do_html_test("<span style=\"background-color: green\">" + str + "</span>", str.on_green)
80
+ do_html_test("<span style=\"background-color: yellow\">" + str + "</span>", str.on_yellow)
81
+ do_html_test("<span style=\"background-color: blue\">" + str + "</span>", str.on_blue)
82
+ do_html_test("<span style=\"background-color: #FF00FF\">" + str + "</span>", str.on_magenta)
83
+ do_html_test("<span style=\"background-color: #00FFFF\">" + str + "</span>", str.on_cyan)
84
+ do_html_test("<span style=\"background-color: white\">" + str + "</span>", str.on_white)
85
+ do_html_test("<span style=\"background-color: white\">" + str + "</span>", str.none_on_white)
86
+ do_html_test("<span style=\"background-color: black\">" + str + "</span>", str.none_on_black)
87
+ do_html_test("<span style=\"background-color: blue\">" + str + "</span>", str.none_on_blue)
88
+ do_html_test("<span style=\"color: red\">" + "<span style=\"background-color: white\">" + str + "</span>" + "</span>", str.red_on_white)
89
+ do_html_test("<b><span style=\"color: red\">" + "<span style=\"background-color: white\">" + str + "</span>" + "</span></b>", str.bold_red_on_white)
90
+
91
+ end
92
+
93
+ def test_string_reverse
94
+ String.highlighter = "HTML"
95
+
96
+ str = "precision"
97
+
98
+ # this tests that string.reverse does not mean ANSI reverse
99
+ assert_equal("noisicerp", "precision".reverse)
100
+ end
101
+
102
+ end
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubyunit'
5
+ require 'riel/timer'
6
+ require 'stringio'
7
+
8
+ class TimerTestCase < RUNIT::TestCase
9
+
10
+ TIMER_STRING = "sleep for a second"
11
+
12
+ def do_assertions(io)
13
+ assert_not_nil io
14
+ str = io.string
15
+ assert_not_nil str
16
+
17
+ assert str.index(TIMER_STRING + " start time:")
18
+ assert str.index(TIMER_STRING + " end time:")
19
+ assert str.index(TIMER_STRING + " elapsed :")
20
+ end
21
+
22
+ def test_to_stdout
23
+ orig_out = $stdout
24
+ $stdout = StringIO.new
25
+ timer = Timer.new(TIMER_STRING) do
26
+ sleep(0.1)
27
+ end
28
+
29
+ do_assertions($stdout)
30
+
31
+ $stdout = orig_out
32
+ end
33
+
34
+ def test_to_io
35
+ stringio = StringIO.new
36
+ timer = Timer.new("sleep for a second", :io => stringio) do
37
+ sleep(0.1)
38
+ end
39
+
40
+ do_assertions(stringio)
41
+ end
42
+
43
+ end