striuct 0.3.2 → 0.3.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.
Files changed (65) hide show
  1. data/History.rdoc +12 -0
  2. data/LICENSE +2 -2
  3. data/Manifest.txt +34 -24
  4. data/README.md +34 -5
  5. data/example/README.rb +20 -1
  6. data/lib/striuct/classmethods/README.md +5 -0
  7. data/lib/striuct/classmethods/adjustment.rb +5 -3
  8. data/lib/striuct/classmethods/default.rb +2 -2
  9. data/lib/striuct/classmethods/enum.rb +3 -3
  10. data/lib/striuct/classmethods/inner.rb +28 -49
  11. data/lib/striuct/classmethods/named.rb +22 -2
  12. data/lib/striuct/classmethods/object.rb +35 -5
  13. data/lib/striuct/instancemethods/README.md +5 -0
  14. data/lib/striuct/instancemethods/assign.rb +1 -1
  15. data/lib/striuct/instancemethods/cast.rb +35 -0
  16. data/lib/striuct/instancemethods/compare.rb +4 -5
  17. data/lib/striuct/instancemethods/delegate_class_methods.rb +12 -4
  18. data/lib/striuct/instancemethods/hashy.rb +0 -11
  19. data/lib/striuct/instancemethods/keyvalidatable.rb +14 -0
  20. data/lib/striuct/instancemethods/lock.rb +15 -4
  21. data/lib/striuct/instancemethods/object.rb +11 -6
  22. data/lib/striuct/instancemethods/requirements.rb +2 -2
  23. data/lib/striuct/instancemethods/subscript.rb +1 -1
  24. data/lib/striuct/instancemethods/values.rb +1 -8
  25. data/lib/striuct/singleton_class.rb +9 -36
  26. data/lib/striuct/version.rb +1 -1
  27. data/striuct.gemspec +4 -4
  28. data/test/{test_striuct_define.rb → test_striuct-singleton_class-define.rb} +1 -1
  29. data/test/test_striuct-subclass-class-cloning.rb +21 -0
  30. data/test/{test_striuct_subclass_classlock.rb → test_striuct-subclass-class-close.rb} +2 -2
  31. data/test/{test_striuct_subclass_classmethods.rb → test_striuct-subclass-class-constructor.rb} +15 -20
  32. data/test/test_striuct-subclass-class-freeze.rb +36 -0
  33. data/test/{test_striuct_subclass_inheritable.rb → test_striuct-subclass-class-inheritable.rb} +1 -1
  34. data/test/test_striuct-subclass-class-macro.rb +13 -0
  35. data/test/{test_striuct_subclass_safetynaming.rb → test_striuct-subclass-class-safety_naming.rb} +1 -1
  36. data/test/test_striuct-subclass-class-validation.rb +26 -0
  37. data/test/{test_striuct_subclass_alias_member.rb → test_striuct-subclass-feature-alias_member.rb} +1 -1
  38. data/test/{test_striuct_subclass_to_struct.rb → test_striuct-subclass-feature-to_struct.rb} +1 -1
  39. data/test/test_striuct-subclass-instance-accessor.rb +137 -0
  40. data/test/{test_striuct_subclass_adjuster.rb → test_striuct-subclass-instance-adjuster.rb} +28 -28
  41. data/test/{test_striuct_subclass_assign.rb → test_striuct-subclass-instance-assign.rb} +1 -1
  42. data/test/test_striuct-subclass-instance-basic.rb +32 -0
  43. data/test/test_striuct-subclass-instance-cloning.rb +23 -0
  44. data/test/test_striuct-subclass-instance-compare.rb +52 -0
  45. data/test/{test_striuct_subclass_default_value.rb → test_striuct-subclass-instance-default_value.rb} +2 -2
  46. data/test/test_striuct-subclass-instance-enum.rb +93 -0
  47. data/test/{test_striuct_subclass_freeze.rb → test_striuct-subclass-instance-freeze.rb} +1 -1
  48. data/test/{test_striuct_subclass_hashlike.rb → test_striuct-subclass-instance-hashlike.rb} +1 -1
  49. data/test/test_striuct-subclass-instance-keyvalidatable.rb +25 -0
  50. data/test/{test_striuct_subclass_lock.rb → test_striuct-subclass-instance-lock.rb} +1 -1
  51. data/test/test_striuct-subclass-instance-to_s_family.rb +25 -0
  52. data/test/{test_striuct_subclass_functional_condition.rb → test_striuct-subclass-instance-validation_functional_condition.rb} +0 -0
  53. data/test/{test_striuct_subclass_inference.rb → test_striuct-subclass-instance-validation_inference.rb} +1 -1
  54. data/test/{test_striuct_subclass_specific_conditions.rb → test_striuct-subclass-instance-validation_specific_conditions.rb} +1 -1
  55. data/test/{test_striuct_subclass_getter_validation.rb → test_striuct-subclass-instance-validation_with_getter.rb} +1 -1
  56. data/test/test_striuct-subclass-instance_names.rb +18 -0
  57. data/test/test_striuct-version.rb +11 -0
  58. metadata +68 -50
  59. data/lib/striuct/instancemethods/singleton_class.rb +0 -22
  60. data/lib/striuct/instancemethods/to_struct.rb +0 -12
  61. data/test/test_striuct.rb +0 -24
  62. data/test/test_striuct_subclass_cloning.rb +0 -36
  63. data/test/test_striuct_subclass_for_pairs.rb +0 -20
  64. data/test/test_striuct_subclass_instance.rb +0 -289
  65. data/test/test_striuct_version.rb +0 -9
