cascading-configuration-hash 1.6.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,12 +11,12 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
11
11
 
12
12
  hash_setter_proc = Proc.new do |hash|
13
13
 
14
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
14
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
15
15
 
16
16
  end
17
17
 
18
- ::CascadingConfiguration::Variable.define_module_method( self, configuration_setter_name, & hash_setter_proc )
19
- ::CascadingConfiguration::Variable.define_instance_method_if_support_exists( self, configuration_setter_name, & hash_setter_proc )
18
+ ::CascadingConfiguration::Variable.define_module_method( self, configuration_setter_name, & hash_setter_proc )
19
+ ::CascadingConfiguration::Variable.define_instance_method_if_support_exists( self, configuration_setter_name, & hash_setter_proc )
20
20
 
21
21
  end
22
22
 
@@ -30,12 +30,12 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
30
30
 
31
31
  hash_getter_proc = Proc.new do
32
32
 
33
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
33
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
34
34
 
35
35
  end
36
36
 
37
- ::CascadingConfiguration::Variable.define_module_method( self, configuration_getter_name, & hash_getter_proc )
38
- ::CascadingConfiguration::Variable.define_instance_method_if_support_exists( self, configuration_getter_name, & hash_getter_proc )
37
+ ::CascadingConfiguration::Variable.define_module_method( self, configuration_getter_name, & hash_getter_proc )
38
+ ::CascadingConfiguration::Variable.define_instance_method_if_support_exists( self, configuration_getter_name, & hash_getter_proc )
39
39
 
40
40
  end
41
41
 
@@ -49,7 +49,7 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
49
49
 
50
50
  ::CascadingConfiguration::Variable.define_module_method( self, configuration_setter_name ) do |hash|
51
51
 
52
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
52
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
53
53
 
54
54
  end
55
55
 
@@ -65,7 +65,7 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
65
65
 
66
66
  ::CascadingConfiguration::Variable.define_module_method( self, configuration_getter_name ) do
67
67
 
68
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
68
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
69
69
 
70
70
  end
71
71
 
@@ -81,12 +81,12 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
81
81
 
82
82
  local_setter_proc = Proc.new do |hash|
83
83
 
84
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
84
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
85
85
 
86
86
  end
87
87
 
88
88
  ::CascadingConfiguration::Variable.define_local_instance_method( self, configuration_setter_name, & local_setter_proc )
89
- ::CascadingConfiguration::Variable.define_instance_method_if_support_exists( self, configuration_setter_name, & local_setter_proc )
89
+ ::CascadingConfiguration::Variable.define_instance_method_if_support_exists( self, configuration_setter_name, & local_setter_proc )
90
90
 
91
91
  end
92
92
 
@@ -100,12 +100,12 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
100
100
 
101
101
  local_getter_proc = Proc.new do
102
102
 
103
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
103
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
104
104
 
105
105
  end
106
106
 
107
107
  ::CascadingConfiguration::Variable.define_local_instance_method( self, configuration_getter_name, & local_getter_proc )
108
- ::CascadingConfiguration::Variable.define_instance_method_if_support_exists( self, configuration_getter_name, & local_getter_proc )
108
+ ::CascadingConfiguration::Variable.define_instance_method_if_support_exists( self, configuration_getter_name, & local_getter_proc )
109
109
 
110
110
  end
111
111
 
@@ -119,7 +119,7 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
119
119
 
120
120
  ::CascadingConfiguration::Variable.define_instance_method( self, configuration_setter_name ) do |hash|
121
121
 
122
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
122
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
123
123
 
124
124
  end
125
125
 
@@ -135,7 +135,7 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
135
135
 
136
136
  ::CascadingConfiguration::Variable.define_instance_method( self, configuration_getter_name ) do
137
137
 
138
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
138
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
139
139
 
140
140
  end
141
141
 
@@ -151,7 +151,7 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
151
151
 
152
152
  ::CascadingConfiguration::Variable.define_local_instance_method( self, configuration_setter_name ) do |hash|
153
153
 
154
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
154
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name ).replace( hash )
155
155
 
156
156
  end
157
157
 
@@ -167,7 +167,7 @@ module CascadingConfiguration::Hash::Interface::GettersSetters
167
167
 
168
168
  ::CascadingConfiguration::Variable.define_local_instance_method( self, configuration_getter_name ) do
169
169
 
