striuct 0.6.1 → 0.7.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.
- checksums.yaml +4 -4
- data/MIT-LICENSE.txt +21 -0
- data/README.md +19 -39
- data/lib/striuct.rb +3 -3
- data/lib/striuct/classmethods/README.md +2 -2
- data/lib/striuct/classmethods/adjustment.rb +15 -13
- data/lib/striuct/classmethods/attributes.rb +94 -92
- data/lib/striuct/classmethods/conflict_management.rb +109 -106
- data/lib/striuct/classmethods/constructor.rb +47 -54
- data/lib/striuct/classmethods/copy.rb +45 -43
- data/lib/striuct/classmethods/default.rb +23 -21
- data/lib/striuct/classmethods/enum.rb +46 -44
- data/lib/striuct/classmethods/fix.rb +23 -21
- data/lib/striuct/classmethods/hashdeepdupulicatable.rb +15 -15
- data/lib/striuct/classmethods/inner.rb +57 -55
- data/lib/striuct/classmethods/length.rb +12 -10
- data/lib/striuct/classmethods/macro.rb +110 -106
- data/lib/striuct/classmethods/names.rb +69 -65
- data/lib/striuct/classmethods/predicate.rb +131 -129
- data/lib/striuct/classmethods/requirements.rb +3 -1
- data/lib/striuct/classmethods/to_struct.rb +21 -18
- data/lib/striuct/classmethods/validation.rb +15 -13
- data/lib/striuct/instancemethods/README.md +2 -2
- data/lib/striuct/instancemethods/assign.rb +29 -27
- data/lib/striuct/instancemethods/cast.rb +28 -26
- data/lib/striuct/instancemethods/compare.rb +26 -24
- data/lib/striuct/instancemethods/default.rb +31 -29
- data/lib/striuct/instancemethods/delegate_class_methods.rb +35 -33
- data/lib/striuct/instancemethods/enum.rb +86 -84
- data/lib/striuct/instancemethods/getter.rb +39 -37
- data/lib/striuct/instancemethods/hashy.rb +99 -97
- data/lib/striuct/instancemethods/keyvalidatable.rb +8 -6
- data/lib/striuct/instancemethods/lock.rb +46 -44
- data/lib/striuct/instancemethods/object.rb +50 -48
- data/lib/striuct/instancemethods/requirements.rb +11 -9
- data/lib/striuct/instancemethods/safety.rb +11 -9
- data/lib/striuct/instancemethods/setter.rb +46 -45
- data/lib/striuct/instancemethods/to_s.rb +39 -37
- data/lib/striuct/instancemethods/validation.rb +31 -29
- data/lib/striuct/instancemethods/values.rb +50 -48
- data/lib/striuct/requirements.rb +3 -1
- data/lib/striuct/singleton_class.rb +12 -17
- data/lib/striuct/structs.rb +3 -3
- metadata +33 -178
- data/.gitignore +0 -35
- data/.travis.yml +0 -17
- data/.yardopts +0 -1
- data/Gemfile +0 -11
- data/MIT-LICENSE +0 -22
- data/Rakefile +0 -11
- data/benchmark/basics.rb +0 -56
- data/example/README.rb +0 -50
- data/example/example1.rb +0 -195
- data/example/example2.rb +0 -20
- data/example/see_trace.rb +0 -32
- data/striuct.gemspec +0 -45
- data/test/helper.rb +0 -3
- data/test/test_sglc-constructor.rb +0 -36
- data/test/test_subc-c-add_members.rb +0 -13
- data/test/test_subc-c-close_member.rb +0 -36
- data/test/test_subc-c-constructor.rb +0 -92
- data/test/test_subc-c-copy.rb +0 -71
- data/test/test_subc-c-freeze.rb +0 -36
- data/test/test_subc-c-inheritable.rb +0 -58
- data/test/test_subc-c-safety_naming.rb +0 -73
- data/test/test_subc-f-alias_member.rb +0 -54
- data/test/test_subc-f-enum.rb +0 -159
- data/test/test_subc-f-predicate.rb +0 -647
- data/test/test_subc-f-to_struct.rb +0 -61
- data/test/test_subc-f-validation_util.rb +0 -59
- data/test/test_subc-f_debug.rb +0 -39
- data/test/test_subc-f_name.rb +0 -525
- data/test/test_subc-i-accessor.rb +0 -138
- data/test/test_subc-i-adjuster.rb +0 -95
- data/test/test_subc-i-assign.rb +0 -53
- data/test/test_subc-i-basic.rb +0 -43
- data/test/test_subc-i-cast.rb +0 -27
- data/test/test_subc-i-compare.rb +0 -52
- data/test/test_subc-i-copy.rb +0 -23
- data/test/test_subc-i-default_value.rb +0 -129
- data/test/test_subc-i-freeze.rb +0 -19
- data/test/test_subc-i-hashlike.rb +0 -144
- data/test/test_subc-i-keyvalidatable.rb +0 -25
- data/test/test_subc-i-lock.rb +0 -40
- data/test/test_subc-i-must.rb +0 -30
- data/test/test_subc-i-to_s_family.rb +0 -26
- data/test/test_subc-i-validation_specific_conditions.rb +0 -297
- data/test/test_subc-i-validation_with_getter.rb +0 -33
- data/test/test_version.rb +0 -13
data/test/test_subc-c-copy.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Class_Copy < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def test_dup
|
6
|
-
org_cls = Striuct.define do
|
7
|
-
member :sth
|
8
|
-
end.freeze
|
9
|
-
|
10
|
-
assert_same true, org_cls.frozen?
|
11
|
-
assert_same true, org_cls.closed?
|
12
|
-
cls2 = org_cls.dup
|
13
|
-
assert_same true, org_cls.frozen?
|
14
|
-
assert_same true, org_cls.closed?
|
15
|
-
assert_same false, cls2.frozen?
|
16
|
-
assert_same false, cls2.closed?
|
17
|
-
cls2.__send__ :member, :dummy1
|
18
|
-
assert_same false, org_cls.member?(:dummy1)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_clone
|
22
|
-
org_cls = Striuct.define do
|
23
|
-
member :sth
|
24
|
-
end.freeze
|
25
|
-
|
26
|
-
assert_same true, org_cls.frozen?
|
27
|
-
assert_same true, org_cls.closed?
|
28
|
-
cls2 = org_cls.clone
|
29
|
-
assert_same true, org_cls.frozen?
|
30
|
-
assert_same true, org_cls.closed?
|
31
|
-
assert_same true, cls2.frozen?
|
32
|
-
assert_same true, cls2.closed?
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_dup_deep
|
36
|
-
org_cls = Striuct.define do
|
37
|
-
member :foo, Numeric
|
38
|
-
end
|
39
|
-
|
40
|
-
foo = org_cls.new
|
41
|
-
cls2 = org_cls.dup
|
42
|
-
foo2 = cls2.new
|
43
|
-
foo2.foo = 0.1
|
44
|
-
assert_raises Validation::InvalidWritingError do
|
45
|
-
foo2.foo = '1'
|
46
|
-
end
|
47
|
-
|
48
|
-
foo.foo = 1
|
49
|
-
|
50
|
-
assert_same 1, foo.foo
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_clone_deep
|
54
|
-
org_cls = Striuct.define do
|
55
|
-
member :foo, Numeric
|
56
|
-
end
|
57
|
-
|
58
|
-
foo = org_cls.new
|
59
|
-
cls2 = org_cls.clone
|
60
|
-
foo2 = cls2.new
|
61
|
-
foo2.foo = 0.1
|
62
|
-
assert_raises Validation::InvalidWritingError do
|
63
|
-
foo2.foo = '1'
|
64
|
-
end
|
65
|
-
|
66
|
-
foo.foo = 1
|
67
|
-
|
68
|
-
assert_same 1, foo.foo
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
data/test/test_subc-c-freeze.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Class_Freeze < Test::Unit::TestCase
|
4
|
-
|
5
|
-
Sth = Striuct.new do
|
6
|
-
member :foo
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_class_freeze
|
10
|
-
sth = Sth.new
|
11
|
-
|
12
|
-
assert_same true, sth.member?(:foo)
|
13
|
-
|
14
|
-
Sth.class_eval do
|
15
|
-
member :bar
|
16
|
-
end
|
17
|
-
|
18
|
-
assert_same true, sth.member?(:bar)
|
19
|
-
assert_equal [:foo, :bar], sth.members
|
20
|
-
|
21
|
-
assert_same false, Sth.frozen?
|
22
|
-
|
23
|
-
Sth.freeze
|
24
|
-
|
25
|
-
assert_same true, Sth.frozen?
|
26
|
-
|
27
|
-
assert_raises RuntimeError do
|
28
|
-
Sth.class_eval do
|
29
|
-
member :var2
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
assert_same false, sth.member?(:var2)
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Class_Inheritable < Test::Unit::TestCase
|
4
|
-
|
5
|
-
Sth = Striuct.define do
|
6
|
-
member :foo, String
|
7
|
-
member :bar, OR(nil, Integer)
|
8
|
-
end
|
9
|
-
|
10
|
-
class SubSth < Sth
|
11
|
-
member :hoge, OR(nil, 1..3)
|
12
|
-
end
|
13
|
-
|
14
|
-
class SubSubSth < SubSth
|
15
|
-
member :rest, AND(/\d/, Symbol)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_inherit
|
19
|
-
assert_equal [*Sth.members, :hoge], SubSth.members
|
20
|
-
sth = Sth.new
|
21
|
-
substh = SubSth.new
|
22
|
-
|
23
|
-
assert_raises Validation::InvalidWritingError do
|
24
|
-
substh.bar = 'str'
|
25
|
-
end
|
26
|
-
|
27
|
-
assert_raises Validation::InvalidWritingError do
|
28
|
-
substh.hoge = 4
|
29
|
-
end
|
30
|
-
|
31
|
-
assert_raises NoMethodError do
|
32
|
-
sth.hoge = 3
|
33
|
-
end
|
34
|
-
|
35
|
-
assert_raises NoMethodError do
|
36
|
-
substh.rest = :a4
|
37
|
-
end
|
38
|
-
|
39
|
-
subsubsth = SubSubSth.new
|
40
|
-
|
41
|
-
assert_raises Validation::InvalidWritingError do
|
42
|
-
subsubsth.rest = 4
|
43
|
-
end
|
44
|
-
|
45
|
-
subsubsth.rest = :a4
|
46
|
-
|
47
|
-
assert_equal :a4, subsubsth[:rest]
|
48
|
-
|
49
|
-
assert_equal true, Sth.__send__(:closed?)
|
50
|
-
assert_equal false, SubSth.__send__(:closed?)
|
51
|
-
SubSth.__send__(:close)
|
52
|
-
assert_equal true, SubSth.__send__(:closed?)
|
53
|
-
assert_equal false, SubSubSth.__send__(:closed?)
|
54
|
-
SubSubSth.__send__(:close)
|
55
|
-
assert_equal true, SubSubSth.__send__(:closed?)
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Class_SafetyNaming < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def test_cname?
|
6
|
-
klass = Striuct.new
|
7
|
-
assert_same false, klass.cname?(BasicObject)
|
8
|
-
assert_same false, klass.cname?('m?')
|
9
|
-
assert_same false, klass.cname?('__foo__')
|
10
|
-
assert_same false, klass.cname?('a b')
|
11
|
-
assert_same false, klass.cname?('object_id')
|
12
|
-
assert_same false, klass.cname?('to_ary')
|
13
|
-
assert_same true, klass.cname?('foo')
|
14
|
-
klass.__send__ :set_conflict_management_level, :warning
|
15
|
-
assert_same false, klass.cname?('m?')
|
16
|
-
assert_same false, klass.cname?('__foo__')
|
17
|
-
assert_same false, klass.cname?('a b')
|
18
|
-
assert_same false, klass.cname?('object_id')
|
19
|
-
assert_same false, klass.cname?('to_ary')
|
20
|
-
assert_same true, klass.cname?('foo')
|
21
|
-
klass.__send__ :set_conflict_management_level, :struct
|
22
|
-
assert_same true, klass.cname?('m?')
|
23
|
-
assert_same true, klass.cname?('__foo__')
|
24
|
-
assert_same true, klass.cname?('a b')
|
25
|
-
assert_same true, klass.cname?('object_id')
|
26
|
-
assert_same true, klass.cname?('to_ary')
|
27
|
-
assert_same true, klass.cname?('foo')
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_protect
|
31
|
-
klass = Striuct.new
|
32
|
-
assert_raises NameError do
|
33
|
-
klass.class_eval do
|
34
|
-
member ''
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
assert_raises NameError do
|
39
|
-
klass.class_eval do
|
40
|
-
member :'a b'
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
assert_raises NameError do
|
45
|
-
klass.class_eval do
|
46
|
-
member :'__send__'
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
assert_raises NameError do
|
51
|
-
klass.class_eval do
|
52
|
-
member :'__foo__'
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
assert_raises NameError do
|
57
|
-
klass.class_eval do
|
58
|
-
member :'m?'
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
assert_same false, klass.member?('m?')
|
63
|
-
|
64
|
-
klass.class_eval do
|
65
|
-
conflict_management :struct do
|
66
|
-
member :'m?'
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
assert_same true, klass.member?('m?')
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_AliasMember < Test::Unit::TestCase
|
4
|
-
|
5
|
-
class Sth < Striuct.new
|
6
|
-
member :foo, String
|
7
|
-
|
8
|
-
member :bar, Integer do |v|
|
9
|
-
v
|
10
|
-
end
|
11
|
-
|
12
|
-
member :hoge, Symbol
|
13
|
-
default :hoge, :'Z'
|
14
|
-
alias_member :abc, :bar
|
15
|
-
default :abc, 8
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_alias_member
|
19
|
-
sth = Sth.new 'A'
|
20
|
-
assert_equal [:foo, :bar, :hoge], sth.members
|
21
|
-
assert_equal [:foo, :bar, :hoge], sth.autonyms
|
22
|
-
assert_equal({abc: :bar}, sth.aliases)
|
23
|
-
assert_equal [:foo, :bar, :hoge, :abc], sth.all_members
|
24
|
-
|
25
|
-
assert_equal 8, sth[:abc]
|
26
|
-
adjuster = Sth.__send__(:adjuster_for, :abc)
|
27
|
-
assert_kind_of Proc, adjuster
|
28
|
-
assert_same adjuster, Sth.__send__(:adjuster_for, :bar)
|
29
|
-
assert_equal 8, sth.abc
|
30
|
-
sth.abc = 5
|
31
|
-
assert_equal 5, sth.bar
|
32
|
-
sth[:abc] = 6
|
33
|
-
assert_equal 6, sth.bar
|
34
|
-
|
35
|
-
assert_raises Validation::InvalidWritingError do
|
36
|
-
sth[:abc] = 'a'
|
37
|
-
end
|
38
|
-
|
39
|
-
assert_raises Validation::InvalidWritingError do
|
40
|
-
sth.abc = 'a'
|
41
|
-
end
|
42
|
-
|
43
|
-
assert_raises Validation::InvalidWritingError do
|
44
|
-
sth.bar = 'a'
|
45
|
-
end
|
46
|
-
|
47
|
-
assert_raises ArgumentError do
|
48
|
-
Sth.class_eval do
|
49
|
-
member :abc
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
data/test/test_subc-f-enum.rb
DELETED
@@ -1,159 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Enum < Test::Unit::TestCase
|
4
|
-
|
5
|
-
class Subclass < Striuct
|
6
|
-
member :foo
|
7
|
-
member :bar
|
8
|
-
|
9
|
-
close_member
|
10
|
-
end.freeze
|
11
|
-
|
12
|
-
FOO = 'Fooo! :)'.freeze
|
13
|
-
BAR = 'bar :('.freeze
|
14
|
-
INSTANCE = Subclass.new(FOO, BAR).freeze
|
15
|
-
|
16
|
-
TYPE_PAIRS = {
|
17
|
-
class: Subclass,
|
18
|
-
instance: INSTANCE
|
19
|
-
}.freeze
|
20
|
-
|
21
|
-
[:each_autonym, :each_member].each do |callee|
|
22
|
-
TYPE_PAIRS.each_pair do |type, reciever|
|
23
|
-
define_method :"test_#{type}_#{callee}" do
|
24
|
-
assert_same(reciever, reciever.public_send(callee) {})
|
25
|
-
|
26
|
-
enum = reciever.public_send(callee)
|
27
|
-
assert_instance_of Enumerator, enum
|
28
|
-
assert_equal 2, enum.size
|
29
|
-
assert_same :foo, enum.next
|
30
|
-
assert_same :bar, enum.next
|
31
|
-
assert_raises StopIteration do
|
32
|
-
enum.next
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
[:each_index].each do |callee|
|
39
|
-
TYPE_PAIRS.each_pair do |type, reciever|
|
40
|
-
define_method :"test_#{type}_#{callee}" do
|
41
|
-
assert_same(reciever, reciever.public_send(callee) {})
|
42
|
-
|
43
|
-
enum = reciever.public_send(callee)
|
44
|
-
assert_instance_of Enumerator, enum
|
45
|
-
assert_equal 2, enum.size
|
46
|
-
assert_same 0, enum.next
|
47
|
-
assert_same 1, enum.next
|
48
|
-
assert_raises StopIteration do
|
49
|
-
enum.next
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
[:each_autonym_with_index, :each_member_with_index].each do |callee|
|
56
|
-
TYPE_PAIRS.each_pair do |type, reciever|
|
57
|
-
define_method :"test_#{type}_#{callee}" do
|
58
|
-
assert_same(reciever, reciever.public_send(callee) {})
|
59
|
-
|
60
|
-
enum = reciever.public_send(callee)
|
61
|
-
assert_instance_of Enumerator, enum
|
62
|
-
assert_equal 2, enum.size
|
63
|
-
assert_equal [:foo, 0], enum.next
|
64
|
-
assert_equal [:bar, 1], enum.next
|
65
|
-
assert_raises StopIteration do
|
66
|
-
enum.next
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
[:each_value, :each].each do |callee|
|
73
|
-
{instance: INSTANCE}.each_pair do |type, reciever|
|
74
|
-
define_method :"test_#{type}_#{callee}" do
|
75
|
-
assert_same(reciever, reciever.public_send(callee) {})
|
76
|
-
|
77
|
-
enum = reciever.public_send(callee)
|
78
|
-
assert_instance_of Enumerator, enum
|
79
|
-
assert_equal 2, enum.size
|
80
|
-
assert_same FOO, enum.next
|
81
|
-
assert_same BAR, enum.next
|
82
|
-
assert_raises StopIteration do
|
83
|
-
enum.next
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
[:each_value_with_index, :each_with_index].each do |callee|
|
90
|
-
{instance: INSTANCE}.each_pair do |type, reciever|
|
91
|
-
define_method :"test_#{type}_#{callee}" do
|
92
|
-
assert_same(reciever, reciever.public_send(callee) {})
|
93
|
-
|
94
|
-
enum = reciever.public_send(callee)
|
95
|
-
assert_instance_of Enumerator, enum
|
96
|
-
assert_equal 2, enum.size
|
97
|
-
assert_equal [FOO, 0], ret = enum.next
|
98
|
-
assert_same FOO, ret.first
|
99
|
-
assert_equal [BAR, 1], ret = enum.next
|
100
|
-
assert_same BAR, ret.first
|
101
|
-
assert_raises StopIteration do
|
102
|
-
enum.next
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
[:each_pair].each do |callee|
|
109
|
-
{instance: INSTANCE}.each_pair do |type, reciever|
|
110
|
-
define_method :"test_#{type}_#{callee}" do
|
111
|
-
assert_same(reciever, reciever.public_send(callee) {})
|
112
|
-
|
113
|
-
enum = reciever.public_send(callee)
|
114
|
-
assert_instance_of Enumerator, enum
|
115
|
-
assert_equal 2, enum.size
|
116
|
-
assert_equal [:foo, FOO], ret = enum.next
|
117
|
-
assert_same FOO, ret.last
|
118
|
-
assert_equal [:bar, BAR], ret = enum.next
|
119
|
-
assert_same BAR, ret.last
|
120
|
-
assert_raises StopIteration do
|
121
|
-
enum.next
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
[:each_pair_with_index].each do |callee|
|
128
|
-
{instance: INSTANCE}.each_pair do |type, reciever|
|
129
|
-
define_method :"test_#{type}_#{callee}" do
|
130
|
-
assert_same(reciever, reciever.public_send(callee) {})
|
131
|
-
|
132
|
-
enum = reciever.public_send(callee)
|
133
|
-
assert_instance_of Enumerator, enum
|
134
|
-
assert_equal 2, enum.size
|
135
|
-
assert_equal [:foo, FOO, 0], ret = enum.next
|
136
|
-
assert_same FOO, ret[1]
|
137
|
-
assert_equal [:bar, BAR, 1], ret = enum.next
|
138
|
-
assert_same BAR, ret[1]
|
139
|
-
assert_raises StopIteration do
|
140
|
-
enum.next
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_modified_members_enum_size
|
146
|
-
klass = Striuct.new do
|
147
|
-
member :foo
|
148
|
-
end
|
149
|
-
cenum = klass.each_autonym
|
150
|
-
ienum = klass.new.each_autonym
|
151
|
-
assert_equal 1, cenum.size
|
152
|
-
assert_equal 1, ienum.size
|
153
|
-
klass.send :member, :bar
|
154
|
-
assert_equal 2, cenum.size
|
155
|
-
assert_equal 2, ienum.size
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
end
|