cascading-configuration-hash 1.6.2 → 2.0.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.
@@ -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