striuct 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f62606bca03dc43d444db3e23bf44339abf1694ae46833cddf4f9d9aca758d6
4
- data.tar.gz: 298c98ad540cc714624ba524ba41279298f17f785596cea9ae6e7babf21cfc37
3
+ metadata.gz: 1a5238390f14805baa497d1cd3acec45fc10faa233ce94af4782aa5570606b56
4
+ data.tar.gz: e703ea310209502b772938d9eee312e26fcfdec30189c41e071107b125574ebb
5
5
  SHA512:
6
- metadata.gz: 47897a1c2237af0c378b4e1e69fb274c4a6acb5d802693d443bf49ef66ce8e774e09c5173302e0825073ca17b8aa15d215d41f516315526c9c7938afd5063412
7
- data.tar.gz: 51d20eb1974f80d68d6e99e076babf34076d193ef6185f7d7cc565078928ad837c1af7949c116e5bdfbaece4a7de9c201fff12ca5e601e8e3f3be5d93f0f2452
6
+ metadata.gz: 4650584be9988e6f8ed9b1a58cfa5912d099aed4377e035750ee158216fa8bc06c46c53386bc5b1188dd302847112c337d750ac1a103810bd83ab25ae5f920c4
7
+ data.tar.gz: 3edc0199746228322c017bf8eefc619352a53882cf908d9e525392faaa43a5314ec37529ce97cfc7b40917d2dbca5da393cb5580b3d8c1ae673cdeea22efdf42
data/README.md CHANGED
@@ -68,8 +68,7 @@ ken.id #=> 2
68
68
  ```ruby
69
69
  class Foo < Striuct
70
70
  member :foo
71
- member :bar, Numeric, # First validation under Numeric
72
- inference: true # And use inference Validation
71
+ member :bar, Numeric
73
72
  member :with_adjuster, Integer,
74
73
  &->v{Integer v} # Use adjuster before a setter
75
74
  end
@@ -86,7 +85,6 @@ foo.assigned?(:foo) #=> true
86
85
  foo.lock(:foo)
87
86
  foo.foo = nil #=> error
88
87
 
89
- # Inference Validation
90
88
  foo.bar = 1.2 #=> pass # memorize 1.2's class is Float
91
89
  foo.bar = 1 #=> error # 1 is not Float
92
90
 
@@ -24,8 +24,7 @@ p ken.id #=> 2
24
24
 
25
25
  class Foo < Striuct
26
26
  member :foo
27
- member :bar, Numeric,
28
- inference: true
27
+ member :bar, Numeric
29
28
  member :with_adjuster, Integer,
30
29
  &->v{Integer v}
31
30
  end
@@ -75,46 +75,6 @@ module Game
75
75
  debug db
76
76
  end
77
77
 
78
- # through "inference", and check under first passed object class
79
- class FlexibleContainer < Striuct.new
80
- member :anything, BasicObject, inference: true
81
- member :number, Numeric, inference: true
82
- end
83
-
84
- fc1, fc2 = FlexibleContainer.new, FlexibleContainer.new
85
- fc1.anything = 'str'
86
- debug fc1
87
- begin
88
- fc1.anything = :sym
89
- rescue
90
- debug $!
91
- end
92
-
93
- begin
94
- fc2.anything = :sym
95
- rescue
96
- debug $!
97
- end
98
-
99
- fc2.anything = 'string too'
100
-
101
- debug fc2
102
-
103
- begin
104
- fc1.number = 'str'
105
- rescue
106
- debug $!
107
- end
108
-
109
- fc1.number = 1.0
110
- debug fc1
111
-
112
- begin
113
- fc2.number = 1
114
- rescue
115
- debug $!
116
- end
117
-
118
78
  # Standard Struct not check member name.
119
79
  NoGuard = Struct.new :__send__, :'? !'
120
80
  noguard = NoGuard.new false
@@ -6,16 +6,18 @@ class Striuct; module ClassMethods
6
6
  VALUES = [ :condition,
7
7
  :adjuster ].freeze
8
8
 
9
- BOOLEANS = [ :inference,
10
- :must,
11
- :safety_setter,
12
- :safety_getter ].freeze
13
-
9
+ BOOLEANS = [
10
+ :must,
11
+ :safety_setter,
12
+ :safety_getter
13
+ ].freeze
14
+
14
15
  def initialize
15
- @hash = { inference: false,
16
- must: false,
17
- safety_setter: false,
18
- safety_getter: false }
16
+ @hash = {
17
+ must: false,
18
+ safety_setter: false,
19
+ safety_getter: false
20
+ }
19
21
  end
20
22
 
21
23
  VALUES.each do |role|
@@ -66,15 +66,6 @@ class Striuct; module ClassMethods
66
66
  nil
67
67
  end
68
68
 
69
- def _found_family(autonym, other)
70
- family = other.class
71
-
72
- _attributes_for(autonym).condition = family
73
- _attributes_for(autonym).inference = false
74
-
75
- nil
76
- end
77
-
78
69
  # @endgroup
79
70
 
80
71
  end; end
@@ -9,7 +9,6 @@ class Striuct; module ClassMethods
9
9
  opt :default_value, aliases: [:default]
10
10
  opt :default_proc, aliases: [:lazy_default]
11
11
  conflict :default_value, :default_proc
12
- opt :inference, default: false
13
12
  opt :must, default: false
14
13
  opt :setter_validation, aliases: [:writer_validation], default: true
15
14
  opt :getter_validation, aliases: [:reader_validation], default: false
@@ -22,7 +21,6 @@ class Striuct; module ClassMethods
22
21
  # @param [Hash] options
23
22
  # @option options [BasicObject] :default
24
23
  # @option options [Proc] :default_proc
25
- # @option options [Boolean] :inference
26
24
  # @option options [Boolean] :must
27
25
  # @option options [Boolean] :reader_validation
28
26
  # @option options [Boolean] :getter_validation
@@ -43,10 +41,6 @@ class Striuct; module ClassMethods
43
41
  _attributes_for(autonym).safety_setter = !!options.setter_validation
44
42
  _attributes_for(autonym).safety_getter = !!options.getter_validation
45
43
 
46
- if options.inference
47
- _attributes_for(autonym).inference = true
48
- end
49
-
50
44
  if options.must
51
45
  _attributes_for(autonym).must = true
52
46
  end
@@ -83,15 +83,6 @@ class Striuct; module ClassMethods
83
83
 
84
84
  alias_method :restrict?, :with_condition?
85
85
 
86
- # @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
87
- def with_inference?(key)
88
- autonym = autonym_for_key key
89
- rescue Exception
90
- false
91
- else
92
- _attributes_for(autonym).with_inference?
93
- end
94
-
95
86
  # @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
96
87
  def with_must?(key)
97
88
  autonym = autonym_for_key key
@@ -3,7 +3,6 @@ class Striuct; module InstanceMethods
3
3
  # @group Delegate Class Methods
4
4
 
5
5
  def_delegators :'self.class',
6
- :_autonyms,
7
6
  :autonym_for_alias,
8
7
  :autonym_for_member,
9
8
  :autonym_for_index,
@@ -21,14 +20,17 @@ class Striuct; module InstanceMethods
21
20
  :condition_for,
22
21
  :with_safety_getter?, :with_safety_reader?,
23
22
  :with_safety_setter?, :with_safety_writer?,
24
- :with_inference?,
25
23
  :with_must?, :must?,
26
24
  :with_default?,
27
25
  :default_value_for, :default_type_for,
28
26
  :with_adjuster?,
29
27
  :adjuster_for
30
28
 
31
- private :_autonyms
29
+ private
30
+
31
+ def _autonyms
32
+ self.class.__send__ :_autonyms
33
+ end
32
34
 
33
35
  # @endgroup
34
36
 
@@ -39,10 +39,6 @@ class Striuct; module InstanceMethods
39
39
  "#{value.inspect} is deficient for #{autonym} in #{self.class}"
40
40
  end
41
41
 
42
- if with_inference? autonym
43
- self.class.__send__ :_found_family, autonym, value
44
- end
45
-
46
42
  @db[autonym] = value
47
43
  rescue ::Validation::InvalidError
48
44
  unless /in \[\]=/ =~ caller[1].slice(/([^:]+)\z/)
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.homepage = "https://github.com/kachick/#{lib_name}"
18
18
  gem.license = 'MIT'
19
19
  gem.name = lib_name.dup
20
- gem.version = '0.6.0'
20
+ gem.version = '0.6.1'
21
21
 
22
22
  gem.required_ruby_version = '>= 2.2'
23
23
 
@@ -4,7 +4,7 @@ class Test_Striuct_Subclass_Class_Constructor < Test::Unit::TestCase
4
4
 
5
5
  User = Striuct.define do
6
6
  member :name, AND(String, NOT(''))
7
- member :age, Fixnum
7
+ member :age, Integer
8
8
  end.freeze
9
9
 
10
10
  [:for_values, :new].each do |callee|
@@ -34,7 +34,7 @@ class Test_Striuct_Subclass_Class_Copy < Test::Unit::TestCase
34
34
 
35
35
  def test_dup_deep
36
36
  org_cls = Striuct.define do
37
- member :foo, Numeric, inference: true
37
+ member :foo, Numeric
38
38
  end
39
39
 
40
40
  foo = org_cls.new
@@ -42,7 +42,7 @@ class Test_Striuct_Subclass_Class_Copy < Test::Unit::TestCase
42
42
  foo2 = cls2.new
43
43
  foo2.foo = 0.1
44
44
  assert_raises Validation::InvalidWritingError do
45
- foo2.foo = 1
45
+ foo2.foo = '1'
46
46
  end
47
47
 
48
48
  foo.foo = 1
@@ -52,7 +52,7 @@ class Test_Striuct_Subclass_Class_Copy < Test::Unit::TestCase
52
52
 
53
53
  def test_clone_deep
54
54
  org_cls = Striuct.define do
55
- member :foo, Numeric, inference: true
55
+ member :foo, Numeric
56
56
  end
57
57
 
58
58
  foo = org_cls.new
@@ -60,7 +60,7 @@ class Test_Striuct_Subclass_Class_Copy < Test::Unit::TestCase
60
60
  foo2 = cls2.new
61
61
  foo2.foo = 0.1
62
62
  assert_raises Validation::InvalidWritingError do
63
- foo2.foo = 1
63
+ foo2.foo = '1'
64
64
  end
65
65
 
66
66
  foo.foo = 1
@@ -4,7 +4,7 @@ class Test_Striuct_Subclass_Class_Inheritable < Test::Unit::TestCase
4
4
 
5
5
  Sth = Striuct.define do
6
6
  member :foo, String
7
- member :bar, OR(nil, Fixnum)
7
+ member :bar, OR(nil, Integer)
8
8
  end
9
9
 
10
10
  class SubSth < Sth
@@ -318,70 +318,6 @@ class Test_Striuct_Subclass_Predicate_Condition < Test::Unit::TestCase
318
318
 
319
319
  end
320
320
 
321
- class Test_Striuct_Subclass_Predicate_InferenceValidation < Test::Unit::TestCase
322
-
323
- class Subclass < Striuct
324
- member :no_with
325
- alias_member :als_no_with, :no_with
326
- member :with, nil, inference: true
327
- alias_member :als_with, :with
328
- member :with_any, BasicObject, inference: true
329
- alias_member :als_with_any, :with_any
330
- member :adj_with, nil, inference: true do |_|; end
331
- alias_member :als_adj_with, :adj_with
332
-
333
- close_member
334
- end.freeze
335
-
336
- INSTANCE = Subclass.new.freeze
337
-
338
- TYPE_PAIRS = {
339
- class: Subclass,
340
- instance: INSTANCE
341
- }.freeze
342
-
343
- [:with_inference?].each do |predicate|
344
- TYPE_PAIRS.each_pair do |type, reciever|
345
- define_method :"test_#{type}_#{predicate}" do
346
- assert_same false, reciever.public_send(predicate, :no_with)
347
- assert_same false, reciever.public_send(predicate, :als_no_with)
348
- assert_same false, reciever.public_send(predicate, 'no_with')
349
- assert_same false, reciever.public_send(predicate, 'als_no_with')
350
- assert_same false, reciever.public_send(predicate, 0)
351
- assert_same false, reciever.public_send(predicate, 0.9)
352
-
353
- assert_same true, reciever.public_send(predicate, :with)
354
- assert_same true, reciever.public_send(predicate, :als_with)
355
- assert_same true, reciever.public_send(predicate, 'with')
356
- assert_same true, reciever.public_send(predicate, 'als_with')
357
- assert_same true, reciever.public_send(predicate, 1)
358
- assert_same true, reciever.public_send(predicate, 1.9)
359
-
360
- assert_same true, reciever.public_send(predicate, :with_any)
361
- assert_same true, reciever.public_send(predicate, :als_with_any)
362
- assert_same true, reciever.public_send(predicate, 'with_any')
363
- assert_same true, reciever.public_send(predicate, 'als_with_any')
364
- assert_same true, reciever.public_send(predicate, 2)
365
- assert_same true, reciever.public_send(predicate, 2.9)
366
-
367
- assert_same true, reciever.public_send(predicate, :adj_with)
368
- assert_same true, reciever.public_send(predicate, :als_adj_with)
369
- assert_same true, reciever.public_send(predicate, 'adj_with')
370
- assert_same true, reciever.public_send(predicate, 'als_adj_with')
371
- assert_same true, reciever.public_send(predicate, 3)
372
- assert_same true, reciever.public_send(predicate, 3.9)
373
-
374
- assert_same false, reciever.public_send(predicate, :none)
375
- assert_same false, reciever.public_send(predicate, 'none')
376
- assert_same false, reciever.public_send(predicate, 4)
377
- assert_same false, reciever.public_send(predicate, 4.9)
378
- assert_same false, reciever.public_send(predicate, BasicObject.new)
379
- end
380
- end
381
- end
382
-
383
- end
384
-
385
321
  class Test_Striuct_Subclass_Predicate_Must < Test::Unit::TestCase
386
322
 
387
323
  class Subclass < Striuct
@@ -27,7 +27,7 @@ class Test_Striuct_Subclass_Name < Test::Unit::TestCase
27
27
  [:_autonyms].each do |callee|
28
28
  TYPE_PAIRS.each_pair do |type, reciever|
29
29
  define_method :"test_#{type}_#{callee}" do
30
- assert_same true, reciever.private_methods.include?(callee)
30
+ assert_equal true, reciever.private_methods.include?(callee)
31
31
 
32
32
  assert_raises NoMethodError do
33
33
  reciever.public_send(callee)
@@ -3,7 +3,7 @@ require_relative 'helper'
3
3
  class Test_Striuct_Subclass_Instance_Default_Value < Test::Unit::TestCase
4
4
 
5
5
  Sth = Striuct.new do
6
- member :lank, OR(Bignum, Fixnum)
6
+ member :lank, OR(Integer, Rational)
7
7
  default :lank, 1
8
8
  end
9
9
 
@@ -75,7 +75,7 @@ end
75
75
  class Test_Striuct_Subclass_Instance_DefaultValue_Under_MemberMacro < Test::Unit::TestCase
76
76
 
77
77
  Sth = Striuct.new do
78
- member :lank, OR(Bignum, Fixnum), default: 1
78
+ member :lank, OR(Integer, Rational), default: 1
79
79
  end
80
80
 
81
81
  def test_default
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: striuct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenichi Kamiya
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-08 00:00:00.000000000 Z
11
+ date: 2018-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: validation
@@ -150,7 +150,6 @@ files:
150
150
  - ".travis.yml"
151
151
  - ".yardopts"
152
152
  - Gemfile
153
- - History.old(~0.3.n).rdoc
154
153
  - MIT-LICENSE
155
154
  - README.md
156
155
  - Rakefile
@@ -230,7 +229,6 @@ files:
230
229
  - test/test_subc-i-lock.rb
231
230
  - test/test_subc-i-must.rb
232
231
  - test/test_subc-i-to_s_family.rb
233
- - test/test_subc-i-validation_inference.rb
234
232
  - test/test_subc-i-validation_specific_conditions.rb
235
233
  - test/test_subc-i-validation_with_getter.rb
236
234
  - test/test_version.rb
@@ -291,7 +289,6 @@ test_files:
291
289
  - test/test_subc-i-lock.rb
292
290
  - test/test_subc-i-must.rb
293
291
  - test/test_subc-i-to_s_family.rb
294
- - test/test_subc-i-validation_inference.rb
295
292
  - test/test_subc-i-validation_specific_conditions.rb
296
293
  - test/test_subc-i-validation_with_getter.rb
297
294
  - test/test_version.rb
@@ -1,289 +0,0 @@
1
- === 0.3.5.1 2012-9-14
2
-
3
- * Too minor changed :)
4
- Some doc & env
5
-
6
- === 0.3.5 2012-9-9
7
-
8
- * fix:
9
- * SubClass.dup, SubClass.clone
10
- * SubClass#replace_values
11
-
12
- === 0.3.4 2012-9-8
13
-
14
- * fix:
15
- * SubClass.#to_struct
16
- * SubClass#sufficient? (catch any error: error -> false)
17
-
18
- === 0.3.3 2012-9-7
19
-
20
- * modify:
21
- * SubClass#to_s
22
- * SubClass#inspect
23
-
24
- * fix:
25
- * SubClass.freeze
26
-
27
- * add:
28
- * compatibility with keyvalidatable-API
29
-
30
- === 0.3.2 2012-9-4
31
-
32
- * fix:
33
- * #assign
34
- * .for_pairs, .[]
35
-
36
- === 0.3.1 2012-9-2
37
-
38
- * add:
39
- * default value via member macro
40
-
41
- === 0.3.0 2012-4-3
42
-
43
- * modify:
44
- * use validation library (spin-off library)
45
-
46
- === 0.2.3 2012-4-2
47
-
48
- * fix:
49
- * Conditions.#NAND
50
- * Conditions.#XOR
51
- * Conditions.#XNOR
52
-
53
- === 0.2.2 2012-3-30
54
-
55
- * add:
56
- * aliases Conditions#[FUNC()] -> Conditions#[FUNC?()]
57
-
58
- * fix:
59
- * GENERICS check when build condition
60
- * arity checker when default with block parameter
61
-
62
- === 0.2.1 2012-1-30
63
-
64
- * delete:
65
- * Conditions#ANY, ALL
66
-
67
- * add:
68
- * can choose timing of validation (member with option and safety_setter? and more)
69
- * add Flavors (Useful flavor builders)
70
- * .#to_struct_class, #to_struct
71
- * #each_name_with_index (alias-> #each_member_with_index, #each_key_with_index)
72
-
73
- === 0.2.0 2012-1-27
74
-
75
- * delete:
76
- * constant StrictStruct
77
- * Eigen.#sufficient? (alias -> valid?, accept?)
78
-
79
- * modify:
80
- * conditions to a condition (use condition generator Conditions#OR)
81
- * to expr a flavor, before check condition
82
- * inference flag under option parameter
83
- * long macro names (define_xxx -> add_xxx)
84
-
85
- * add:
86
- * #each_pair_with_index
87
-
88
- === 0.1.7 2012-1-26
89
-
90
- * add:
91
- * default with Proc
92
- * detail error message in Subclass.#[]=
93
-
94
- * fix:
95
- * class duplicating
96
-
97
- === 0.1.6 2012-1-25
98
-
99
- * delete:
100
- * import.rb
101
-
102
- * modify:
103
- * Subclass.#define
104
- * naming risks (add bad name "_foo")
105
- * Conditions.#GENERICS (enum prior all? to each_value.all?)
106
- * timing of check default value
107
-
108
- * add:
109
- * detail error message in Subclass.#define
110
-
111
- * fix:
112
- * inherited behavior
113
-
114
- === 0.1.5 2012-1-17
115
-
116
- * add:
117
- * #lock, #lock?
118
- * some Specific Conditions
119
-
120
- * note:
121
- multiple conditions for 'or', dupulicated for direct throw member macro
122
- please use .#OR method in this case
123
-
124
- === 0.1.4 2012-1-16
125
-
126
- * modify:
127
- * trace logs
128
- * naming risks(add bad name "to_foo")
129
- * Subclass#unassign
130
-
131
- * add:
132
- * Specific Conditions
133
- (for Syntax Sugar of useful Functional Conditions)
134
- * Subclass.#each_index
135
- * Subclass.#valid?
136
- * Subclass#clear_at, reset_at
137
-
138
- === 0.1.3 2012-1-10
139
-
140
- * add:
141
- * Subclass.#alias_member
142
- * Subclass.#valid?
143
- * Subclass#valid?
144
-
145
- === 0.1.2 2012-1-9
146
-
147
- * modify:
148
- * Subclass.#hash
149
-
150
- * add:
151
- * Subclass.#to_yaml
152
-
153
- === 0.1.1 2011-12-26
154
-
155
- * modify:
156
- * Subclass.#sufficient?
157
-
158
- * add:
159
- * Subclass.#empty?
160
- * Subclass.#has_value? (value?)
161
- * Subclass.#flatten
162
- * Subclass.#select! (keep_if)
163
- * Subclass.#select
164
- * Subclass.#reject! (delete_if)
165
- * Subclass.#reject
166
- * Subclass.#assoc
167
- * Subclass.#rassoc
168
-
169
- * fix
170
- * Subclass.#sufficient?
171
-
172
- === 0.1.0 2011-12-25
173
-
174
- * modify:
175
- * Subclass.#define
176
-
177
- * add:
178
- * Subclass.#[] (alias load_pairs)
179
- * Subclass.#to_h
180
-
181
- === 0.0.11 2011-12-23
182
-
183
- * modify:
184
- * Subclass.#cname?
185
-
186
- * add:
187
- * inference checker
188
-
189
- === 0.0.10 2011-12-23
190
-
191
- * delete:
192
- * Subclass.#lock, Subclass.#unlock?
193
-
194
- * modify:
195
- * Subclass.#freeze
196
- * has_condition? -> has_conditions?
197
- * Subclass.#lock, Subclass.#lock? -> .close, .closed?
198
-
199
- * add:
200
- * Subclass.#protect_level # class macro
201
- * Subclass.#default?
202
-
203
- === 0.0.9 2011-12-21
204
-
205
- * delete:
206
- * Striuct.load_pairs
207
- * Subclass.#conditions
208
- * Subclass.#procedures
209
- * Subclass.#defaults
210
-
211
- * add:
212
- * Striuct.define
213
- * Subclass.#lock
214
- * Subclass.#default_for
215
-
216
- * fix:
217
- * Subclass.#inspect
218
- * Subclass.#to_s
219
-
220
- * note:
221
- * innner name changed "procedure" to "flavor"
222
-
223
- === 0.0.8 2011-12-18
224
-
225
- * modify:
226
- * Subclass.#define
227
- * Subclass.#accept?
228
- * functional checker's action:
229
- Proc: context to instance
230
- Method: === to call
231
-
232
- * add:
233
- * Subclass.#default
234
-
235
- * fix:
236
- * Subclass.#values_at
237
-
238
- === 0.0.7 2011-12-16
239
-
240
- * modify:
241
- * called macro's block to procedure
242
- * public to private Subclass.#unlock
243
-
244
- * add:
245
- * Subclass.#define
246
- * Subclass.#accept?
247
- * Subclass.#restrict?
248
- * Subclass.#assign?
249
- * Subclass.#assign
250
-
251
- * fix:
252
- * use clone method ( initialize_copy )
253
-
254
- === 0.0.6 2011-12-14
255
-
256
- * modify:
257
- * error type in some methods
258
-
259
- * add:
260
- * Subclass.#sufficent?
261
- * Subclass.#define
262
- * Subclass.#sufficent?
263
- * Subclass.#secure?
264
- * Subclass.#lock?
265
- * Subclass.#lock
266
- * Subclass.#unlock
267
-
268
- * fix:
269
- * typo
270
-
271
- === 0.0.5 2011-12-14
272
-
273
- * fix class constructor
274
- * modify #inspect
275
- * add arguments checks
276
-
277
- === 0.0.4 2011-12-13
278
-
279
- * divide modules for Subclass.#methods
280
- * modify return values for void methods
281
-
282
- === 0.0.3 2011-12-12
283
-
284
- === 0.0.2 2011-12-11
285
-
286
- === 0.0.1 2011-12-11
287
-
288
- * 1 major enhancement:
289
- * Initial release
@@ -1,51 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class Test_Striuct_Subclass_Instance_Inference < Test::Unit::TestCase
4
-
5
- def test_inference
6
- klass = Striuct.define do
7
- member :n, Numeric, inference: true
8
- member :m, BasicObject, inference: true
9
- end
10
-
11
- sth, sth2 = klass.new, klass.new
12
-
13
- assert_raises Validation::InvalidWritingError do
14
- sth.n = '1'
15
- end
16
-
17
- sth.n = 1.1
18
-
19
- assert_equal 1.1, sth.n
20
-
21
- assert_raises Validation::InvalidWritingError do
22
- sth.n = 1
23
- end
24
-
25
- assert_raises Validation::InvalidWritingError do
26
- sth2.n = 1
27
- end
28
-
29
- sth.n = 2.1
30
-
31
- assert_equal 2.1, sth.n
32
-
33
-
34
- sth2.m = 1
35
-
36
- assert_equal 1, sth2.m
37
-
38
- assert_raises Validation::InvalidWritingError do
39
- sth.m = 1.0
40
- end
41
-
42
- assert_raises Validation::InvalidWritingError do
43
- sth2.m = 1.0
44
- end
45
-
46
- sth.m = 2
47
-
48
- assert_equal 2, sth.m
49
- end
50
-
51
- end