170
- return CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
170
+ return ::CascadingConfiguration::Hash.composite_hash_for_cascading_configuration( self, configuration_name )
171
171
 
172
172
  end
173
173
 
@@ -9,11 +9,11 @@ module CascadingConfiguration::Hash::ModuleSupportMethods
9
9
 
10
10
  composite_hash = nil
11
11
 
12
- if ::CascadingConfiguration::Variable.has_configuration_variable?( configuration_instance, configuration_name )
13
- composite_hash = ::CascadingConfiguration::Variable.get_configuration_variable( configuration_instance, configuration_name )
14
- else
15
- composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
16
- end
12
+ if ::CascadingConfiguration::Variable.has_configuration_variable?( configuration_instance, configuration_name )
13
+ composite_hash = ::CascadingConfiguration::Variable.get_configuration_variable( configuration_instance, configuration_name )
14
+ else
15
+ composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
16
+ end
17
17
 
18
18
  return composite_hash
19
19
 
@@ -1,5 +1,9 @@
1
1
 
2
- require_relative '../../lib/cascading-configuration-hash.rb'
2
+ if $__cascading_configuration__spec__development
3
+ require_relative '../../lib/cascading-configuration-hash.rb'
4
+ else
5
+ require 'cascading-configuration-hash'
6
+ end
3
7
 
4
8
  describe CascadingConfiguration::Hash do
5
9
 
@@ -212,15 +216,12 @@ describe CascadingConfiguration::Hash do
212
216
 
213
217
  module CascadingConfiguration::Hash::ConfigurationMockModule
214
218
  include CascadingConfiguration::Hash
215
- attr_configuration_hash :some_hash do |parent_hash, composite_hash|
216
- parent_hash.each do |this_key, this_data|
217
- if existing_value = composite_hash[ this_key ]
218
- composite_hash[ this_key ] = this_data - existing_value
219
- else
220
- composite_hash[ this_key ] = this_data
221
- end
219
+ attr_configuration_hash :some_hash do |hash, key, foreign_value|
220
+ if existing_value = hash[ key ]
221
+ hash[ key ] = foreign_value - existing_value
222
+ else
223
+ hash[ key ] = foreign_value
222
224
  end
223
- composite_hash
224
225
  end
225
226
  self.some_hash = { :one => 1, :two => 2 }
226
227
  self.some_hash.should == { :one => 1, :two => 2 }
@@ -229,7 +230,7 @@ describe CascadingConfiguration::Hash do
229
230
  module CascadingConfiguration::Hash::ConfigurationMockModule2
230
231
  include CascadingConfiguration::Hash::ConfigurationMockModule
231
232
  self.some_hash.should == { :one => 1, :two => 2 }
232
- self.some_hash.replace( { :one => 1, :two => 2 } )
233
+ self.some_hash.merge!( { :one => 1, :two => 2 } )
233
234
  self.some_hash.should == { :one => 0, :two => 0 }
234
235
  end
235
236
 
@@ -422,15 +423,12 @@ describe CascadingConfiguration::Hash do
422
423
 
423
424
  module CascadingConfiguration::Hash::ClassConfigurationMockModule
424
425
  include CascadingConfiguration::Hash
425
- attr_module_configuration_hash :some_hash do |parent_hash, composite_hash|
426
- parent_hash.each do |this_key, this_data|
427
- if existing_value = composite_hash[ this_key ]
428
- composite_hash[ this_key ] = this_data - existing_value
429
- else
430
- composite_hash[ this_key ] = this_data
431
- end
426
+ attr_configuration_hash :some_hash do |hash, key, foreign_value|
427
+ if existing_value = hash[ key ]
428
+ hash[ key ] = foreign_value - existing_value
429
+ else
430
+ hash[ key ] = foreign_value
432
431
  end
433
- composite_hash
434
432
  end
435
433
  self.some_hash = { :one => 1, :two => 2 }
436
434
  self.some_hash.should == { :one => 1, :two => 2 }
@@ -439,7 +437,7 @@ describe CascadingConfiguration::Hash do
439
437
  module CascadingConfiguration::Hash::ClassConfigurationMockModule2
440
438
  include CascadingConfiguration::Hash::ClassConfigurationMockModule
441
439
  self.some_hash.should == { :one => 1, :two => 2 }
442
- self.some_hash.replace( { :one => 1, :two => 2 } )
440
+ self.some_hash.merge!( { :one => 1, :two => 2 } )
443
441
  self.some_hash.should == { :one => 0, :two => 0 }