@@ -0,0 +1,23 @@
1
+ require_relative 'helper'
2
+
3
+ class Test_Striuct_Subclass_Instance_Cloning < 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
@@ -0,0 +1,52 @@
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
@@ -1,6 +1,6 @@
1
1
  require_relative 'helper'
2
2
 
3
- class TestStriuctDefaultValue < Test::Unit::TestCase
3
+ class Test_Striuct_Subclass_Instance_Default_Value < Test::Unit::TestCase
4
4
 
5
5
  Sth = Striuct.new do
6
6
  member :lank, OR(Bignum, Fixnum)
@@ -72,7 +72,7 @@ class TestStriuctDefaultValue < Test::Unit::TestCase
72
72
 
73
73
  end
74
74
 
75
- class TestStriuctDefaultValueinMemberMacro < Test::Unit::TestCase
75
+ class Test_Striuct_Subclass_Instance_DefaultValue_Under_MemberMacro < Test::Unit::TestCase
76
76
 
77
77
  Sth = Striuct.new do
78
78
  member :lank, OR(Bignum, Fixnum), default: 1
@@ -0,0 +1,93 @@
1
+ require_relative 'helper'
2
+
3
+
4
+ class Test_Striuct_Subclass_Instance_Enum < 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_each
20
+ assert_same @user, @user.each{}
21
+ assert_kind_of Enumerator, enum = @user.each
22
+ assert_equal enum.next, 9999
23
+ assert_equal enum.next, 'taro'
24
+ end
25
+
26
+ def test_each_member
27
+ assert_same @user, @user.each_member{}
28
+ assert_kind_of Enumerator, enum = @user.each_member
29
+ assert_equal :id, enum.next
30
+ assert_equal :last_name, enum.next
31
+ assert_equal :family_name, enum.next
32
+ assert_equal :address, enum.next
33
+ assert_equal :age, enum.next
34
+ assert_raises StopIteration do
35
+ enum.next
36
+ end
37
+ end
38
+
39
+ def test_each_index
40
+ assert_same @user, @user.each_index{}
41
+ assert_kind_of Enumerator, enum = @user.each_index
42
+ assert_equal 0, enum.next
43
+ assert_equal 1, enum.next
44
+ assert_equal 2, enum.next
45
+ assert_equal 3, enum.next
46
+ assert_equal 4, enum.next
47
+ assert_raises StopIteration do
48
+ enum.next
49
+ end
50
+ end
51
+
52
+ def test_each_with_index
53
+ assert_same @user, @user.each_with_index{}
54
+ assert_kind_of Enumerator, @user.each_with_index
55
+
56
+ r = []
57
+ @user.each_with_index do |value, index|
58
+ r << [value, index]
59
+ end
60
+
61
+ assert_equal [@user.each_value.to_a, @user.each_index.to_a].transpose, r
62
+ end
63
+
64
+ def test_each_member_with_index
65
+ assert_same @user, @user.each_member_with_index{}
66
+ assert_kind_of Enumerator, @user.each_member_with_index
67
+
68
+ r = []
69
+ @user.each_member_with_index do |name, index|
70
+ r << [name, index]
71
+ end
72
+
73
+ assert_equal [@user.each_key.to_a, @user.each_index.to_a].transpose, r
74
+ end
75
+
76
+ Sth = Striuct.define do
77
+ member :name
78
+ member :age
79
+ end
80
+
81
+ def test_each_pair_with_index
82
+ sth = Sth.new 'a', 10
83
+ assert_same sth, sth.each_pair_with_index{}
84
+
85
+ enum = sth.each_pair_with_index
86
+ assert_equal [:name, 'a', 0], enum.next
87
+ assert_equal [:age, 10, 1], enum.next
88
+ assert_raises StopIteration do
89
+ enum.next
90
+ end
91
+ end
92
+
93
+ end
@@ -1,6 +1,6 @@
1
1
  require_relative 'helper'
