facets 2.0.2 → 2.0.3
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.
- data/AUTHORS +3 -3
- data/README +6 -7
- data/lib/core/facets.rb +1 -46
- data/lib/core/facets/array.rb +3 -0
- data/lib/core/facets/array/indexable.rb +6 -1
- data/lib/core/facets/array/only.rb +20 -0
- data/lib/core/facets/dir/multiglob.rb +12 -1
- data/lib/core/facets/enumerable.rb +0 -1
- data/lib/core/facets/enumerable/collect.rb +1 -0
- data/lib/core/facets/enumerable/combination.rb +44 -90
- data/lib/core/facets/facets.rb +46 -0
- data/lib/core/facets/file/write.rb +46 -58
- data/lib/core/facets/hash.rb +2 -0
- data/lib/core/facets/hash/select.rb +14 -0
- data/lib/core/facets/integer/multiples.rb +12 -55
- data/lib/core/facets/kernel/val.rb +14 -0
- data/lib/core/facets/module/alias.rb +28 -9
- data/lib/core/facets/module/methods.rb +18 -0
- data/lib/core/facets/module/traits.rb +65 -70
- data/lib/core/facets/proc/compose.rb +15 -12
- data/lib/core/facets/stackable.rb +3 -2
- data/lib/core/facets/string/format.rb +4 -6
- data/lib/core/facets/string/tabs.rb +34 -0
- data/lib/core/facets/symbol.rb +1 -0
- data/lib/core/facets/symbol/succ.rb +1 -42
- data/lib/core/facets/symbol/to_proc.rb +34 -0
- data/lib/methods/facets/array/contains.rb +1 -0
- data/lib/methods/facets/facets/require_core.rb +1 -0
- data/lib/methods/facets/file/writelines.rb +1 -0
- data/lib/methods/facets/io/writelines.rb +1 -0
- data/lib/methods/facets/kernel/not_nil.rb +1 -0
- data/lib/methods/facets/module/conflict.rb +1 -0
- data/lib/methods/facets/module/instance_method_defined.rb +1 -0
- data/lib/methods/facets/module/module_method_defined.rb +1 -0
- data/lib/methods/facets/module/private_conflict.rb +1 -0
- data/lib/methods/facets/module/protected_conflict.rb +1 -0
- data/lib/methods/facets/module/public_conflict.rb +1 -0
- data/lib/methods/facets/string/expand_tabs.rb +1 -0
- data/lib/methods/facets/string/outdent.rb +1 -0
- data/lib/methods/facets/string/taballto.rb +1 -0
- data/lib/more/facets/arguments.rb +1 -1
- data/lib/more/facets/association.rb +0 -46
- data/lib/more/facets/autoarray.rb +0 -28
- data/lib/more/facets/command.rb +341 -8
- data/lib/more/facets/dictionary.rb +25 -131
- data/lib/more/facets/downloader.rb +1 -1
- data/lib/more/facets/infinity.rb +3 -3
- data/lib/more/facets/interval.rb +0 -161
- data/lib/more/facets/multiton.rb +16 -12
- data/lib/more/facets/namespace.rb +1 -1
- data/lib/more/facets/ostruct.rb +46 -10
- data/lib/more/facets/overload.rb +0 -51
- data/lib/more/facets/paramix.rb +0 -97
- data/lib/more/facets/pp_s.rb +30 -0
- data/lib/more/facets/progressbar.rb +18 -10
- data/lib/more/facets/prototype.rb +1 -40
- data/lib/more/facets/random.rb +1 -0
- data/lib/more/facets/rbsystem.rb +4 -1
- data/lib/more/facets/snapshot.rb +8 -1
- data/lib/more/facets/stylize.rb +2 -0
- data/meta/{project.yaml → facets-2.0.3.roll} +22 -14
- data/meta/manifest.txt +38 -8
- data/task/{config.yaml → config/general.yaml} +7 -2
- data/task/{rdoc.yaml → config/rdoc.yaml} +1 -1
- data/task/crosstest +309 -0
- data/task/isotest +293 -0
- data/task/loadtest +28 -0
- data/task/methods +4 -4
- data/task/prepare +5 -0
- data/task/publish +2 -2
- data/task/rdoc +1 -0
- data/task/syntax +29 -0
- data/task/test +0 -1
- data/task/testeach +42 -0
- data/task/testpairs +50 -0
- data/test/lib/rq.rb +15 -0
- data/test/unit/array/test_merge.rb +21 -43
- data/test/unit/array/test_only.rb +21 -0
- data/test/unit/enumerable/test_collect.rb +1 -21
- data/test/unit/enumerable/test_combination.rb +50 -44
- data/test/unit/file/test_topath.rb +48 -57
- data/test/unit/file/test_write.rb +82 -0
- data/test/unit/hash/test_select.rb +43 -0
- data/test/unit/integer/test_multiples.rb +28 -32
- data/test/unit/kernel/test_report.rb +9 -12
- data/test/unit/kernel/test_val.rb +50 -45
- data/test/unit/module/test_include.rb +56 -57
- data/test/unit/module/test_name.rb +42 -55
- data/test/unit/module/test_traits.rb +46 -47
- data/test/unit/string/test_filter.rb +19 -34
- data/test/unit/string/test_format.rb +87 -96
- data/test/unit/string/test_regesc.rb +18 -26
- data/test/unit/string/test_tabs.rb +226 -119
- data/test/unit/symbol/test_succ.rb +14 -23
- data/test/unit/symbol/test_to_proc.rb +41 -0
- data/test/unit/test_association.rb +38 -47
- data/test/unit/test_attributes.rb +24 -33
- data/test/unit/test_autoarray.rb +23 -32
- data/test/unit/test_command.rb +26 -0
- data/test/unit/test_dictionary.rb +123 -117
- data/test/unit/test_infinity.rb +41 -47
- data/test/unit/test_inheritor.rb +133 -142
- data/test/unit/test_interval.rb +129 -93
- data/test/unit/test_ostruct.rb +148 -101
- data/test/unit/test_overload.rb +8 -15
- data/test/unit/test_paramix.rb +67 -73
- data/test/unit/test_pp_s.rb +23 -0
- data/test/unit/test_prototype.rb +28 -38
- metadata +47 -11
- data/lib/core/facets/enumerable/instance_map.rb +0 -0
- data/lib/more/facets/command_options.rb +0 -328
- data/meta/version.txt +0 -1
- data/task/load +0 -39
- data/test/unit/test_command_options.rb +0 -29
@@ -1,52 +1,51 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# for lib/facets/module/traits.rb
|
8
|
-
#
|
9
|
-
# Extracted Mon Sep 03 16:23:07 -0700 2007
|
10
|
-
# w/ Test Extraction Ratchet
|
11
|
-
#
|
12
|
-
|
13
|
-
require 'facets/module/traits.rb'
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
require 'test/unit'
|
18
|
-
|
19
|
-
class TestModuleTraits < Test::Unit::TestCase
|
20
|
-
|
21
|
-
module A
|
22
|
-
def x; "x"; end
|
23
|
-
def z; "zA"; end
|
24
|
-
end
|
25
|
-
|
26
|
-
module B
|
27
|
-
def y; "y"; end
|
28
|
-
def z; "zB"; end
|
29
|
-
end
|
30
|
-
|
31
|
-
Q = A + B
|
32
|
-
R = A - B
|
33
|
-
|
34
|
-
def test_add
|
35
|
-
assert(Q)
|
36
|
-
Q.extend Q
|
37
|
-
assert_equal( "x", Q.x )
|
38
|
-
assert_equal( "y", Q.y )
|
39
|
-
assert_equal( "zB", Q.z )
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_minus
|
43
|
-
assert(R)
|
44
|
-
R.extend R
|
45
|
-
assert_equal( "x", R.x )
|
46
|
-
assert_raises( NoMethodError ){ R.z }
|
47
|
-
end
|
1
|
+
# _____ _
|
2
|
+
# |_ _|__ ___| |_
|
3
|
+
# | |/ _ \/ __| __|
|
4
|
+
# | | __/\__ \ |
|
5
|
+
# |_|\___||___/\__|
|
6
|
+
#
|
48
7
|
|
8
|
+
require 'facets/module/traits.rb'
|
9
|
+
|
10
|
+
require 'test/unit'
|
11
|
+
|
12
|
+
class TestModuleTraits < Test::Unit::TestCase
|
13
|
+
|
14
|
+
module A
|
15
|
+
def x; "x"; end
|
16
|
+
def z; "zA"; end
|
17
|
+
end
|
18
|
+
|
19
|
+
module B
|
20
|
+
def y; "y"; end
|
21
|
+
def z; "zB"; end
|
49
22
|
end
|
50
23
|
|
24
|
+
Q = A + B
|
25
|
+
R = A - B
|
26
|
+
Z = A * { :x => :y }
|
51
27
|
|
28
|
+
def test_add
|
29
|
+
assert(Q)
|
30
|
+
Q.extend Q
|
31
|
+
assert_equal( "x", Q.x )
|
32
|
+
assert_equal( "y", Q.y )
|
33
|
+
assert_equal( "zB", Q.z )
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_minus
|
37
|
+
assert(R)
|
38
|
+
R.extend R
|
39
|
+
assert_equal( "x", R.x )
|
40
|
+
assert_raises(NoMethodError){ R.z }
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_rename
|
44
|
+
assert(Z)
|
45
|
+
Z.extend Z
|
46
|
+
assert_raise(NoMethodError){ Z.x }
|
47
|
+
assert_equal( "x", Z.y )
|
48
|
+
assert_equal( "zA", Z.z )
|
49
|
+
end
|
52
50
|
|
51
|
+
end
|
@@ -1,42 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# for lib/facets/string/filter.rb
|
8
|
-
#
|
9
|
-
# Extracted Mon Sep 03 16:23:07 -0700 2007
|
10
|
-
# w/ Test Extraction Ratchet
|
11
|
-
#
|
1
|
+
# _____ _
|
2
|
+
# |_ _|__ ___| |_
|
3
|
+
# | |/ _ \/ __| __|
|
4
|
+
# | | __/\__ \ |
|
5
|
+
# |_|\___||___/\__|
|
6
|
+
#
|
12
7
|
|
13
|
-
|
8
|
+
require 'facets/string/filter.rb'
|
14
9
|
|
10
|
+
require 'test/unit'
|
15
11
|
|
12
|
+
class TestStringFilter < Test::Unit::TestCase
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
def test_regesc
|
22
|
-
a = "?"
|
23
|
-
b = /#{a.regesc}/
|
24
|
-
assert( b =~ "?" )
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_word_filter
|
28
|
-
s = "this is a test"
|
29
|
-
n = s.word_filter{ |w| "#{w}1" }
|
30
|
-
assert_equal( 'this1 is1 a1 test1', n )
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_word_filter!
|
34
|
-
s = "this is a test"
|
35
|
-
s.word_filter!{ |w| "#{w}1" }
|
36
|
-
assert_equal( 'this1 is1 a1 test1', s )
|
37
|
-
end
|
38
|
-
|
14
|
+
def test_word_filter
|
15
|
+
s = "this is a test"
|
16
|
+
n = s.word_filter{ |w| "#{w}1" }
|
17
|
+
assert_equal( 'this1 is1 a1 test1', n )
|
39
18
|
end
|
40
19
|
|
20
|
+
def test_word_filter!
|
21
|
+
s = "this is a test"
|
22
|
+
s.word_filter!{ |w| "#{w}1" }
|
23
|
+
assert_equal( 'this1 is1 a1 test1', s )
|
24
|
+
end
|
41
25
|
|
26
|
+
end
|
42
27
|
|
@@ -1,96 +1,87 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
assert_equal [ 'extended', 'split' ], 'extended split'.cleave
|
89
|
-
assert_equal [ 'abc defghi', 'jklm nop' ],
|
90
|
-
'abc defghi jklm nop'.cleave
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
|
96
|
-
|
1
|
+
# _____ _
|
2
|
+
# |_ _|__ ___| |_
|
3
|
+
# | |/ _ \/ __| __|
|
4
|
+
# | | __/\__ \ |
|
5
|
+
# |_|\___||___/\__|
|
6
|
+
#
|
7
|
+
# for facets/string/format.rb
|
8
|
+
|
9
|
+
require 'facets/string/format.rb'
|
10
|
+
|
11
|
+
require 'test/unit'
|
12
|
+
|
13
|
+
class TestStringFormat < Test::Unit::TestCase
|
14
|
+
|
15
|
+
def test_fold_1
|
16
|
+
s = "This is\na test.\n\nIt clumps\nlines of text."
|
17
|
+
o = "This is a test.\n\nIt clumps lines of text."
|
18
|
+
assert_equal( o, s.fold )
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_fold_2
|
22
|
+
s = "This is\na test.\n\n This is pre.\n Leave alone.\n\nIt clumps\nlines of text."
|
23
|
+
o = "This is a test.\n\n This is pre.\n Leave alone.\n\nIt clumps lines of text."
|
24
|
+
assert_equal( o, s.fold(true) )
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_line_wrap
|
28
|
+
assert_equal "abc\n123\n", "abc123".line_wrap(3)
|
29
|
+
assert_equal "abcd\n123\n", "abcd123".line_wrap(4)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_word_wrap
|
33
|
+
assert_equal "abcde\n12345\nxyzwu\n", "abcde 12345 xyzwu".word_wrap(5)
|
34
|
+
assert_equal "abcd\n1234\nxyzw\n", "abcd 1234 xyzw".word_wrap(4)
|
35
|
+
assert_equal "abc\n123\n", "abc 123".word_wrap(4)
|
36
|
+
assert_equal "abc \n123\n", "abc 123".word_wrap(4)
|
37
|
+
assert_equal "abc \n123\n", "abc 123".word_wrap(4)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_word_wrap!
|
41
|
+
w = "abcde 12345 xyzwu" ; w.word_wrap!(5)
|
42
|
+
assert_equal("abcde\n12345\nxyzwu\n", w)
|
43
|
+
w = "abcd 1234 xyzw" ; w.word_wrap!(4)
|
44
|
+
assert_equal("abcd\n1234\nxyzw\n", w)
|
45
|
+
w = "abc 123" ; w.word_wrap!(4)
|
46
|
+
assert_equal "abc\n123\n", w
|
47
|
+
w = "abc 123" ; w.word_wrap!(4)
|
48
|
+
assert_equal("abc \n123\n", w)
|
49
|
+
w = "abc 123" ; w.word_wrap!(4)
|
50
|
+
assert_equal("abc \n123\n", w)
|
51
|
+
end
|
52
|
+
|
53
|
+
# def test_word_wrap
|
54
|
+
# assert_equal "abcde-\n12345-\nxyzwu\n", "abcde12345xyzwu".word_wrap(6,2)
|
55
|
+
# assert_equal "abcd-\n1234-\nxyzw\n", "abcd1234xyzw".word_wrap(5,2)
|
56
|
+
# assert_equal "abc \n123\n", "abc 123".word_wrap(4,2)
|
57
|
+
# assert_equal "abc \n123\n", "abc 123".word_wrap(4,2)
|
58
|
+
# assert_equal "abc \n123\n", "abc 123".word_wrap(4,2)
|
59
|
+
# end
|
60
|
+
|
61
|
+
def test_cleave_nospaces
|
62
|
+
assert_equal [ 'whole', '' ], 'whole'.cleave
|
63
|
+
assert_equal [ 'Supercalifragilisticexpialidocious', '' ],
|
64
|
+
'Supercalifragilisticexpialidocious'.cleave
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_cleave_exact_middle
|
68
|
+
assert_equal [ 'fancy', 'split' ], 'fancy split'.cleave
|
69
|
+
assert_equal [ 'All good Rubyists', 'know how to party' ],
|
70
|
+
'All good Rubyists know how to party'.cleave
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_cleave_closer_to_start
|
74
|
+
assert_equal [ 'short', 'splitter' ], 'short splitter'.cleave
|
75
|
+
assert_equal [ 'Four score and', 'seven years ago...' ],
|
76
|
+
'Four score and seven years ago...'.cleave
|
77
|
+
assert_equal [ 'abc def', 'ghijklm nop' ],
|
78
|
+
'abc def ghijklm nop'.cleave
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_cleave_closer_to_end
|
82
|
+
assert_equal [ 'extended', 'split' ], 'extended split'.cleave
|
83
|
+
assert_equal [ 'abc defghi', 'jklm nop' ],
|
84
|
+
'abc defghi jklm nop'.cleave
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
@@ -1,35 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# for lib/facets/string/regesc.rb
|
8
|
-
#
|
9
|
-
# Extracted Mon Sep 03 16:23:07 -0700 2007
|
10
|
-
# w/ Test Extraction Ratchet
|
11
|
-
#
|
1
|
+
# _____ _
|
2
|
+
# |_ _|__ ___| |_
|
3
|
+
# | |/ _ \/ __| __|
|
4
|
+
# | | __/\__ \ |
|
5
|
+
# |_|\___||___/\__|
|
6
|
+
#
|
12
7
|
|
13
|
-
|
8
|
+
require 'facets/string/regesc.rb'
|
14
9
|
|
10
|
+
require 'test/unit'
|
15
11
|
|
12
|
+
class TestStringRegesc < Test::Unit::TestCase
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
a = "?"
|
23
|
-
b = /#{a.regesc}/
|
24
|
-
assert( b =~ "?" )
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_resc
|
28
|
-
assert_equal( Regexp.escape("'jfiw0[]4"), resc("'jfiw0[]4") )
|
29
|
-
assert_equal( Regexp.escape("/////"), resc("/////") )
|
30
|
-
end
|
14
|
+
def test_regesc
|
15
|
+
a = "?"
|
16
|
+
b = /#{a.regesc}/
|
17
|
+
assert( b =~ "?" )
|
18
|
+
end
|
31
19
|
|
20
|
+
def test_resc
|
21
|
+
assert_equal( Regexp.escape("'jfiw0[]4"), resc("'jfiw0[]4") )
|
22
|
+
assert_equal( Regexp.escape("/////"), resc("/////") )
|
32
23
|
end
|
33
24
|
|
25
|
+
end
|
34
26
|
|
35
27
|
|
@@ -1,135 +1,242 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
# _____ _
|
2
|
+
# |_ _|__ ___| |_
|
3
|
+
# | |/ _ \/ __| __|
|
4
|
+
# | | __/\__ \ |
|
5
|
+
# |_|\___||___/\__|
|
6
|
+
#
|
7
|
+
# for lib/facets/string/tabs.rb
|
8
|
+
|
9
|
+
require 'facets/string/tabs.rb'
|
10
|
+
require 'test/unit'
|
11
|
+
|
12
|
+
class TestStringTabs < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@tabs = <<-EOF
|
16
|
+
|
17
|
+
\tOne tab
|
18
|
+
\tOne space and one tab
|
19
|
+
\t Six spaces, a tab, and a space
|
20
|
+
EOF
|
21
|
+
|
22
|
+
@poem1 = <<-EOF
|
23
|
+
I must go down to the seas again
|
24
|
+
The lonely sea and the sky
|
25
|
+
And all I want is a tall ship
|
26
|
+
And a star to steer her by
|
27
|
+
EOF
|
28
|
+
|
29
|
+
@poem2 = <<-EOF
|
30
|
+
"Eek!"
|
31
|
+
She cried
|
32
|
+
As the mouse quietly scurried
|
33
|
+
by.
|
34
|
+
EOF
|
35
|
+
end # def setup
|
36
|
+
|
37
|
+
def test_tab
|
38
|
+
a = "xyz".tab(4)
|
39
|
+
assert_equal( ' ', a[0..3] )
|
40
|
+
# Need to expand on this
|
41
|
+
end
|
12
42
|
|
13
|
-
|
43
|
+
def test_expand_tabs_1
|
44
|
+
expected = <<-EOF
|
14
45
|
|
46
|
+
One tab
|
47
|
+
One space and one tab
|
48
|
+
Six spaces, a tab, and a space
|
49
|
+
EOF
|
50
|
+
assert_equal(expected, @tabs.expand_tabs)
|
51
|
+
assert_equal(expected, @tabs.expand_tabs(8))
|
52
|
+
end
|
15
53
|
|
54
|
+
def test_expand_tabs_2
|
55
|
+
expected = <<-EOF
|
16
56
|
|
17
|
-
|
57
|
+
One tab
|
58
|
+
One space and one tab
|
59
|
+
Six spaces, a tab, and a space
|
60
|
+
EOF
|
61
|
+
assert_equal(expected, @tabs.expand_tabs(4))
|
62
|
+
end
|
18
63
|
|
19
|
-
|
64
|
+
def test_expand_tabs_3
|
65
|
+
expected = <<-EOF
|
20
66
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
67
|
+
One tab
|
68
|
+
One space and one tab
|
69
|
+
Six spaces, a tab, and a space
|
70
|
+
EOF
|
71
|
+
assert_equal(expected, @tabs.expand_tabs(16))
|
72
|
+
end
|
26
73
|
|
27
|
-
|
28
|
-
|
29
|
-
assert_equal( ' ', a[0..3] )
|
30
|
-
# Need to expand on this
|
31
|
-
end
|
74
|
+
def test_expand_tabs_4
|
75
|
+
expected = <<-EOF
|
32
76
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
77
|
+
One tab
|
78
|
+
One space and one tab
|
79
|
+
Six spaces, a tab, and a space
|
80
|
+
EOF
|
81
|
+
assert_equal(expected, @tabs.expand_tabs(1))
|
82
|
+
end
|
38
83
|
|
39
|
-
|
40
|
-
|
41
|
-
|ABC
|
42
|
-
|123
|
43
|
-
|TEST
|
44
|
-
}.margin
|
45
|
-
assert_equal( "ABC\n123\nTEST", s )
|
46
|
-
|
47
|
-
s = %q{
|
48
|
-
|ABC
|
49
|
-
|123
|
50
|
-
|TEST
|
51
|
-
}.margin
|
52
|
-
assert_equal( "ABC\n123\nTEST", s )
|
53
|
-
|
54
|
-
s = %q{|ABC
|
55
|
-
|123
|
56
|
-
|TEST
|
57
|
-
}.margin
|
58
|
-
assert_equal( "ABC\n123\nTEST", s )
|
59
|
-
|
60
|
-
s = %q{
|
61
|
-
|ABC
|
62
|
-
|123
|
63
|
-
|TEST}.margin
|
64
|
-
assert_equal( "ABC\n123\nTEST", s )
|
65
|
-
|
66
|
-
s = %q{|ABC
|
67
|
-
|123
|
68
|
-
|TEST}.margin
|
69
|
-
assert_equal( "ABC\n123\nTEST", s )
|
70
|
-
|
71
|
-
s = %q{ |ABC
|
72
|
-
|123
|
73
|
-
|TEST}.margin
|
74
|
-
assert_equal( "ABC\n123\nTEST", s )
|
75
|
-
|
76
|
-
s = %q{ABC
|
77
|
-
|123
|
78
|
-
|TEST
|
79
|
-
}.margin
|
80
|
-
assert_equal( "ABC\n123\nTEST", s )
|
81
|
-
end
|
82
|
-
|
83
|
-
#
|
84
|
-
|
85
|
-
def test_spacing
|
86
|
-
s = %q{
|
87
|
-
| ABC
|
88
|
-
| 123
|
89
|
-
| TEST
|
90
|
-
}.margin
|
91
|
-
assert_equal( " ABC\n 123\n TEST", s )
|
92
|
-
|
93
|
-
s = %q{
|
94
|
-
|ABC
|
95
|
-
|123
|
96
|
-
|TEST
|
97
|
-
}.margin(1)
|
98
|
-
assert_equal( " ABC\n 123\n TEST", s )
|
84
|
+
def test_expand_tabs_5
|
85
|
+
expected = <<-EOF
|
99
86
|
|
100
|
-
|
87
|
+
One tab
|
88
|
+
One space and one tab
|
89
|
+
Six spaces, a tab, and a space
|
90
|
+
EOF
|
91
|
+
assert_equal(expected, @tabs.expand_tabs(0))
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_tabto
|
95
|
+
a = "xyz".tabto(4)
|
96
|
+
assert_equal( ' ', a[0..3] )
|
97
|
+
# Need to expand on this
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_indent
|
101
|
+
a = "xyz".indent(4)
|
102
|
+
assert_equal( ' ', a[0..3] )
|
103
|
+
# Need to expand on this
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_outdent_0
|
107
|
+
assert_equal(" xyz", " xyz".outdent(-1))
|
108
|
+
assert_equal(" xyz", " xyz".outdent(0))
|
109
|
+
assert_equal(" xyz", " xyz".outdent(1))
|
110
|
+
assert_equal(" xyz", " xyz".outdent(2))
|
111
|
+
assert_equal("xyz", " xyz".outdent(3))
|
112
|
+
assert_equal("xyz", " xyz".outdent(4))
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_outdent_1
|
116
|
+
expected = <<-EOF
|
117
|
+
I must go down to the seas again
|
118
|
+
The lonely sea and the sky
|
119
|
+
And all I want is a tall ship
|
120
|
+
And a star to steer her by
|
121
|
+
EOF
|
122
|
+
actual = @poem1.outdent(1)
|
123
|
+
assert_equal(expected, actual)
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_outdent_2
|
127
|
+
expected = <<-EOF
|
128
|
+
I must go down to the seas again
|
129
|
+
The lonely sea and the sky
|
130
|
+
And all I want is a tall ship
|
131
|
+
And a star to steer her by
|
132
|
+
EOF
|
133
|
+
actual = @poem1.outdent(4)
|
134
|
+
assert_equal(expected, actual)
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_outdent_3
|
138
|
+
expected = <<-EOF
|
139
|
+
"Eek!"
|
140
|
+
She cried
|
141
|
+
As the mouse quietly scurried
|
142
|
+
by.
|
143
|
+
EOF
|
144
|
+
actual = @poem2.outdent(100)
|
145
|
+
assert_equal(expected, actual)
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_margin
|
149
|
+
s = %q{
|
150
|
+
|ABC
|
151
|
+
|123
|
152
|
+
|TEST
|
153
|
+
}.margin
|
154
|
+
assert_equal( "ABC\n123\nTEST", s )
|
155
|
+
|
156
|
+
s = %q{
|
101
157
|
|ABC
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
158
|
+
|123
|
159
|
+
|TEST
|
160
|
+
}.margin
|
161
|
+
assert_equal( "ABC\n123\nTEST", s )
|
162
|
+
|
163
|
+
s = %q{|ABC
|
164
|
+
|123
|
165
|
+
|TEST
|
166
|
+
}.margin
|
167
|
+
assert_equal( "ABC\n123\nTEST", s )
|
168
|
+
|
169
|
+
s = %q{
|
170
|
+
|ABC
|
171
|
+
|123
|
172
|
+
|TEST}.margin
|
173
|
+
assert_equal( "ABC\n123\nTEST", s )
|
174
|
+
|
175
|
+
s = %q{|ABC
|
176
|
+
|123
|
177
|
+
|TEST}.margin
|
178
|
+
assert_equal( "ABC\n123\nTEST", s )
|
179
|
+
|
180
|
+
s = %q{ |ABC
|
181
|
+
|123
|
182
|
+
|TEST}.margin
|
183
|
+
assert_equal( "ABC\n123\nTEST", s )
|
184
|
+
|
185
|
+
s = %q{ABC
|
186
|
+
|123
|
187
|
+
|TEST
|
188
|
+
}.margin
|
189
|
+
assert_equal( "ABC\n123\nTEST", s )
|
190
|
+
end
|
191
|
+
|
192
|
+
#
|
131
193
|
|
194
|
+
def test_spacing
|
195
|
+
s = %q{
|
196
|
+
| ABC
|
197
|
+
| 123
|
198
|
+
| TEST
|
199
|
+
}.margin
|
200
|
+
assert_equal( " ABC\n 123\n TEST", s )
|
201
|
+
|
202
|
+
s = %q{
|
203
|
+
|ABC
|
204
|
+
|123
|
205
|
+
|TEST
|
206
|
+
}.margin(1)
|
207
|
+
assert_equal( " ABC\n 123\n TEST", s )
|
208
|
+
|
209
|
+
s = %q{
|
210
|
+
|ABC
|
211
|
+
|123
|
212
|
+
|TEST
|
213
|
+
}.margin(2)
|
214
|
+
assert_equal( " ABC\n 123\n TEST", s )
|
215
|
+
|
216
|
+
s = %q{ ABC
|
217
|
+
- 123
|
218
|
+
- TEST
|
219
|
+
}.margin
|
220
|
+
assert_equal( " ABC\n 123\n TEST", s )
|
132
221
|
end
|
133
222
|
|
223
|
+
#
|
224
|
+
|
225
|
+
def test_random_placement
|
226
|
+
@volly = {}
|
227
|
+
100.times{ |n|
|
228
|
+
k = []
|
229
|
+
a = []
|
230
|
+
5.times{ |i|
|
231
|
+
k << ( ( ' ' * Integer(rand*10) ) + '|' + i.to_s )
|
232
|
+
a << ( i.to_s )
|
233
|
+
}
|
234
|
+
@volly[k.join("\n")] = a.join("\n")
|
235
|
+
}
|
236
|
+
@volly.each{ |k,v|
|
237
|
+
assert_equal( v, k.margin )
|
238
|
+
}
|
239
|
+
end
|
134
240
|
|
241
|
+
end
|
135
242
|
|