444
442
  end
445
443
 
@@ -1,203 +1,331 @@
1
1
 
2
- require_relative '../../../../lib/cascading-configuration-hash.rb'
2
+ if $__cascading_configuration__spec__development
3
+ require_relative '../../../../lib/cascading-configuration-hash.rb'
4
+ else
5
+ require 'cascading-configuration-hash'
6
+ end
3
7
 
4
8
  describe CascadingConfiguration::Hash::CompositingHash do
5
9
 
6
- #########
7
- # []= #
8
- #########
10
+ before :all do
9
11
 
10
- it 'can add elements' do
11
-
12
- module CascadingConfiguration::Hash::CompositingHash::CCHMock01
13
- include CascadingConfiguration::Variable
14
- end
15
-
16
- module CascadingConfiguration::Hash::CompositingHash::CIMock01A
17
- include CascadingConfiguration::Hash::CompositingHash::CCHMock01
12
+ module CascadingConfiguration::Hash::CompositingHash::MockA
13
+ # needed for ccv ancestor determination
18
14
  def self.some_configuration
19
15
  end
20
16
  end
21
- module CascadingConfiguration::Hash::CompositingHash::CIMock01B
22
- include CascadingConfiguration::Hash::CompositingHash::CIMock01A
17
+ module CascadingConfiguration::Hash::CompositingHash::MockB
18
+ end
19
+
20
+ @configuration_instance = CascadingConfiguration::Hash::CompositingHash::MockA
21
+ @sub_configuration_instance = CascadingConfiguration::Hash::CompositingHash::MockB
22
+
23
+ @configuration_name = :some_configuration
24
+
25
+ CascadingConfiguration::Variable.register_child_for_parent( @sub_configuration_instance,
26
+ @configuration_instance )
27
+
28
+ end
29
+
30
+ ################
31
+ # initialize #
32
+ ################
33
+
34
+ it 'can add initialize with an ancestor, inheriting its values and linking to it as a child' do
35
+
36
+ cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
37
+
38
+ cascading_composite_hash.instance_variable_get( :@super_composite_hash ).should == nil
39
+ cascading_composite_hash.should == {}
40
+ cascading_composite_hash[ :A ] = 1
41
+ cascading_composite_hash[ :B ] = 2
42
+ cascading_composite_hash[ :C ] = 3
43
+ cascading_composite_hash[ :D ] = 4
44
+ cascading_composite_hash.should == { :A => 1,
45
+ :B => 2,
46
+ :C => 3,
47
+ :D => 4 }
48
+
49
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
50
+ sub_cascading_composite_hash.instance_variable_get( :@super_composite_hash ).should == cascading_composite_hash
51
+ sub_cascading_composite_hash.should == { :A => 1,
52
+ :B => 2,
53
+ :C => 3,
54
+ :D => 4 }
55
+
56
+ end
57
+
58
+ ##################################################################################################
59
+ # private #####################################################################################
60
+ ##################################################################################################
61
+
62
+ #########################################
63
+ # update_as_sub_hash_for_parent_store #
64
+ #########################################
65
+
66
+ it 'can update for a parent store' do
67
+
68
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
69
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
70
+
71
+ sub_cascading_composite_hash.instance_eval do
72
+ update_as_sub_hash_for_parent_store( :A, 1 )
73
+ self.should == { :A => 1 }
74
+ end
75
+
76
+ end
77
+
78
+ ##########################################
79
+ # update_as_sub_hash_for_parent_delete #
80
+ ##########################################
81
+
82
+ it 'can update for a parent delete' do
83
+
84
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
85
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
86
+
87
+ cascading_composite_hash[ :A ] = 1
88
+ cascading_composite_hash.should == { :A => 1 }
89
+ sub_cascading_composite_hash.should == { :A => 1 }
90
+
91
+ sub_cascading_composite_hash.instance_eval do
92
+ update_as_sub_hash_for_parent_delete( :A )
93
+ self.should == { }
23
94
  end
24
95
 
25
- ccv = CascadingConfiguration::Variable
26
- ccm_hash = CascadingConfiguration::Hash::CompositingHash::CCHMock01
27
- configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock01A
28
- sub_configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock01B
29
- configuration_name = :some_configuration
96
+ end
97
+
98
+ ##################################################################################################
99
+ # public ######################################################################################
100
+ ##################################################################################################
101
+
102
+ #########
103
+ # []= #
104
+ #########
105
+
106
+ it 'can add elements' do
107
+
108
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
109
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
30
110
 