2
2
 
3
- class TestStriuctFreeze < Test::Unit::TestCase
3
+ class Test_Striuct_Subclass_Instance__Freeze < Test::Unit::TestCase
4
4
 
5
5
  Sth = Striuct.new :foo
6
6
 
@@ -1,6 +1,6 @@
1
1
  require_relative 'helper'
2
2
 
3
- class TestStriuctHashLike < Test::Unit::TestCase
3
+ class Test_Striuct_Subclass_Instance_HashLike < Test::Unit::TestCase
4
4
 
5
5
  Sth = Striuct.new :foo, :bar, :hoge
6
6
 
@@ -0,0 +1,25 @@
1
+ require_relative 'helper'
2
+
3
+ class Test_Striuct_Subclass_Instance_KeyVallidatable < Test::Unit::TestCase
4
+
5
+ Sth = Striuct.new :foo, :bar
6
+
7
+ def test_valid_keys?
8
+ sth = Sth.new
9
+ assert(sth.valid_keys?(must: [:foo, :bar]))
10
+ assert(sth.valid_keys?(let: [:foo, :bar]))
11
+ assert(sth.valid_keys?(must: [:foo], let: [:bar]))
12
+ assert(sth.valid_keys?(let: [:foo, :bar, :hoge]))
13
+ assert_same(false, sth.valid_keys?(must: [:foo, :bar, :hoge]))
14
+ end
15
+
16
+ def test_valid_autonyms?
17
+ sth = Sth.new
18
+ assert(sth.valid_autonyms?(must: [:foo, :bar]))
19
+ assert(sth.valid_autonyms?(let: [:foo, :bar]))
20
+ assert(sth.valid_autonyms?(must: [:foo], let: [:bar]))
21
+ assert(sth.valid_autonyms?(let: [:foo, :bar, :hoge]))
22
+ assert_same(false, sth.valid_autonyms?(must: [:foo, :bar, :hoge]))
23
+ end
24
+
25
+ end
@@ -1,6 +1,6 @@
1
1
  require_relative 'helper'
2
2
 
3
- class TestStriuctLock < Test::Unit::TestCase
3
+ class Test_Striuct_Subclass_Instance_Lock < Test::Unit::TestCase
4
4
 
5
5
  Sth = Striuct.new :foo, :bar
6
6
  Sth.__send__ :close
