kyanite 0.3.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.
- data/0 start all Tests.bat +23 -0
- data/History.txt +4 -0
- data/License.txt +21 -0
- data/Manifest.txt +88 -0
- data/PostInstall.txt +4 -0
- data/README.txt +48 -0
- data/Rakefile.rb +79 -0
- data/init.rb +2 -0
- data/lib/kyanite.rb +39 -0
- data/lib/kyanite/array.rb +5 -0
- data/lib/kyanite/array/array.rb +172 -0
- data/lib/kyanite/array/array2.rb +140 -0
- data/lib/kyanite/array/matrix2.rb +120 -0
- data/lib/kyanite/array_of_enumerables.rb +2 -0
- data/lib/kyanite/array_of_numerics.rb +2 -0
- data/lib/kyanite/array_of_strings.rb +2 -0
- data/lib/kyanite/basics.rb +60 -0
- data/lib/kyanite/dictionary.rb +116 -0
- data/lib/kyanite/enumerable.rb +7 -0
- data/lib/kyanite/enumerable/enumerable_enumerables.rb +70 -0
- data/lib/kyanite/enumerable/enumerable_numerics.rb +171 -0
- data/lib/kyanite/enumerable/enumerable_strings.rb +58 -0
- data/lib/kyanite/enumerable/structure.rb +170 -0
- data/lib/kyanite/general.rb +8 -0
- data/lib/kyanite/general/callerutils.rb +128 -0
- data/lib/kyanite/general/classutils.rb +246 -0
- data/lib/kyanite/general/kernel.rb +105 -0
- data/lib/kyanite/general/nil.rb +64 -0
- data/lib/kyanite/general/object.rb +86 -0
- data/lib/kyanite/general/true_false.rb +65 -0
- data/lib/kyanite/general/undoable.rb +24 -0
- data/lib/kyanite/hash.rb +170 -0
- data/lib/kyanite/matrix2.rb +2 -0
- data/lib/kyanite/nil.rb +3 -0
- data/lib/kyanite/numeric.rb +4 -0
- data/lib/kyanite/numeric/float.rb +26 -0
- data/lib/kyanite/numeric/integer.rb +34 -0
- data/lib/kyanite/numeric/numeric.rb +45 -0
- data/lib/kyanite/operation.rb +5 -0
- data/lib/kyanite/operation/call_tracker.rb +69 -0
- data/lib/kyanite/operation/rake.rb +101 -0
- data/lib/kyanite/operation/regexp.rb +23 -0
- data/lib/kyanite/operation/unit_test.rb +53 -0
- data/lib/kyanite/optimizer.rb +119 -0
- data/lib/kyanite/rake.rb +2 -0
- data/lib/kyanite/range.rb +54 -0
- data/lib/kyanite/set.rb +219 -0
- data/lib/kyanite/smart_load_path.rb +2 -0
- data/lib/kyanite/string.rb +13 -0
- data/lib/kyanite/string/cast.rb +104 -0
- data/lib/kyanite/string/chars.rb +184 -0
- data/lib/kyanite/string/chars_const.rb +190 -0
- data/lib/kyanite/string/diff.rb +78 -0
- data/lib/kyanite/string/div.rb +19 -0
- data/lib/kyanite/string/include.rb +43 -0
- data/lib/kyanite/string/list.rb +84 -0
- data/lib/kyanite/string/mgsub.rb +35 -0
- data/lib/kyanite/string/nested.rb +253 -0
- data/lib/kyanite/string/random.rb +69 -0
- data/lib/kyanite/string/split.rb +136 -0
- data/lib/kyanite/symbol.rb +19 -0
- data/lib/kyanite/tree.rb +99 -0
- data/lib/kyanite/undoable.rb +2 -0
- data/lib/kyanite/unit_test.rb +2 -0
- data/test/_start_all.rb +17 -0
- data/test/array/test_array.rb +106 -0
- data/test/array/test_matrix2.rb +162 -0
- data/test/enumerable/test_enumerable_enumerables.rb +46 -0
- data/test/enumerable/test_enumerable_numerics.rb +93 -0
- data/test/enumerable/test_enumerable_strings.rb +22 -0
- data/test/enumerable/test_structure.rb +220 -0
- data/test/general/test_classutils.rb +45 -0
- data/test/general/test_nil.rb +44 -0
- data/test/general/test_object.rb +49 -0
- data/test/general/test_true_false.rb +28 -0
- data/test/numeric/test_numeric_integer.rb +28 -0
- data/test/string/test_cast.rb +108 -0
- data/test/string/test_chars.rb +255 -0
- data/test/string/test_diff.rb +95 -0
- data/test/string/test_list.rb +141 -0
- data/test/string/test_nested.rb +361 -0
- data/test/string/test_split.rb +187 -0
- data/test/test_dictionary.rb +128 -0
- data/test/test_hash.rb +59 -0
- data/test/test_optimizer.rb +150 -0
- data/test/test_range.rb +41 -0
- data/test/test_set.rb +210 -0
- data/test/test_tree.rb +94 -0
- metadata +217 -0
data/lib/kyanite/tree.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require 'tree'
|
4
|
+
|
5
|
+
# -----------------------------------------------------------------------------------------
|
6
|
+
# Ergänzungen zu rubytree 0.5.2
|
7
|
+
#
|
8
|
+
module Tree
|
9
|
+
class TreeNode
|
10
|
+
attr_reader :childrenHash
|
11
|
+
|
12
|
+
|
13
|
+
# kann jetzt auch mit Symbolen umgehen
|
14
|
+
def to_s
|
15
|
+
":#{@name}"
|
16
|
+
# "Node Name: #{@name}" +
|
17
|
+
# " Content: #{@content || '<Empty>'}" +
|
18
|
+
# " Parent: #{(isRoot?() ? '<None>' : @parent.name)}" +
|
19
|
+
# " Children: #{@children.length}" +
|
20
|
+
# " Total Nodes: #{size()}"
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
# funktioniert jetzt
|
25
|
+
def printTree(level = 0, breite = 8)
|
26
|
+
|
27
|
+
if isRoot?
|
28
|
+
print "*"
|
29
|
+
|
30
|
+
elsif level == 0
|
31
|
+
print 'X'
|
32
|
+
|
33
|
+
else
|
34
|
+
print "|" unless parent.isLastSibling?
|
35
|
+
print(" " * (level - 1 ) * breite)
|
36
|
+
print(isLastSibling? ? "+" : "|")
|
37
|
+
print "---"
|
38
|
+
print(hasChildren? ? "+" : ">")
|
39
|
+
end
|
40
|
+
|
41
|
+
puts " #{name}"
|
42
|
+
|
43
|
+
children { |child| child.printTree(level + 1)}
|
44
|
+
nil
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
# anders als [] wird der gesamte Baum durchsucht
|
49
|
+
# Liefert den ersten Treffer
|
50
|
+
def find( node_name )
|
51
|
+
return self if self.name == node_name
|
52
|
+
result = self[node_name]
|
53
|
+
return result if result
|
54
|
+
children do |c|
|
55
|
+
next if c.children.empty?
|
56
|
+
#puts "durchsuche #{c.name}"
|
57
|
+
result = c.find(node_name)
|
58
|
+
return result if result
|
59
|
+
end
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
# Liefert ein Array aller untergeordneten Child-Keys.
|
65
|
+
# Es wird der gesamte Baum durchsucht.
|
66
|
+
def all_child_keys
|
67
|
+
result = @childrenHash.keys || []
|
68
|
+
children do |c|
|
69
|
+
#puts "durchsuche #{c}"
|
70
|
+
next if c.childrenHash.empty?
|
71
|
+
result += c.all_child_keys
|
72
|
+
end
|
73
|
+
result
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
end # class
|
80
|
+
end # module
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
data/test/_start_all.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Führt alle Tests aus
|
4
|
+
#
|
5
|
+
|
6
|
+
|
7
|
+
# Test-Verzeichnis der Applikation
|
8
|
+
test_verzeichnis = File.expand_path(File.dirname(__FILE__) )
|
9
|
+
|
10
|
+
Dir["#{test_verzeichnis}/test_*.rb"].sort.each { |t| require t }
|
11
|
+
Dir["#{test_verzeichnis}/array/test_*.rb"].sort.each { |t| require t }
|
12
|
+
Dir["#{test_verzeichnis}/enumerable/test_*.rb"].sort.each { |t| require t }
|
13
|
+
Dir["#{test_verzeichnis}/general/test_*.rb"].sort.each { |t| require t }
|
14
|
+
Dir["#{test_verzeichnis}/numeric/test_*.rb"].sort.each { |t| require t }
|
15
|
+
Dir["#{test_verzeichnis}/string/test_*.rb"].sort.each { |t| require t }
|
16
|
+
|
17
|
+
|
@@ -0,0 +1,106 @@
|
|
1
|
+
|
2
|
+
require 'kyanite/unit_test'
|
3
|
+
require 'kyanite/smart_load_path'; smart_load_path
|
4
|
+
require 'perception' if $0 == __FILE__
|
5
|
+
|
6
|
+
require 'kyanite/array/array'
|
7
|
+
require 'kyanite/numeric/numeric'
|
8
|
+
require 'kyanite/set'
|
9
|
+
|
10
|
+
|
11
|
+
# Tests für Array
|
12
|
+
#
|
13
|
+
class TestKyaniteArray < UnitTest
|
14
|
+
|
15
|
+
def test_rephrase_index
|
16
|
+
test = [ :a, :b, :c, :d]
|
17
|
+
0.upto(3) do | i |
|
18
|
+
i_inv = test.rephrase_index(i)
|
19
|
+
i_neg = test.rephrase_index(i, :neg)
|
20
|
+
i_pos = test.rephrase_index(i, :pos)
|
21
|
+
# print "\n#{test[i]} #{i} #{i_inv}"
|
22
|
+
|
23
|
+
assert_not_equal i, i_inv
|
24
|
+
assert_not_equal i, i_neg
|
25
|
+
assert_equal i_neg, i_inv
|
26
|
+
assert_equal i, i_pos
|
27
|
+
assert_equal test[i], test[i_inv]
|
28
|
+
assert_equal test[i], test[i_pos]
|
29
|
+
assert_equal test[i], test[i_neg]
|
30
|
+
end # do
|
31
|
+
|
32
|
+
-4.upto(-1) do | i |
|
33
|
+
i_inv = test.rephrase_index(i)
|
34
|
+
i_neg = test.rephrase_index(i, :neg)
|
35
|
+
i_pos = test.rephrase_index(i, :pos)
|
36
|
+
# print "\n#{test[i]} #{i} #{i_inv}"
|
37
|
+
|
38
|
+
assert_not_equal i, i_inv
|
39
|
+
assert_not_equal i, i_pos
|
40
|
+
assert_equal i_pos, i_inv
|
41
|
+
assert_equal i, i_neg
|
42
|
+
assert_equal test[i], test[i_inv]
|
43
|
+
assert_equal test[i], test[i_pos]
|
44
|
+
assert_equal test[i], test[i_neg]
|
45
|
+
end # do
|
46
|
+
|
47
|
+
[4, 5, -5, -6].each do |i|
|
48
|
+
i_inv = test.rephrase_index(i)
|
49
|
+
i_neg = test.rephrase_index(i, :neg)
|
50
|
+
i_pos = test.rephrase_index(i, :pos)
|
51
|
+
# print "\nx #{i} #{i_inv}"
|
52
|
+
assert_equal i, i_neg
|
53
|
+
assert_equal i, i_pos
|
54
|
+
assert_equal i, i_neg
|
55
|
+
assert_equal test[i], test[i_inv]
|
56
|
+
assert_equal test[i], test[i_pos]
|
57
|
+
assert_equal test[i], test[i_neg]
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
def test_array_diff
|
66
|
+
a = [1,2,3,4,5, :a, 'b']
|
67
|
+
b = [1,2,4,5,6,'a',:c]
|
68
|
+
|
69
|
+
assert_equal [3,:a,'b'], a - b
|
70
|
+
assert_equal [3,:a,'b', 3,:a,'b'], a + a - b
|
71
|
+
assert_equal [6, 'a', :c], b - a
|
72
|
+
assert_equal [], b - b
|
73
|
+
assert_equal [], a - a
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
def test_array_shift_complement
|
78
|
+
assert_equal [2,3], [1,2,3].shift_complement
|
79
|
+
assert_equal 3, [1,2,3].shift_complement.shift_complement
|
80
|
+
assert_equal nil, [1,2,3].shift_complement.shift_complement.shift_complement
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
def test_divide
|
90
|
+
numbers = [1, 3, 4, 6, 9, 10, 11]
|
91
|
+
result = numbers.divide { |i,j| (i - j).abs == 1 }
|
92
|
+
assert_equal [[11, 10, 9], [6], [1], [3, 4]], result
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
end # class
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
@@ -0,0 +1,162 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require 'kyanite/unit_test'
|
4
|
+
require 'kyanite/smart_load_path'; smart_load_path
|
5
|
+
require 'perception' if $0 == __FILE__
|
6
|
+
|
7
|
+
require 'kyanite/matrix2'
|
8
|
+
require 'kyanite/general/nil'
|
9
|
+
|
10
|
+
# require 'benchmark'
|
11
|
+
# include Benchmark
|
12
|
+
|
13
|
+
|
14
|
+
class TestKyaniteMatrix2 < UnitTest
|
15
|
+
|
16
|
+
|
17
|
+
#
|
18
|
+
# Normale Matrix testen: Zellen und Zeilen
|
19
|
+
#
|
20
|
+
def test_matrix_zellen_und_zeilen
|
21
|
+
# Initialisierung
|
22
|
+
zeile0 = ['Ueberschrift', 'Spalte1', 'Spalte2']
|
23
|
+
zeile1 = ['Zeile1', 'Wert 1.1', 'Wert 1.2']
|
24
|
+
zeile2 = ['Zeile2', 'Wert 2.1', 'Wert 2.2']
|
25
|
+
zeile3 = ['Zeile3', 'Wert 3.1', 'Wert 3.2', 'Wert 3.3']
|
26
|
+
zeile4 = ['Zeile4', 'Wert 4.1', 'Wert 4.2']
|
27
|
+
|
28
|
+
table = [zeile0, zeile1, zeile2, zeile3, zeile4] # dies ist noch ein Array
|
29
|
+
mymatrix = Matrix2.new(table) # und dies ist eine Matrix2
|
30
|
+
assert_kind_of Matrix2, mymatrix
|
31
|
+
|
32
|
+
|
33
|
+
# Zellen-Funktionen testen
|
34
|
+
assert_equal 'Wert 2.2', mymatrix[2][2]
|
35
|
+
mymatrix.set_element!(2,2,'Hallo 2.2')
|
36
|
+
assert_equal 'Hallo 2.2', mymatrix[2][2]
|
37
|
+
|
38
|
+
|
39
|
+
# Zeilen-Funktionen testen
|
40
|
+
assert_equal zeile2, mymatrix.row(2)
|
41
|
+
assert_equal mymatrix.row(2).size, mymatrix.column_size
|
42
|
+
assert_nil mymatrix.row(99)
|
43
|
+
assert_nil mymatrix.row(-99)
|
44
|
+
assert_equal 0, mymatrix.row(99).size
|
45
|
+
mymatrix.set_row!(3, zeile4)
|
46
|
+
assert_equal mymatrix.row(3), mymatrix.row(4)
|
47
|
+
mymatrix[3][0] = 'Z3'
|
48
|
+
mymatrix.set_element!(3,0,'ZEILE3')
|
49
|
+
mymatrix.set_element!(3,1,'WERT 3.1')
|
50
|
+
mymatrix.set_element!(3,2,'WERT 3.2')
|
51
|
+
assert_not_equal mymatrix.row(3), mymatrix.row(4)
|
52
|
+
|
53
|
+
zeile5 = ['Zeile5', 'Wert 5.1', 'Wert 5.2']
|
54
|
+
mymatrix.set_row!(5, zeile5)
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
#
|
61
|
+
# Normale Matrix testen: resize_to_header
|
62
|
+
#
|
63
|
+
def test_resize_to_header
|
64
|
+
# Erneute Initialisierung
|
65
|
+
zeile0 = ['Ueberschrift', 'Spalte1', 'Spalte2']
|
66
|
+
zeile1 = ['Zeile1', 'Wert 1.1', 'Wert 1.2']
|
67
|
+
zeile2 = ['Zeile2', 'Wert 2.1']
|
68
|
+
zeile3 = ['Zeile3', 'Wert 3.1', 'Wert 3.2', 'Wert 3.3']
|
69
|
+
zeile4 = ['Zeile4', 'Wert 4.1', 'Wert 4.2']
|
70
|
+
zeile5 = ['Zeile5']
|
71
|
+
mymatrix = Matrix2.new([zeile0, zeile1, zeile2, zeile3, zeile4, zeile5])
|
72
|
+
|
73
|
+
|
74
|
+
# clean4view(0) testen -- Resize to header
|
75
|
+
assert_equal 16, mymatrix.flatten.size
|
76
|
+
assert_equal 18, mymatrix.clean4view(0).flatten.size
|
77
|
+
assert_equal 16, mymatrix.flatten.size
|
78
|
+
mymatrix.clean4view!(0)
|
79
|
+
assert_equal 18, mymatrix.flatten.size
|
80
|
+
assert_equal 18, mymatrix.clean4view(0).flatten.size
|
81
|
+
assert_kind_of Matrix2, mymatrix.clean4view(0)
|
82
|
+
mymatrix.clean4view!
|
83
|
+
assert_kind_of Matrix2, mymatrix
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
#
|
90
|
+
# Normale Matrix testen: Spalten
|
91
|
+
#
|
92
|
+
def test_spalten
|
93
|
+
# Erneute Initialisierung
|
94
|
+
zeile0 = ['Ueberschrift', 'Spalte1', 'Spalte2']
|
95
|
+
zeile1 = ['Zeile1', 'Wert 1.1', 'Wert 1.2']
|
96
|
+
zeile2 = ['Zeile2', 'Wert 2.1']
|
97
|
+
zeile3 = ['Zeile3', 'Wert 3.1', 'Wert 3.2', 'Wert 3.3']
|
98
|
+
zeile4 = ['Zeile4', 'Wert 4.1', 'Wert 4.2']
|
99
|
+
zeile5 = ['Zeile5']
|
100
|
+
mymatrix = Matrix2.new([zeile0, zeile1, zeile2, zeile3, zeile4, zeile5])
|
101
|
+
|
102
|
+
# Spalten-Funktionen testen
|
103
|
+
assert_equal mymatrix.column(2).size, mymatrix.row_size
|
104
|
+
assert_nil mymatrix.column(99)
|
105
|
+
assert_nil mymatrix.column(-99)
|
106
|
+
assert_equal 0, mymatrix.column(99).size
|
107
|
+
spalte2 = mymatrix.column(2)
|
108
|
+
mymatrix.set_column!(3, spalte2)
|
109
|
+
mymatrix.set_column!(4, spalte2)
|
110
|
+
assert_equal mymatrix.column(2), mymatrix.column(3)
|
111
|
+
assert_equal mymatrix.column(2), mymatrix.column(4)
|
112
|
+
assert_equal 30, mymatrix.flatten.size
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
#
|
118
|
+
# Matrix mit Fehlern testen
|
119
|
+
#
|
120
|
+
def test_fehlerhalte_matrix
|
121
|
+
# Erneute Initialisierung
|
122
|
+
zeile0 = ['X', 'Spalte1', nil, 'Spalte3']
|
123
|
+
zeile1 = [ nil, 'Wert 1.1', 'Wert 1.2','Wert 1.3']
|
124
|
+
zeile2 = []
|
125
|
+
zeile3 = nil
|
126
|
+
zeile4 = ['Zeile4', 'Wert 4.1', 'Wert 4.2']
|
127
|
+
zeile5 = [ nil , nil, nil, nil, nil, nil, nil, nil]
|
128
|
+
zeile6 = ['Zeile6', nil, 'Wert 6.2', 'Wert 6.3']
|
129
|
+
zeile7 = ['Zeile7', 'Wert 7.1', 'Wert 7.2', 'Wert 7.3']
|
130
|
+
zeile8 = ['Zeile8', 'Wert 8.1', nil, 'Wert 8.3']
|
131
|
+
zeile9 = ['Zeile9', 'Wert 9.1', nil, 'Wert 9.3', 'Wert 9.4']
|
132
|
+
|
133
|
+
|
134
|
+
assert_not_nil zeile0.row_to_nil
|
135
|
+
assert_nil zeile1.row_to_nil
|
136
|
+
assert_nil zeile2.row_to_nil
|
137
|
+
assert_nil zeile3.row_to_nil
|
138
|
+
assert_not_nil zeile4.row_to_nil
|
139
|
+
assert_nil zeile5.row_to_nil
|
140
|
+
assert_not_nil zeile6.row_to_nil
|
141
|
+
|
142
|
+
|
143
|
+
errormatrix = Matrix2.new([zeile0, zeile1, zeile2, zeile3, zeile4, zeile5, zeile6, zeile7, zeile8, zeile9])
|
144
|
+
|
145
|
+
|
146
|
+
# assert_equal 37, errormatrix.flatten.size
|
147
|
+
# assert_equal 40, errormatrix.clean4view(0).flatten.size
|
148
|
+
# assert_equal 24, errormatrix.clean4view(1).flatten.size
|
149
|
+
# assert_equal 18, errormatrix.clean4view(2).flatten.size
|
150
|
+
|
151
|
+
end
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
end # class
|
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
require 'kyanite/unit_test'
|
3
|
+
require 'kyanite/smart_load_path'; smart_load_path
|
4
|
+
require 'perception' if $0 == __FILE__
|
5
|
+
|
6
|
+
require 'kyanite/enumerable/enumerable_enumerables'
|
7
|
+
|
8
|
+
class Array
|
9
|
+
include EnumerableEnumerables
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
# Tests für EnumerableEnumerables
|
14
|
+
#
|
15
|
+
class TestKyaniteEnumerableEnumerables < UnitTest
|
16
|
+
|
17
|
+
def test_rectangle1
|
18
|
+
test = []
|
19
|
+
test << [ :a, :b, :c ]
|
20
|
+
test << [ 1, 2, 3 ]
|
21
|
+
test << [ 'i', 'ii', 'iii' ]
|
22
|
+
assert_equal test, test.rectangle
|
23
|
+
assert_equal test, test.rectangle.rectangle
|
24
|
+
assert_equal test.transpose, test.rectangle.transpose.rectangle
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
def test_rectangle2
|
30
|
+
test = []
|
31
|
+
test << [ :a, :b, :c ]
|
32
|
+
test << [ 1, 2, 3, 4 ]
|
33
|
+
test << [ 'i', 'ii' ]
|
34
|
+
|
35
|
+
expc = []
|
36
|
+
expc << [ :a, :b, :c ]
|
37
|
+
expc << [ 1, 2, 3 ]
|
38
|
+
expc << [ 'i', 'ii', nil ]
|
39
|
+
|
40
|
+
|
41
|
+
assert_equal expc, test.rectangle
|
42
|
+
assert_equal expc, test.rectangle.rectangle
|
43
|
+
assert_equal expc.transpose, test.rectangle.transpose.rectangle
|
44
|
+
end
|
45
|
+
|
46
|
+
end # class
|