31
- # Without super or sub composites
32
- cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
33
111
  cascading_composite_hash[ :some_setting ] = :some_value
34
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value }
35
112
  cascading_composite_hash.should == { :some_setting => :some_value }
113
+ sub_cascading_composite_hash.should == { :some_setting => :some_value }
114
+
36
115
  cascading_composite_hash[ :other_setting ] = :some_value
37
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value,
38
- :other_setting => :some_value }
39
116
  cascading_composite_hash.should == { :some_setting => :some_value,
40
117
  :other_setting => :some_value }
118
+ sub_cascading_composite_hash.should == { :some_setting => :some_value,
119
+ :other_setting => :some_value }
41
120
 
42
- # Super with a sub composite
43
- sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( sub_configuration_instance, configuration_name )
44
- sub_cascading_composite_hash.local_cascading_hash.should == {}
45
- sub_cascading_composite_hash.should == { :some_setting => :some_value,
46
- :other_setting => :some_value }
47
121
  sub_cascading_composite_hash[ :yet_another_setting ] = :some_value
48
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
122
+ cascading_composite_hash.should == { :some_setting => :some_value,
123
+ :other_setting => :some_value }
49
124
  sub_cascading_composite_hash.should == { :some_setting => :some_value,
50
125
  :other_setting => :some_value,
51
126
  :yet_another_setting => :some_value }
52
127
 
128
+ cascading_composite_hash.method( :[]= ).should == cascading_composite_hash.method( :store )
129
+
53
130
  end
54
131
 
55
- ###########
56
- # store #
57
- ###########
132
+ ############
133
+ # delete #
134
+ ############
58
135
 
59
- it 'can add elements' do
136
+ it 'can delete elements' do
137
+
138
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
139
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
60
140
 
61
- module CascadingConfiguration::Hash::CompositingHash::CCHMock02
62
- include CascadingConfiguration::Variable
63
- end
64
-
65
- module CascadingConfiguration::Hash::CompositingHash::CIMock02A
66
- include CascadingConfiguration::Hash::CompositingHash::CCHMock02
67
- def self.some_configuration
68
- end
69
- end
70
- module CascadingConfiguration::Hash::CompositingHash::CIMock02B
71
- include CascadingConfiguration::Hash::CompositingHash::CIMock02A
72
- end
73
-
74
- ccv = CascadingConfiguration::Variable
75
- ccm_hash = CascadingConfiguration::Hash::CompositingHash::CCHMock02
76
- configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock02A
77
- sub_configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock02B
78
- configuration_name = :some_configuration
79
-
80
- # Without super or sub composites
81
- cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
82
141
  cascading_composite_hash.store( :some_setting, :some_value )
83
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value }
84
142
  cascading_composite_hash.should == { :some_setting => :some_value }
143
+ sub_cascading_composite_hash.should == { :some_setting => :some_value }
144
+
85
145
  cascading_composite_hash.store( :other_setting, :some_value )
86
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value,
87
- :other_setting => :some_value }
88
146
  cascading_composite_hash.should == { :some_setting => :some_value,
89
147
  :other_setting => :some_value }
148
+ sub_cascading_composite_hash.should == { :some_setting => :some_value,
149
+ :other_setting => :some_value }
150
+
151
+ cascading_composite_hash.delete( :some_setting )
152
+ cascading_composite_hash.should == { :other_setting => :some_value }
153
+ sub_cascading_composite_hash.should == { :other_setting => :some_value }
90
154
 
91
- # Super with a sub composite
92
- sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( sub_configuration_instance, configuration_name )
93
- sub_cascading_composite_hash.local_cascading_hash.should == {}
94
- sub_cascading_composite_hash.should == { :some_setting => :some_value,
95
- :other_setting => :some_value }
96
155
  sub_cascading_composite_hash.store( :yet_another_setting, :some_value )