@@ -0,0 +1,25 @@
1
+ require_relative 'helper'
2
+
3
+ class Test_Striuct_Subclass_Instance_to_s_Family < 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_to_s
14
+ user = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
15
+ assert_equal %q!#<struct' Test_Striuct_Subclass_Instance_to_s_Family::User id=9999, last_name="taro", family_name="yamada", address="Tokyo Japan", age=30>!,
16
+ user.to_s
17
+ end
18
+
19
+ def test_inspect
20
+ user = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
21
+ assert_equal %q!#<struct' Test_Striuct_Subclass_Instance_to_s_Family::User strict?:true id=9999(valid?:true, lock?:false), last_name="taro"(valid?:true, lock?:false), family_name="yamada"(valid?:true, lock?:false), address="Tokyo Japan"(valid?:true, lock?:false), age=30(valid?:true, lock?:false)>!,
22
+ user.inspect
23
+ end
24
+
25
+ end
@@ -1,6 +1,6 @@
1
1
  require_relative 'helper'
2
2
 
3
- class TestStriuctInference < Test::Unit::TestCase
3
+ class Test_Striuct_Subclass_Instance_Inference < Test::Unit::TestCase
4
4
 
5
5
  def test_inference
6
6
  klass = Striuct.define do
@@ -1,6 +1,6 @@
1
1
  require_relative 'helper'
2
2
 
3
- class TestStriuctSpecificConditions < Test::Unit::TestCase
3
+ class Test_Striuct_Subclass_Instance_SpecificConditions < Test::Unit::TestCase
4
4
 
5
5
  Sth = Striuct.define do
6
6
  member :list_only_int, GENERICS(Integer)
@@ -1,6 +1,6 @@
1
1
  require_relative 'helper'
2
2
 
3
- class TestGetterValidation < Test::Unit::TestCase
3
+ class Test_Striuct_Subclass_Instance_GetterValidation < Test::Unit::TestCase
4
4
 
5
5
  Sth = Striuct.define do
6
6
  member :plus_getter, /./, getter_validation: true
@@ -0,0 +1,18 @@
1
+ require_relative 'helper'
2
+
3
+ class Test_Striuct_Subclass_Instance_Names < 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_members
14
+ user = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
15
+ assert_equal user.members, [:id, :last_name, :family_name, :address, :age]
16
+ end
17
+
18
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'helper'
2
+
3
+ class Test_Striuct_Version < Test::Unit::TestCase
4
+
5
+ def test_const_version
6
+ assert_kind_of String, Striuct::VERSION
7
+ assert(/\A\d+\.\d+\.\d+(\.\w+)?\z/ =~ Striuct::VERSION)
8
+ assert_equal true, Striuct::VERSION.frozen?
9
+ end
10
+
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: striuct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-03 00:00:00.000000000 Z
12
+ date: 2012-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: validation
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.0.3.1
21
+ version: 0.0.3
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.0.3.1
29
+ version: 0.0.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: keyvalidatable
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -84,6 +84,7 @@ files:
84
84
  - example/see_trace.rb
85
85
  - lib/striuct.rb
86
86
  - lib/striuct/classmethods.rb
87
+ - lib/striuct/classmethods/README.md
87
88
  - lib/striuct/classmethods/adjustment.rb
88
89
  - lib/striuct/classmethods/constructor.rb
89
90
  - lib/striuct/classmethods/default.rb
@@ -98,20 +99,21 @@ files:
98
99
  - lib/striuct/classmethods/to_struct.rb
99
100
  - lib/striuct/classmethods/validation.rb
100
101
  - lib/striuct/instancemethods.rb
102
+ - lib/striuct/instancemethods/README.md
101
103
  - lib/striuct/instancemethods/assign.rb
104
+ - lib/striuct/instancemethods/cast.rb
102
105
  - lib/striuct/instancemethods/compare.rb
103
106
  - lib/striuct/instancemethods/default.rb
104
107
  - lib/striuct/instancemethods/delegate_class_methods.rb
105
108
  - lib/striuct/instancemethods/enum.rb
