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
@@ -1,138 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Instance_Setter < Test::Unit::TestCase
|
4
|
-
|
5
|
-
class User < Striuct.new
|
6
|
-
member :id, Integer
|
7
|
-
member :last_name, /\A\w+\z/
|
8
|
-
member :family_name, /\A\w+\z/
|
9
|
-
member :address, /\A((\w+) ?)+\z/
|
10
|
-
member :age, ->age{(20..140).include? age}
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_setter
|
14
|
-
user = User.new
|
15
|
-
user[:last_name] = 'foo'
|
16
|
-
assert_equal user.last_name, 'foo'
|
17
|
-
user.last_name = 'bar'
|
18
|
-
assert_equal user[:last_name], 'bar'
|
19
|
-
|
20
|
-
assert_raises Validation::InvalidWritingError do
|
21
|
-
user[:last_name] = 'foo s'
|
22
|
-
end
|
23
|
-
|
24
|
-
assert_raises Validation::InvalidWritingError do
|
25
|
-
User.new 'asda'
|
26
|
-
end
|
27
|
-
|
28
|
-
assert_raises Validation::InvalidWritingError do
|
29
|
-
user.age = 19
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
class Test_Striuct_Subclass_Instance_Accessor_With_Validation < Test::Unit::TestCase
|
36
|
-
|
37
|
-
class User < Striuct.new
|
38
|
-
member :id, Integer
|
39
|
-
member :last_name, /\A\w+\z/
|
40
|
-
member :family_name, /\A\w+\z/
|
41
|
-
member :address, /\A((\w+) ?)+\z/
|
42
|
-
member :age, ->age{(20..140).include? age}
|
43
|
-
end
|
44
|
-
|
45
|
-
def setup
|
46
|
-
@user = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_reader
|
50
|
-
assert_equal @user[1], 'taro'
|
51
|
-
assert_equal @user[:last_name], 'taro'
|
52
|
-
assert_equal @user.last_name, 'taro'
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_setter_pass
|
56
|
-
assert_equal((@user.id = 2139203509295), 2139203509295)
|
57
|
-
assert_equal @user.id, 2139203509295
|
58
|
-
assert_equal((@user.last_name = 'jiro'), 'jiro')
|
59
|
-
assert_equal @user.last_name, 'jiro'
|
60
|
-
assert_equal((@user.age = 40), 40)
|
61
|
-
assert_equal @user.age, 40
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_setter_fail
|
65
|
-
assert_raises Validation::InvalidWritingError do
|
66
|
-
@user.id = 2139203509295.0
|
67
|
-
end
|
68
|
-
|
69
|
-
assert_raises Validation::InvalidWritingError do
|
70
|
-
@user.last_name = 'ignore name'
|
71
|
-
end
|
72
|
-
|
73
|
-
assert_raises Validation::InvalidWritingError do
|
74
|
-
@user.age = 19
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_strict?
|
79
|
-
assert_same @user.sufficient?(:last_name), true
|
80
|
-
assert_same @user.strict?, true
|
81
|
-
assert_same @user.sufficient?(:last_name), true
|
82
|
-
@user.last_name.clear
|
83
|
-
assert_same @user.sufficient?(:last_name), false
|
84
|
-
assert_same @user.strict?, false
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
|
90
|
-
class Test_Striuct_Subclass_Instance_Accsessor < Test::Unit::TestCase
|
91
|
-
|
92
|
-
class Sth < Striuct.new
|
93
|
-
member :bool, OR(true, false)
|
94
|
-
member :sth
|
95
|
-
conflict_management :struct do
|
96
|
-
member :lambda, OR(->v{v % 3 == 2}, ->v{v.kind_of? Float})
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def setup
|
101
|
-
@sth = Sth.new
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_accessor
|
105
|
-
@sth.bool = true
|
106
|
-
assert_same true, @sth.bool
|
107
|
-
@sth.bool = false
|
108
|
-
assert_same false, @sth.bool
|
109
|
-
|
110
|
-
assert_raises Validation::InvalidWritingError do
|
111
|
-
@sth.bool = nil
|
112
|
-
end
|
113
|
-
|
114
|
-
@sth.sth = 1
|
115
|
-
assert_same 1, @sth.sth
|
116
|
-
|
117
|
-
@sth.sth = 'String'
|
118
|
-
assert_equal 'String', @sth.sth
|
119
|
-
|
120
|
-
@sth.sth = Class.class
|
121
|
-
assert_same Class.class, @sth.sth
|
122
|
-
|
123
|
-
assert_raises Validation::InvalidWritingError do
|
124
|
-
@sth.lambda = 9
|
125
|
-
end
|
126
|
-
|
127
|
-
assert_raises Validation::InvalidWritingError do
|
128
|
-
@sth.lambda = 7
|
129
|
-
end
|
130
|
-
|
131
|
-
@sth.lambda = 8
|
132
|
-
assert_same 8, @sth.lambda
|
133
|
-
|
134
|
-
@sth.lambda = 9.0
|
135
|
-
assert_equal 9.0, @sth.lambda
|
136
|
-
end
|
137
|
-
|
138
|
-
end
|
@@ -1,95 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
|
4
|
-
class Test_Striuct_Subclass_Instance_Adjuster < Test::Unit::TestCase
|
5
|
-
|
6
|
-
class MyClass
|
7
|
-
def self.parse(v)
|
8
|
-
raise unless /\A[a-z]+\z/ =~ v
|
9
|
-
new
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
Sth = Striuct.define do
|
14
|
-
member :chomped, AND(Symbol, /[^\n]\z/), &WHEN(String, ->v{v.chomp.to_sym})
|
15
|
-
member :no_reduced, Symbol, &->v{v.to_sym}
|
16
|
-
member :reduced, Symbol, &INJECT(->v{v.to_s}, ->v{v.to_sym})
|
17
|
-
member :integer, Integer, &PARSE(Integer)
|
18
|
-
member :myobj, ->v{v.instance_of? MyClass}, &PARSE(MyClass)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_WHEN
|
22
|
-
sth = Sth.new
|
23
|
-
|
24
|
-
assert_raises Validation::InvalidWritingError do
|
25
|
-
sth.chomped = :"a\n"
|
26
|
-
end
|
27
|
-
|
28
|
-
sth.chomped = "a\n"
|
29
|
-
|
30
|
-
assert_equal :a, sth.chomped
|
31
|
-
|
32
|
-
sth.chomped = :b
|
33
|
-
assert_equal :b, sth.chomped
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_INJECT
|
37
|
-
sth = Sth.new
|
38
|
-
|
39
|
-
assert_raises Validation::UnmanagebleError do
|
40
|
-
sth.no_reduced = 1
|
41
|
-
end
|
42
|
-
|
43
|
-
sth.reduced = 1
|
44
|
-
|
45
|
-
assert_equal :'1', sth.reduced
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_PARSE
|
49
|
-
sth = Sth.new
|
50
|
-
|
51
|
-
assert_raises Validation::UnmanagebleError do
|
52
|
-
sth.integer = '1.0'
|
53
|
-
end
|
54
|
-
|
55
|
-
sth.integer = '1'
|
56
|
-
|
57
|
-
assert_equal 1, sth.integer
|
58
|
-
|
59
|
-
assert_raises Validation::UnmanagebleError do
|
60
|
-
sth.myobj = '1'
|
61
|
-
end
|
62
|
-
|
63
|
-
sth.myobj = 'a'
|
64
|
-
|
65
|
-
assert_kind_of MyClass, sth.myobj
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
class Test_Striuct_Subclass_Instance_AdjusterOld < Test::Unit::TestCase
|
71
|
-
|
72
|
-
Sth = Striuct.new do
|
73
|
-
member :age, Numeric, &->arg{Integer arg}
|
74
|
-
end
|
75
|
-
|
76
|
-
def setup
|
77
|
-
@sth = Sth.new
|
78
|
-
assert_same nil, @sth.age
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_procedure
|
82
|
-
@sth.age = 10
|
83
|
-
assert_same 10, @sth.age
|
84
|
-
@sth.age = 10.0
|
85
|
-
assert_same 10, @sth.age
|
86
|
-
|
87
|
-
assert_raises Validation::UnmanagebleError do
|
88
|
-
@sth.age = '10.0'
|
89
|
-
end
|
90
|
-
|
91
|
-
@sth.age = '10'
|
92
|
-
assert_same 10, @sth.age
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
data/test/test_subc-i-assign.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Instance_Assign < Test::Unit::TestCase
|
4
|
-
|
5
|
-
Sth = Striuct.new do
|
6
|
-
member :foo
|
7
|
-
end
|
8
|
-
|
9
|
-
[:unassign, :delete_at].each do |callee|
|
10
|
-
define_method :"test_#{callee}" do
|
11
|
-
sth = Sth.new
|
12
|
-
assert_equal false, sth.assign?(:foo)
|
13
|
-
assert_equal false, sth.assigned?(:foo)
|
14
|
-
sth.foo = nil
|
15
|
-
assert_equal true, sth.assign?(:foo)
|
16
|
-
assert_equal true, sth.assigned?(:foo)
|
17
|
-
sth.public_send callee, :foo
|
18
|
-
assert_equal false, sth.assign?(:foo)
|
19
|
-
assert_equal false, sth.assigned?(:foo)
|
20
|
-
sth.foo = nil
|
21
|
-
assert_equal true, sth.assign?(:foo)
|
22
|
-
assert_equal true, sth.assigned?(:foo)
|
23
|
-
sth.public_send callee, 0
|
24
|
-
assert_equal false, sth.assign?(:foo)
|
25
|
-
|
26
|
-
assert_raises KeyError do
|
27
|
-
sth.public_send callee, :var
|
28
|
-
end
|
29
|
-
|
30
|
-
assert_raises KeyError do
|
31
|
-
sth.public_send callee, 1
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_empty?
|
37
|
-
cls = Striuct.new :foo, :bar
|
38
|
-
sth = cls.new
|
39
|
-
|
40
|
-
assert_same true, sth.empty?
|
41
|
-
|
42
|
-
sth.foo = nil
|
43
|
-
assert_same false, sth.empty?
|
44
|
-
sth.bar = true
|
45
|
-
assert_same false, sth.empty?
|
46
|
-
sth.unassign :foo
|
47
|
-
assert_same false, sth.empty?
|
48
|
-
sth.unassign :bar
|
49
|
-
|
50
|
-
assert_same true, sth.empty?
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
data/test/test_subc-i-basic.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Instance_Basic < Test::Unit::TestCase
|
4
|
-
|
5
|
-
class User < Striuct.new
|
6
|
-
member :id, Integer
|
7
|
-
member :last_name, /\A\w+\z/
|
8
|
-
member :family_name, /\A\w+\z/
|
9
|
-
member :address, /\A((\w+) ?)+\z/
|
10
|
-
member :age, ->age{(20..140).include? age}
|
11
|
-
end
|
12
|
-
|
13
|
-
def setup
|
14
|
-
@user = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
|
15
|
-
@user2 = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_delegate_class_method
|
19
|
-
assert_equal @user.members, User.members
|
20
|
-
assert_equal @user.size, User.size
|
21
|
-
assert_equal @user.member?(:age), User.member?(:age)
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_values
|
25
|
-
assert_equal @user.values, [9999, 'taro', 'yamada', 'Tokyo Japan', 30]
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_values_at
|
29
|
-
assert_equal(@user.values_at(4, 0, (2..4)), [30, 9999, 'yamada', 'Tokyo Japan', 30])
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_fetch_values
|
33
|
-
assert_equal(@user.fetch_values(:id, 4, :id), [9999, 30, 9999])
|
34
|
-
assert_equal(@user.fetch_values, [])
|
35
|
-
|
36
|
-
assert_raise ArgumentError do
|
37
|
-
@user.fetch_values :id, 5, :id
|
38
|
-
end
|
39
|
-
|
40
|
-
assert_equal(@user.fetch_values(:id, 5, :id) { :substitute }, [9999, :substitute, 9999])
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
data/test/test_subc-i-cast.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Instance_Cast < Test::Unit::TestCase
|
4
|
-
|
5
|
-
Sth = Striuct.new :foo, :bar, :hoge
|
6
|
-
|
7
|
-
def test_to_h
|
8
|
-
sth = Sth.new
|
9
|
-
assert_equal({foo: nil, bar: nil, hoge: nil}, sth.to_h)
|
10
|
-
assert_equal({foo: nil, bar: nil, hoge: nil}, sth.to_h(true))
|
11
|
-
assert_equal({}, sth.to_h(false))
|
12
|
-
|
13
|
-
sth.bar = :BAR
|
14
|
-
assert_equal({foo: nil, bar: :BAR, hoge: nil}, sth.to_h)
|
15
|
-
assert_equal({foo: nil, bar: :BAR, hoge: nil}, sth.to_h(true))
|
16
|
-
assert_equal({bar: :BAR}, sth.to_h(false))
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_to_a
|
20
|
-
sth = Sth.new
|
21
|
-
assert_equal([nil, nil, nil], sth.to_a)
|
22
|
-
|
23
|
-
sth.bar = :BAR
|
24
|
-
assert_equal([nil, :BAR, nil], sth.to_a)
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
data/test/test_subc-i-compare.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
|
4
|
-
class Test_Striuct_Subclass_Instance_Compare < Test::Unit::TestCase
|
5
|
-
|
6
|
-
class User < Striuct.new
|
7
|
-
member :id, Integer
|
8
|
-
member :last_name, /\A\w+\z/
|
9
|
-
member :family_name, /\A\w+\z/
|
10
|
-
member :address, /\A((\w+) ?)+\z/
|
11
|
-
member :age, ->age{(20..140).include? age}
|
12
|
-
end
|
13
|
-
|
14
|
-
def setup
|
15
|
-
@user = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
|
16
|
-
@user2 = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_hash
|
20
|
-
assert_kind_of Integer, @user.hash
|
21
|
-
assert_equal @user.hash, @user2.hash
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_eql?
|
25
|
-
assert_equal true, @user.eql?(@user2)
|
26
|
-
assert_equal true, @user2.eql?(@user)
|
27
|
-
assert_equal false, @user.eql?(User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 31)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_equal
|
31
|
-
user1 = User.new 11218, 'taro'
|
32
|
-
user2 = User.new 11218, 'taro'
|
33
|
-
assert_equal true, (user1 == user2)
|
34
|
-
user2.last_name = 'ichiro'
|
35
|
-
assert_equal false, (user1 == user2)
|
36
|
-
end
|
37
|
-
|
38
|
-
Sth = Striuct.new :foo, :bar, :hoge
|
39
|
-
|
40
|
-
def test_hashkeyable
|
41
|
-
sth1 = Sth[hoge: 7, foo: 8]
|
42
|
-
sth2 = Sth[hoge: 7, foo: 8]
|
43
|
-
assert_equal true, sth1.eql?(sth2)
|
44
|
-
assert_equal true, sth2.eql?(sth1)
|
45
|
-
assert_equal sth1.hash, sth2.hash
|
46
|
-
assert_equal true, {sth1 => 1}.has_key?(sth2)
|
47
|
-
assert_equal true, {sth2 => 1}.has_key?(sth1)
|
48
|
-
assert_equal 1, {sth1 => 1}[sth2]
|
49
|
-
assert_equal 1, {sth2 => 1}[sth1]
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
data/test/test_subc-i-copy.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Instance_Copy < Test::Unit::TestCase
|
4
|
-
|
5
|
-
class Sth < Striuct.new
|
6
|
-
member :sth
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_dup
|
10
|
-
sth = Sth.new
|
11
|
-
sth2 = sth.dup
|
12
|
-
sth.sth = 1
|
13
|
-
assert_equal false, (sth.sth == sth2.sth)
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_clone
|
17
|
-
sth = Sth.new
|
18
|
-
sth2 = sth.clone
|
19
|
-
sth.sth = 2
|
20
|
-
assert_equal false, (sth.sth == sth2.sth)
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
@@ -1,129 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Test_Striuct_Subclass_Instance_Default_Value < Test::Unit::TestCase
|
4
|
-
|
5
|
-
Sth = Striuct.new do
|
6
|
-
member :lank, OR(Integer, Rational)
|
7
|
-
default :lank, 1
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_default
|
11
|
-
sth = Sth.new 2
|
12
|
-
assert_equal 2, sth.lank
|
13
|
-
sth = Sth.new
|
14
|
-
assert_equal 1, sth.lank
|
15
|
-
assert_equal true, sth.default?(:lank)
|
16
|
-
sth.lank = 2
|
17
|
-
assert_equal false, sth.default?(:lank)
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_define_default
|
21
|
-
assert_raises NameError do
|
22
|
-
Sth.class_eval do
|
23
|
-
default :anything, 10
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
klass = Striuct.define do
|
28
|
-
member :lank2, Integer
|
29
|
-
default :lank2, '10'
|
30
|
-
end
|
31
|
-
|
32
|
-
assert_raises Validation::InvalidWritingError do
|
33
|
-
klass.new
|
34
|
-
end
|
35
|
-
|
36
|
-
scope = self
|
37
|
-
seef = nil
|
38
|
-
klass = Striuct.define do
|
39
|
-
member :lank, Integer
|
40
|
-
|
41
|
-
scope.assert_raises ArgumentError do
|
42
|
-
default :lank, &->own, name, exess{rand}
|
43
|
-
end
|
44
|
-
|
45
|
-
scope.assert_raises ArgumentError do
|
46
|
-
default :lank, '10', &->own, name{rand}
|
47
|
-
end
|
48
|
-
|
49
|
-
scope.assert_raises ArgumentError do
|
50
|
-
default :lank, '10', &->own{rand}
|
51
|
-
end
|
52
|
-
|
53
|
-
scope.assert_raises ArgumentError do
|
54
|
-
default :lank, '10', &->{rand}
|
55
|
-
end
|
56
|
-
|
57
|
-
default :lank, &->own, name{(seef = own); rand}
|
58
|
-
end
|
59
|
-
|
60
|
-
assert_raises Validation::InvalidWritingError do
|
61
|
-
klass.new
|
62
|
-
end
|
63
|
-
|
64
|
-
klass = Striuct.define do
|
65
|
-
member :lank, Integer
|
66
|
-
default :lank, &->own, name{(seef = own); 10 - name.length}
|
67
|
-
end
|
68
|
-
|
69
|
-
assert_equal 6, klass.new.lank
|
70
|
-
assert_equal seef, klass.new
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
74
|
-
|
75
|
-
class Test_Striuct_Subclass_Instance_DefaultValue_Under_MemberMacro < Test::Unit::TestCase
|
76
|
-
|
77
|
-
Sth = Striuct.new do
|
78
|
-
member :lank, OR(Integer, Rational), default: 1
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_default
|
82
|
-
sth = Sth.new 2
|
83
|
-
assert_equal 2, sth.lank
|
84
|
-
sth = Sth.new
|
85
|
-
assert_equal 1, sth.lank
|
86
|
-
assert_equal true, sth.default?(:lank)
|
87
|
-
sth.lank = 2
|
88
|
-
assert_equal false, sth.default?(:lank)
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_define_default
|
92
|
-
assert_raises NameError do
|
93
|
-
Sth.class_eval do
|
94
|
-
default :anything, 10
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
klass = Striuct.define do
|
99
|
-
member :lank2, Integer, default: '10'
|
100
|
-
end
|
101
|
-
|
102
|
-
assert_raises Validation::InvalidWritingError do
|
103
|
-
klass.new
|
104
|
-
end
|
105
|
-
|
106
|
-
scope = self
|
107
|
-
seef = nil
|
108
|
-
klass = Striuct.define do
|
109
|
-
|
110
|
-
scope.assert_raises OptionalArgument::KeyConflictError do
|
111
|
-
member :lank, Integer, default: '10', default_proc: ->own,name{rand}
|
112
|
-
end
|
113
|
-
|
114
|
-
member :lank, Integer, default_proc: ->own,name{(seef = own); rand}
|
115
|
-
end
|
116
|
-
|
117
|
-
assert_raises Validation::InvalidWritingError do
|
118
|
-
klass.new
|
119
|
-
end
|
120
|
-
|
121
|
-
klass = Striuct.define do
|
122
|
-
member :lank, Integer, default_proc: ->own,name{(seef = own); 10 - name.length}
|
123
|
-
end
|
124
|
-
|
125
|
-
assert_equal 6, klass.new.lank
|
126
|
-
assert_equal seef, klass.new
|
127
|
-
end
|
128
|
-
|
129
|
-
end
|