97
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
98
- sub_cascading_composite_hash.should == { :some_setting => :some_value,
99
- :other_setting => :some_value,
156
+ cascading_composite_hash.should == { :other_setting => :some_value }
157
+ sub_cascading_composite_hash.should == { :other_setting => :some_value,
100
158
  :yet_another_setting => :some_value }
101
159
 
160
+ sub_cascading_composite_hash.delete( :other_setting )
161
+ sub_cascading_composite_hash.should == { :yet_another_setting => :some_value }
162
+ cascading_composite_hash.should == { :other_setting => :some_value }
163
+
102
164
  end
103
165
 
104
- ############
105
- # delete #
106
- ############
166
+ ###############
167
+ # delete_if #
168
+ ###############
107
169
 
108
- it 'can exclude elements' do
170
+ it 'can delete elements with a block' do
109
171
 
110
- module CascadingConfiguration::Hash::CompositingHash::CCHMock03
111
- include CascadingConfiguration::Variable
112
- end
113
-
114
- module CascadingConfiguration::Hash::CompositingHash::CIMock03A
115
- include CascadingConfiguration::Hash::CompositingHash::CCHMock03
116
- def self.some_configuration
117
- end
172
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
173
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
174
+
175
+ cascading_composite_hash.store( :some_setting, :some_value )
176
+ cascading_composite_hash.should == { :some_setting => :some_value }
177
+ sub_cascading_composite_hash.should == { :some_setting => :some_value }
178
+
179
+ cascading_composite_hash.store( :other_setting, :some_value )
180
+ cascading_composite_hash.should == { :some_setting => :some_value,
181
+ :other_setting => :some_value }
182
+ sub_cascading_composite_hash.should == { :some_setting => :some_value,
183
+ :other_setting => :some_value }
184
+ cascading_composite_hash.delete_if do |key, value|
185
+ key == :some_setting
118
186
  end
119
- module CascadingConfiguration::Hash::CompositingHash::CIMock03B
120
- include CascadingConfiguration::Hash::CompositingHash::CIMock03A
187
+ cascading_composite_hash.should == { :other_setting => :some_value }
188
+ sub_cascading_composite_hash.should == { :other_setting => :some_value }
189
+
190
+ sub_cascading_composite_hash.store( :yet_another_setting, :some_value )
191
+ cascading_composite_hash.should == { :other_setting => :some_value }
192
+ sub_cascading_composite_hash.should == { :other_setting => :some_value,
193
+ :yet_another_setting => :some_value }
194
+ sub_cascading_composite_hash.delete_if do |key, value|
195
+ key == :other_setting
121
196
  end
122
-
123
- ccv = CascadingConfiguration::Variable
124
- ccm_hash = CascadingConfiguration::Hash::CompositingHash::CCHMock03
125
- configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock03A
126
- sub_configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock03B
127
- configuration_name = :some_configuration
128
-
129
- # Without super or sub composites
130
- cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
197
+ cascading_composite_hash.should == { :other_setting => :some_value }
198
+ sub_cascading_composite_hash.should == { :yet_another_setting => :some_value }
199
+
200
+ end
201
+
202
+ #############
203
+ # reject! #
204
+ #############
205
+
206
+ it 'can delete elements with a block' do
207
+
208
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
209
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
210
+
131
211
  cascading_composite_hash.store( :some_setting, :some_value )
132
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value }
133
212
  cascading_composite_hash.should == { :some_setting => :some_value }
213
+ sub_cascading_composite_hash.should == { :some_setting => :some_value }
214
+
134
215
  cascading_composite_hash.store( :other_setting, :some_value )
135
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value,
136
- :other_setting => :some_value }
137
216
  cascading_composite_hash.should == { :some_setting => :some_value,
138
217
  :other_setting => :some_value }
139
- cascading_composite_hash.delete( :some_setting )
140
- cascading_composite_hash.local_cascading_hash.should == { :other_setting => :some_value }
218
+ sub_cascading_composite_hash.should == { :some_setting => :some_value,
219
+ :other_setting => :some_value }
220
+ cascading_composite_hash.reject! do |key, value|
221
+ key == :some_setting
222
+ end
141
223
  cascading_composite_hash.should == { :other_setting => :some_value }
224
+ sub_cascading_composite_hash.should == { :other_setting => :some_value }
142
225
 
143
- # Super with a sub composite
144
- sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( sub_configuration_instance, configuration_name )
145
- sub_cascading_composite_hash.local_cascading_hash.should == {}
146
- sub_cascading_composite_hash.should == { :other_setting => :some_value }
147
226
  sub_cascading_composite_hash.store( :yet_another_setting, :some_value )
148
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
227
+ cascading_composite_hash.should == { :other_setting => :some_value }
149
228
  sub_cascading_composite_hash.should == { :other_setting => :some_value,
150
229
  :yet_another_setting => :some_value }