106
109
  - lib/striuct/instancemethods/hashy.rb
107
110
  - lib/striuct/instancemethods/inner.rb
111
+ - lib/striuct/instancemethods/keyvalidatable.rb
108
112
  - lib/striuct/instancemethods/lock.rb
109
113
  - lib/striuct/instancemethods/object.rb
110
114
  - lib/striuct/instancemethods/requirements.rb
111
115
  - lib/striuct/instancemethods/safety.rb
112
- - lib/striuct/instancemethods/singleton_class.rb
113
116
  - lib/striuct/instancemethods/subscript.rb
114
- - lib/striuct/instancemethods/to_struct.rb
115
117
  - lib/striuct/instancemethods/validation.rb
116
118
  - lib/striuct/instancemethods/values.rb
117
119
  - lib/striuct/requirements.rb
@@ -121,28 +123,36 @@ files:
121
123
  - lib/striuct/version.rb
122
124
  - striuct.gemspec
123
125
  - test/helper.rb
124
- - test/test_striuct.rb
125
- - test/test_striuct_define.rb
126
- - test/test_striuct_subclass_adjuster.rb
127
- - test/test_striuct_subclass_alias_member.rb
128
- - test/test_striuct_subclass_assign.rb
129
- - test/test_striuct_subclass_classlock.rb
130
- - test/test_striuct_subclass_classmethods.rb
131
- - test/test_striuct_subclass_cloning.rb
132
- - test/test_striuct_subclass_default_value.rb
133
- - test/test_striuct_subclass_for_pairs.rb
134
- - test/test_striuct_subclass_freeze.rb
135
- - test/test_striuct_subclass_functional_condition.rb
136
- - test/test_striuct_subclass_getter_validation.rb
137
- - test/test_striuct_subclass_hashlike.rb
138
- - test/test_striuct_subclass_inference.rb
139
- - test/test_striuct_subclass_inheritable.rb
140
- - test/test_striuct_subclass_instance.rb
141
- - test/test_striuct_subclass_lock.rb
142
- - test/test_striuct_subclass_safetynaming.rb
143
- - test/test_striuct_subclass_specific_conditions.rb
144
- - test/test_striuct_subclass_to_struct.rb
145
- - test/test_striuct_version.rb
126
+ - test/test_striuct-singleton_class-define.rb
127
+ - test/test_striuct-subclass-class-cloning.rb
128
+ - test/test_striuct-subclass-class-close.rb
129
+ - test/test_striuct-subclass-class-constructor.rb
130
+ - test/test_striuct-subclass-class-freeze.rb
131
+ - test/test_striuct-subclass-class-inheritable.rb
132
+ - test/test_striuct-subclass-class-macro.rb
133
+ - test/test_striuct-subclass-class-safety_naming.rb
134
+ - test/test_striuct-subclass-class-validation.rb
135
+ - test/test_striuct-subclass-feature-alias_member.rb
136
+ - test/test_striuct-subclass-feature-to_struct.rb
137
+ - test/test_striuct-subclass-instance-accessor.rb
138
+ - test/test_striuct-subclass-instance-adjuster.rb
139
+ - test/test_striuct-subclass-instance-assign.rb
140
+ - test/test_striuct-subclass-instance-basic.rb
141
+ - test/test_striuct-subclass-instance-cloning.rb
142
+ - test/test_striuct-subclass-instance-compare.rb
143
+ - test/test_striuct-subclass-instance-default_value.rb
144
+ - test/test_striuct-subclass-instance-enum.rb
145
+ - test/test_striuct-subclass-instance-freeze.rb
146
+ - test/test_striuct-subclass-instance-hashlike.rb
147
+ - test/test_striuct-subclass-instance-keyvalidatable.rb
148
+ - test/test_striuct-subclass-instance-lock.rb
149
+ - test/test_striuct-subclass-instance-to_s_family.rb
150
+ - test/test_striuct-subclass-instance-validation_functional_condition.rb
151
+ - test/test_striuct-subclass-instance-validation_inference.rb
152
+ - test/test_striuct-subclass-instance-validation_specific_conditions.rb
153
+ - test/test_striuct-subclass-instance-validation_with_getter.rb
154
+ - test/test_striuct-subclass-instance_names.rb
155
+ - test/test_striuct-version.rb
146
156
  homepage: https://github.com/kachick/striuct