151
- sub_cascading_composite_hash.delete( :other_setting )
152
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
230
+ sub_cascading_composite_hash.reject! do |key, value|
231
+ key == :other_setting
232
+ end
233
+ cascading_composite_hash.should == { :other_setting => :some_value }
153
234
  sub_cascading_composite_hash.should == { :yet_another_setting => :some_value }
235
+
236
+ end
237
+
238
+ #############
239
+ # keep_if #
240
+ #############
241
+
242
+ it 'can keep elements with a block' do
243
+
244
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
245
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
246
+
247
+ cascading_composite_hash.store( :some_setting, :some_value )
248
+ cascading_composite_hash.should == { :some_setting => :some_value }
249
+ sub_cascading_composite_hash.should == { :some_setting => :some_value }
250
+
251
+ cascading_composite_hash.store( :other_setting, :some_value )
252
+ cascading_composite_hash.should == { :some_setting => :some_value,
253
+ :other_setting => :some_value }
254
+ sub_cascading_composite_hash.should == { :some_setting => :some_value,
255
+ :other_setting => :some_value }
256
+ cascading_composite_hash.keep_if do |key, value|
257
+ key != :some_setting
258
+ end
154
259
  cascading_composite_hash.should == { :other_setting => :some_value }
260
+ sub_cascading_composite_hash.should == { :other_setting => :some_value }
261
+
262
+ sub_cascading_composite_hash.store( :yet_another_setting, :some_value )
263
+ cascading_composite_hash.should == { :other_setting => :some_value }
264
+ sub_cascading_composite_hash.should == { :other_setting => :some_value,
265
+ :yet_another_setting => :some_value }
266
+ sub_cascading_composite_hash.keep_if do |key, value|
267
+ key != :other_setting
268
+ end
269
+ cascading_composite_hash.should == { :other_setting => :some_value }
270
+ sub_cascading_composite_hash.should == { :yet_another_setting => :some_value }
155
271
 
156
272
  end
157
273
 
274
+ #############
275
+ # select! #
276
+ #############
277
+
278
+ it 'can keep elements with a block' do
279
+
280
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
281
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
282
+
283
+ cascading_composite_hash.store( :some_setting, :some_value )
284
+ cascading_composite_hash.should == { :some_setting => :some_value }
285
+ sub_cascading_composite_hash.should == { :some_setting => :some_value }
286
+
287
+ cascading_composite_hash.store( :other_setting, :some_value )
288
+ cascading_composite_hash.should == { :some_setting => :some_value,
289
+ :other_setting => :some_value }
290
+ sub_cascading_composite_hash.should == { :some_setting => :some_value,
291
+ :other_setting => :some_value }
292
+ cascading_composite_hash.select! do |key, value|
293
+ key != :some_setting
294
+ end
295
+ cascading_composite_hash.should == { :other_setting => :some_value }
296
+ sub_cascading_composite_hash.should == { :other_setting => :some_value }
297
+
298
+ sub_cascading_composite_hash.store( :yet_another_setting, :some_value )
299
+ cascading_composite_hash.should == { :other_setting => :some_value }
300
+ sub_cascading_composite_hash.should == { :other_setting => :some_value,
301
+ :yet_another_setting => :some_value }
302
+ sub_cascading_composite_hash.select! do |key, value|
303
+ key != :other_setting
304
+ end
305
+ cascading_composite_hash.should == { :other_setting => :some_value }
306
+ sub_cascading_composite_hash.should == { :yet_another_setting => :some_value }
307
+
308
+ end
309
+
158
310
  ############
159
311
  # merge! #
312
+ # update #
160
313
  ############
161
314
 
162
315
  it 'can merge from another hash' do
163
316
 
164
- module CascadingConfiguration::Hash::CompositingHash::CCHMock04
165
- include CascadingConfiguration::Variable
166
- end
167
-
168
- module CascadingConfiguration::Hash::CompositingHash::CIMock04A
169
- include CascadingConfiguration::Hash::CompositingHash::CCHMock04
170
- def self.some_configuration
171
- end
172
- end
173
- module CascadingConfiguration::Hash::CompositingHash::CIMock04B
174
- include CascadingConfiguration::Hash::CompositingHash::CIMock04A
175
- end
176
-
177
- ccv = CascadingConfiguration::Variable
178
- ccm_hash = CascadingConfiguration::Hash::CompositingHash::CCHMock04
179
- configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock04A
180
- sub_configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock04B
181
- configuration_name = :some_configuration
182
-
183
- # Without super or sub composites
184
- cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
317
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
318
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
319
+
185
320
  cascading_composite_hash.merge!( :some_setting => :some_value )