147
157
  licenses: []
148
158
  post_install_message:
@@ -169,26 +179,34 @@ specification_version: 3
169
179
  summary: Struct++
170
180
  test_files:
171
181
  - test/helper.rb
172
- - test/test_striuct.rb
173
- - test/test_striuct_define.rb
174
- - test/test_striuct_subclass_adjuster.rb
175
- - test/test_striuct_subclass_alias_member.rb
176
- - test/test_striuct_subclass_assign.rb
177
- - test/test_striuct_subclass_classlock.rb
178
- - test/test_striuct_subclass_classmethods.rb
179
- - test/test_striuct_subclass_cloning.rb
180
- - test/test_striuct_subclass_default_value.rb
181
- - test/test_striuct_subclass_for_pairs.rb
182
- - test/test_striuct_subclass_freeze.rb
183
- - test/test_striuct_subclass_functional_condition.rb
184
- - test/test_striuct_subclass_getter_validation.rb
185
- - test/test_striuct_subclass_hashlike.rb
186
- - test/test_striuct_subclass_inference.rb
187
- - test/test_striuct_subclass_inheritable.rb
188
- - test/test_striuct_subclass_instance.rb
189
- - test/test_striuct_subclass_lock.rb
190
- - test/test_striuct_subclass_safetynaming.rb
191
- - test/test_striuct_subclass_specific_conditions.rb
192
- - test/test_striuct_subclass_to_struct.rb
193
- - test/test_striuct_version.rb
182
+ - test/test_striuct-singleton_class-define.rb
183
+ - test/test_striuct-subclass-class-cloning.rb
184
+ - test/test_striuct-subclass-class-close.rb
185
+ - test/test_striuct-subclass-class-constructor.rb
186
+ - test/test_striuct-subclass-class-freeze.rb
187
+ - test/test_striuct-subclass-class-inheritable.rb
188
+ - test/test_striuct-subclass-class-macro.rb
189
+ - test/test_striuct-subclass-class-safety_naming.rb
190
+ - test/test_striuct-subclass-class-validation.rb
191
+ - test/test_striuct-subclass-feature-alias_member.rb
192
+ - test/test_striuct-subclass-feature-to_struct.rb
193
+ - test/test_striuct-subclass-instance-accessor.rb
194
+ - test/test_striuct-subclass-instance-adjuster.rb
195
+ - test/test_striuct-subclass-instance-assign.rb
196
+ - test/test_striuct-subclass-instance-basic.rb
197
+ - test/test_striuct-subclass-instance-cloning.rb
198
+ - test/test_striuct-subclass-instance-compare.rb
199
+ - test/test_striuct-subclass-instance-default_value.rb
200
+ - test/test_striuct-subclass-instance-enum.rb
201
+ - test/test_striuct-subclass-instance-freeze.rb
202
+ - test/test_striuct-subclass-instance-hashlike.rb
203
+ - test/test_striuct-subclass-instance-keyvalidatable.rb
204
+ - test/test_striuct-subclass-instance-lock.rb
205
+ - test/test_striuct-subclass-instance-to_s_family.rb
206
+ - test/test_striuct-subclass-instance-validation_functional_condition.rb
207
+ - test/test_striuct-subclass-instance-validation_inference.rb
208
+ - test/test_striuct-subclass-instance-validation_specific_conditions.rb
209
+ - test/test_striuct-subclass-instance-validation_with_getter.rb
210
+ - test/test_striuct-subclass-instance_names.rb
211
+ - test/test_striuct-version.rb
194
212
  has_rdoc:
@@ -1,22 +0,0 @@
1
- class Striuct; module InstanceMethods
2
-
3
- class << self
4
-
5
- private
6
-
7
- # @param [Symbol, String] name
8
- def delegate_class_method(name)
9
- define_method name do |*args, &block|
10
- self.class.__send__ name, *args, &block
11
- end
12
- end
13
-
14
- # @param [Symbol, String] name
15
- # @param [Symbol, String] names
16
- def delegate_class_methods(name, *names)
17
- [name, *names].each{|_name|delegate_class_method _name}
18
- end
19
-
20
- end
21
-
22
- end; end
@@ -1,12 +0,0 @@
1
- class Striuct; module InstanceMethods
2
-
3
- # @group To Ruby's Struct
4
-
5
- # @return [Struct]
6
- def to_struct
7
- self.class.to_struct_class.new(*values)
8
- end
9
-
10
- # @endgroup
11
-
12
- end; end
data/test/test_striuct.rb DELETED
@@ -1,24 +0,0 @@
1
- $VERBOSE = true
2
- require_relative 'helper'
3
-
4
- require_relative 'test_striuct_define'
5
- require_relative 'test_striuct_subclass_adjuster'
6
- require_relative 'test_striuct_subclass_alias_member'
7
- require_relative 'test_striuct_subclass_assign'
8
- require_relative 'test_striuct_subclass_classlock'
9
- require_relative 'test_striuct_subclass_classmethods'
10
- require_relative 'test_striuct_subclass_cloning'
11
- require_relative 'test_striuct_subclass_default_value'
12
- require_relative 'test_striuct_subclass_for_pairs'
13
- require_relative 'test_striuct_subclass_freeze'
14
- require_relative 'test_striuct_subclass_functional_condition'
15
- require_relative 'test_striuct_subclass_getter_validation'
16
- require_relative 'test_striuct_subclass_hashlike'
17
- require_relative 'test_striuct_subclass_inference'
18
- require_relative 'test_striuct_subclass_inheritable'
19
- require_relative 'test_striuct_subclass_instance'
20
- require_relative 'test_striuct_subclass_lock'
21
- require_relative 'test_striuct_subclass_safetynaming'
22
- require_relative 'test_striuct_subclass_specific_conditions'
23
- require_relative 'test_striuct_subclass_to_struct'
24
- require_relative 'test_striuct_version'
@@ -1,36 +0,0 @@
1
- $VERBOSE = true
2
- require_relative 'helper'
3
-
4
- class TestStriuctCloning < Test::Unit::TestCase
5
-
6
- class Sth < Striuct.new
7
- member :sth
8
- end
9
-
10
- def setup
11
- @sth = Sth.new
12
- end
13
-
14
- def test_clone
15
- sth2 = @sth.dup
16
- @sth.sth = 1
17
- assert_equal false, (@sth.sth == sth2.sth)
18
-
19
- sth2 = @sth.clone
20
- @sth.sth = 2
21
- assert_equal false, (@sth.sth == sth2.sth)
22
- end
23
-
24
- def test_class_dup
25
- klass = Sth.dup
26
- Sth.__send__ :member, :dummy1
27
- assert_equal false, klass.member?(:dummy1)
28
- end
29
-
30
- def test_class_clone
31
- klass = Sth.clone
32
- Sth.__send__ :member, :dummy2
33
- assert_equal false, klass.member?(:dummy2)
34
- end
35
-
36
- end
@@ -1,20 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class TestStriuctForPairs < Test::Unit::TestCase
4
-
5
- Sth = Striuct.new :foo, :bar, :hoge
6
- SampleStruct = Struct.new :foo, :bar, :hoge
7
-
8
- def test_for_pairs_from_hash
9
- sth = Sth[hoge: 7, foo: 8]
10
-
11
- assert_equal [8, nil, 7], sth.values
12
- end
13
-
14
- def test_for_pairs_from_struct
15
- sth = Sth[SampleStruct.new 8, nil, 7]
16
-
17
- assert_equal [8, nil, 7], sth.values
18
- end
19
-
20
- end