186
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value }
187
321
  cascading_composite_hash.should == { :some_setting => :some_value }
188
322
  cascading_composite_hash.merge!( :other_setting => :some_value )
189
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value,
190
- :other_setting => :some_value }
191
323
  cascading_composite_hash.should == { :some_setting => :some_value,
192
324
  :other_setting => :some_value }
193
325
 
194
- # Super with a sub composite
195
- sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( sub_configuration_instance, configuration_name )
196
- sub_cascading_composite_hash.local_cascading_hash.should == {}
197
326
  sub_cascading_composite_hash.should == { :some_setting => :some_value,
198
327
  :other_setting => :some_value }
199
328
  sub_cascading_composite_hash.merge!( :yet_another_setting => :some_value )
200
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
201
329
  sub_cascading_composite_hash.should == { :some_setting => :some_value,
202
330
  :other_setting => :some_value,
203
331
  :yet_another_setting => :some_value }
@@ -210,40 +338,16 @@ describe CascadingConfiguration::Hash::CompositingHash do
210
338
 
211
339
  it 'can replace existing elements with others' do
212
340
 
213
- module CascadingConfiguration::Hash::CompositingHash::CCHMock05
214
- include CascadingConfiguration::Variable
215
- end
216
-
217
- module CascadingConfiguration::Hash::CompositingHash::CIMock05A
218
- include CascadingConfiguration::Hash::CompositingHash::CCHMock05
219
- def self.some_configuration
220
- end
221
- end
222
- module CascadingConfiguration::Hash::CompositingHash::CIMock05B
223
- include CascadingConfiguration::Hash::CompositingHash::CIMock05A
224
- end
225
-
226
- ccv = CascadingConfiguration::Variable
227
- ccm_hash = CascadingConfiguration::Hash::CompositingHash::CCHMock05
228
- configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock05A
229
- sub_configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock05B
230
- configuration_name = :some_configuration
231
-
232
- # Without super or sub composites
233
- cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
341
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
342
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
343
+
234
344
  cascading_composite_hash.replace( :some_setting => :some_value )
235
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value }
236
345
  cascading_composite_hash.should == { :some_setting => :some_value }
237
346
  cascading_composite_hash.replace( :other_setting => :some_value )
238
- cascading_composite_hash.local_cascading_hash.should == { :other_setting => :some_value }
239
347
  cascading_composite_hash.should == { :other_setting => :some_value }
240
348
 
241
- # Super with a sub composite
242
- sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( sub_configuration_instance, configuration_name )
243
- sub_cascading_composite_hash.local_cascading_hash.should == {}
244
349
  sub_cascading_composite_hash.should == { :other_setting => :some_value }
245
350
  sub_cascading_composite_hash.replace( :yet_another_setting => :some_value )
246
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
247
351
  sub_cascading_composite_hash.should == { :yet_another_setting => :some_value }
248
352
 
249
353
  end
@@ -254,49 +358,22 @@ describe CascadingConfiguration::Hash::CompositingHash do
254
358
 
255
359
  it 'can shift the first element' do
256
360
 
257
- module CascadingConfiguration::Hash::CompositingHash::CCHMock06
258
- include CascadingConfiguration::Variable
259
- end
260
-
261
- module CascadingConfiguration::Hash::CompositingHash::CIMock06A
262
- include CascadingConfiguration::Hash::CompositingHash::CCHMock06
263
- def self.some_configuration
264
- end
265
- end
266
- module CascadingConfiguration::Hash::CompositingHash::CIMock06B
267
- include CascadingConfiguration::Hash::CompositingHash::CIMock06A
268
- end
269
-
270
- ccv = CascadingConfiguration::Variable
271
- ccm_hash = CascadingConfiguration::Hash::CompositingHash::CCHMock06
272
- configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock06A
273
- sub_configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock06B
274
- configuration_name = :some_configuration
275
-
276
- # Without super or sub composites
277
- cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
361
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
362
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
363
+
278
364
  cascading_composite_hash.store( :some_setting, :some_value )
279
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value }
280
365
  cascading_composite_hash.should == { :some_setting => :some_value }
281
366
  cascading_composite_hash.store( :other_setting, :some_value )
282
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value,
283
- :other_setting => :some_value }
284
367
  cascading_composite_hash.should == { :some_setting => :some_value,
285
368
  :other_setting => :some_value }
286
369
  cascading_composite_hash.shift
287
- cascading_composite_hash.local_cascading_hash.should == { :other_setting => :some_value }
288
370
  cascading_composite_hash.should == { :other_setting => :some_value }
289
371
 
290
- # Super with a sub composite
291
- sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( sub_configuration_instance, configuration_name )
292
- sub_cascading_composite_hash.local_cascading_hash.should == {}
293
372
  sub_cascading_composite_hash.should == { :other_setting => :some_value }
294
373
  sub_cascading_composite_hash.store( :yet_another_setting, :some_value )
295
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
296
374
  sub_cascading_composite_hash.should == { :other_setting => :some_value,
297
375
  :yet_another_setting => :some_value }
298
376
  sub_cascading_composite_hash.shift
299
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
300
377
  sub_cascading_composite_hash.should == { :yet_another_setting => :some_value }
301
378
  cascading_composite_hash.should == { :other_setting => :some_value }
302
379
 
@@ -308,51 +385,24 @@ describe CascadingConfiguration::Hash::CompositingHash do
308
385
 
309
386
  it 'can clear, causing present elements to be excluded' do
310
387
 
311
- module CascadingConfiguration::Hash::CompositingHash::CCHMock07
312
- include CascadingConfiguration::Variable
313
- end
314
-
315
- module CascadingConfiguration::Hash::CompositingHash::CIMock07A
316
- include CascadingConfiguration::Hash::CompositingHash::CCHMock07
317
- def self.some_configuration
318
- end
319
- end
320
- module CascadingConfiguration::Hash::CompositingHash::CIMock07B
321
- include CascadingConfiguration::Hash::CompositingHash::CIMock07A
322
- end
323
-
324
- ccv = CascadingConfiguration::Variable
325
- ccm_hash = CascadingConfiguration::Hash::CompositingHash::CCHMock07
326
- configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock07A
327
- sub_configuration_instance = CascadingConfiguration::Hash::CompositingHash::CIMock07B
328
- configuration_name = :some_configuration
329
-
330
- # Without super or sub composites
331
- cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( configuration_instance, configuration_name )
388
+ cascading_composite_hash = ::CascadingConfiguration::Hash::CompositingHash.new( @configuration_instance, @configuration_name )
389
+ sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( @sub_configuration_instance, @configuration_name )
390
+
332
391
  cascading_composite_hash.store( :some_setting, :some_value )
333
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value }
334
392
  cascading_composite_hash.should == { :some_setting => :some_value }
335
393
  cascading_composite_hash.store( :other_setting, :some_value )
336
- cascading_composite_hash.local_cascading_hash.should == { :some_setting => :some_value,
337
- :other_setting => :some_value }
338
394
  cascading_composite_hash.should == { :some_setting => :some_value,
339
395
  :other_setting => :some_value }
340
396
  cascading_composite_hash.clear
341
- cascading_composite_hash.local_cascading_hash.should == { }
342
397
  cascading_composite_hash.should == { }
343
398
  cascading_composite_hash.store( :other_setting, :some_value )
344
399
  cascading_composite_hash.should == { :other_setting => :some_value }
345
400
 
346
- # Super with a sub composite
347
- sub_cascading_composite_hash = CascadingConfiguration::Hash::CompositingHash.new( sub_configuration_instance, configuration_name )
348
- sub_cascading_composite_hash.local_cascading_hash.should == {}
349
401
  sub_cascading_composite_hash.should == { :other_setting => :some_value }
350
402
  sub_cascading_composite_hash.store( :yet_another_setting, :some_value )
351
- sub_cascading_composite_hash.local_cascading_hash.should == { :yet_another_setting => :some_value }
352
403
  sub_cascading_composite_hash.should == { :other_setting => :some_value,
353
404
  :yet_another_setting => :some_value }
354
405
  sub_cascading_composite_hash.clear
355
- sub_cascading_composite_hash.local_cascading_hash.should == { }
356
406
  sub_cascading_composite_hash.should == { }
357
407
  cascading_composite_hash.should == { :other_setting => :some_value }
358
408