cascading-configuration-array-sorted-unique 2.0.3 → 2.1.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.
data/README.md CHANGED
@@ -203,7 +203,7 @@ end
203
203
 
204
204
  (The MIT License)
205
205
 
206
- Copyright (c) 2011 Asher
206
+ Copyright (c) Asher
207
207
 
208
208
  Permission is hereby granted, free of charge, to any person obtaining
209
209
  a copy of this software and associated documentation files (the
@@ -36,7 +36,7 @@ See README.md
36
36
 
37
37
  (The MIT License)
38
38
 
39
- Copyright (c) 2011 Asher
39
+ Copyright (c) Asher
40
40
 
41
41
  Permission is hereby granted, free of charge, to any person obtaining
42
42
  a copy of this software and associated documentation files (the
@@ -1,31 +1,21 @@
1
1
 
2
+ require 'compositing-array-sorted-unique'
3
+
2
4
  if $__cascading_configuration__spec__development
3
- require_relative '../../settings-array-sorted/lib/cascading-configuration-array-sorted.rb'
4
- require_relative '../../settings-array-unique/lib/cascading-configuration-array-unique.rb'
5
+ require_relative '../../variable/lib/cascading-configuration-variable.rb'
5
6
  else
6
- require 'cascading-configuration-array-sorted'
7
- require 'cascading-configuration-array-unique'
7
+ require 'cascading-configuration-variable'
8
8
  end
9
9
 
10
10
  module ::CascadingConfiguration
11
11
  module Array
12
12
  module Sorted
13
13
  module Unique
14
- class CompositingArray < ::CascadingConfiguration::Array::Unique::CompositingArray
15
- end
16
- module ModuleSupportMethods
17
- end
18
- module Interface
19
- end
20
14
  end
21
15
  end
22
16
  end
23
17
  end
24
18
 
25
- require_relative 'cascading-configuration-array-sorted-unique/_private_/CascadingConfiguration/Array/Sorted/Unique/CompositingArray.rb'
26
- require_relative 'cascading-configuration-array-sorted-unique/_private_/CascadingConfiguration/Array/Sorted/Unique/ModuleSupportMethods.rb'
27
-
28
- require_relative 'cascading-configuration-array-sorted-unique/CascadingConfiguration/Array/Sorted/Unique/Interface.rb'
29
19
  require_relative 'cascading-configuration-array-sorted-unique/CascadingConfiguration/Array/Sorted/Unique.rb'
30
20
 
31
21
 
@@ -2,11 +2,56 @@
2
2
  module ::CascadingConfiguration::Array::Sorted::Unique
3
3
 
4
4
  # Configuration modules for storage of settings arrays
5
- include ::CascadingConfiguration::Variable
5
+ include ::CascadingConfiguration::Inheritance
6
6
 
7
- # Interface to declare configuration settings arrays
8
- include ::CascadingConfiguration::Array::Sorted::Unique::Interface
7
+ #####################################################
8
+ # attr_configuration_sorted_unique_array #
9
+ # attr_module_configuration_sorted_unique_array #
10
+ # attr_local_configuration_sorted_unique_array #
11
+ # attr_object_configuration_sorted_unique_array #
12
+ # attr_instance_configuration_sorted_unique_array #
13
+ #####################################################
9
14
 
10
- extend ::CascadingConfiguration::Array::Sorted::Unique::ModuleSupportMethods
15
+ def attr_configuration_sorted_unique_array( *configuration_names, & define_block ) ;; end
16
+ def attr_module_configuration_sorted_unique_array( *configuration_names, & define_block ) ;; end
17
+ def attr_class_configuration_sorted_unique_array( *configuration_names, & define_block ) ;; end
18
+ def attr_local_configuration_sorted_unique_array( *configuration_names, & define_block ) ;; end
19
+ def attr_object_configuration_sorted_unique_array( *configuration_names, & define_block ) ;; end
20
+ def attr_instance_configuration_sorted_unique_array( *configuration_names, & define_block ) ;; end
21
+
22
+ ccusa = self
23
+ cca = ::CascadingConfiguration::Array
24
+ ccv = ::CascadingConfiguration::Variable
25
+ ccm = ::CascadingConfiguration::Methods
26
+
27
+ setter_proc = ::Proc.new do |instance, configuration_name, value|
28
+
29
+ return instance.__send__( configuration_name ).replace( value )
30
+
31
+ end
32
+
33
+ getter_proc = ::Proc.new do |instance, configuration_name|
34
+
35
+ composite_sorted_unique_array = nil
36
+
37
+ if ccv.has_configuration_variable?( instance, configuration_name )
38
+ composite_sorted_unique_array = ccv.get_configuration_variable( instance, configuration_name )
39
+ else
40
+ parent_composite_array = nil
41
+ if ancestor = ::CascadingConfiguration::Variable.ancestor( instance, configuration_name )
42
+ parent_composite_array = ancestor.__send__( configuration_name )
43
+ end
44
+ composite_sorted_unique_array = ::CompositingArray::Sorted::Unique.new( parent_composite_array )
45
+ ccv.set_configuration_variable( instance, configuration_name, composite_sorted_unique_array )
46
+ end
47
+
48
+ return composite_sorted_unique_array
49
+
50
+ end
51
+
52
+ ccm.declare_compositing_configuration_object( self,
53
+ :sorted_unique_array,
54
+ setter_proc,
55
+ getter_proc )
11
56
 
12
57
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cascading-configuration-array-sorted-unique
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-04 00:00:00.000000000 Z
12
+ date: 2012-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cascading-configuration-array-sorted
16
- requirement: &70115966368380 !ruby/object:Gem::Requirement
16
+ requirement: &70315544127600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70115966368380
24
+ version_requirements: *70315544127600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: cascading-configuration-array-unique
27
- requirement: &70115966367680 !ruby/object:Gem::Requirement
27
+ requirement: &70315544126820 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,19 +32,15 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70115966367680
35
+ version_requirements: *70315544126820
36
36
  description: Provides :attr_configuration_unique_sorted_array.
37
37
  email: asher@ridiculouspower.com
38
38
  executables: []
39
39
  extensions: []
40
40
  extra_rdoc_files: []
41
41
  files:
42
- - lib/cascading-configuration-array-sorted-unique/_private_/CascadingConfiguration/Array/Sorted/Unique/CompositingArray.rb
43
- - lib/cascading-configuration-array-sorted-unique/_private_/CascadingConfiguration/Array/Sorted/Unique/ModuleSupportMethods.rb
44
- - lib/cascading-configuration-array-sorted-unique/CascadingConfiguration/Array/Sorted/Unique/Interface.rb
45
42
  - lib/cascading-configuration-array-sorted-unique/CascadingConfiguration/Array/Sorted/Unique.rb
46
43
  - lib/cascading-configuration-array-sorted-unique.rb
47
- - spec/_private_/CascadingConfiguration/Array/Sorted/Unique/CompositingArray_spec.rb
48
44
  - spec/CascadingConfiguration/Array/Sorted/Unique_spec.rb
49
45
  - README.md
50
46
  - README.rdoc
@@ -68,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
64
  version: '0'
69
65
  requirements: []
70
66
  rubyforge_project: cascading-configuration-array-sorted-unique
71
- rubygems_version: 1.8.10
67
+ rubygems_version: 1.8.11
72
68
  signing_key:
73
69
  specification_version: 3
74
70
  summary: Support package for cascading-configuration.
@@ -1,112 +0,0 @@
1
-
2
- module ::CascadingConfiguration::Array::Sorted::Unique::Interface
3
-
4
- ######################
5
- # self.setter_proc #
6
- ######################
7
-
8
- def self.setter_proc( configuration_name )
9
-
10
- return Proc.new do |array|
11
-
12
- return ::CascadingConfiguration::Array::Sorted::Unique.
13
- set_composite_sorted_unique_array( self,
14
- configuration_name,
15
- array )
16
-
17
- end
18
-
19
- end
20
-
21
- ######################
22
- # self.getter_proc #
23
- ######################
24
-
25
- def self.getter_proc( configuration_name )
26
-
27
- return Proc.new do
28
-
29
- return ::CascadingConfiguration::Array::Sorted::Unique.
30
- composite_sorted_unique_array( self, configuration_name )
31
-
32
- end
33
-
34
- end
35
-
36
- ############################################
37
- # attr_configuration_sorted_unique_array #
38
- ############################################
39
-
40
- # defines configuration in class or module
41
- # configuration cascades downward to instance including all classes or modules in-between
42
- def attr_configuration_sorted_unique_array( *configuration_names )
43
-
44
- return ::CascadingConfiguration::Variable.
45
- define_cascading_configuration( self,
46
- ::CascadingConfiguration::Array::Sorted::Unique::Interface,
47
- *configuration_names )
48
-
49
- end
50
-
51
- ###################################################
52
- # attr_module_configuration_sorted_unique_array #
53
- ###################################################
54
-
55
- # defines configuration in class or module
56
- # configuration cascades downward to last class or module
57
- def attr_module_configuration_sorted_unique_array( *configuration_names )
58
-
59
- return ::CascadingConfiguration::Variable.
60
- define_module_configuration( self,
61
- ::CascadingConfiguration::Array::Sorted::Unique::Interface,
62
- *configuration_names )
63
-
64
- end
65
- alias_method :attr_class_configuration_sorted_unique_array, :attr_module_configuration_sorted_unique_array
66
-
67
- ##################################################
68
- # attr_local_configuration_sorted_unique_array #
69
- ##################################################
70
-
71
- # defines configuration in present class or module context
72
- # configuration does not cascade
73
- def attr_local_configuration_sorted_unique_array( *configuration_names )
74
-
75
- return ::CascadingConfiguration::Variable.
76
- define_local_configuration( self,
77
- ::CascadingConfiguration::Array::Sorted::Unique::Interface,
78
- *configuration_names )
79
-
80
- end
81
-
82
- ###################################################
83
- # attr_object_configuration_sorted_unique_array #
84
- ###################################################
85
-
86
- # defines configuration in present instance
87
- # configuration does not cascade
88
- def attr_object_configuration_sorted_unique_array( *configuration_names )
89
-
90
- return ::CascadingConfiguration::Variable.
91
- define_object_configuration( self,
92
- ::CascadingConfiguration::Array::Sorted::Unique::Interface,
93
- *configuration_names )
94
-
95
- end
96
-
97
- #####################################################
98
- # attr_instance_configuration_sorted_unique_array #
99
- #####################################################
100
-
101
- # defines configuration in present class or module context
102
- # configuration does not cascade
103
- def attr_instance_configuration_sorted_unique_array( *configuration_names )
104
-
105
- return ::CascadingConfiguration::Variable.
106
- define_instance_configuration( self,
107
- ::CascadingConfiguration::Array::Sorted::Unique::Interface,
108
- *configuration_names )
109
-
110
- end
111
-
112
- end
@@ -1,17 +0,0 @@
1
-
2
- class ::CascadingConfiguration::Array::Sorted::Unique::CompositingArray <
3
- ::CascadingConfiguration::Array::Unique::CompositingArray
4
-
5
- include CascadingConfiguration::Array::Sorted::CompositingArray::Interface
6
-
7
- ###########
8
- # uniq! #
9
- ###########
10
-
11
- def uniq!
12
-
13
- return self
14
-
15
- end
16
-
17
- end
@@ -1,47 +0,0 @@
1
-
2
- module ::CascadingConfiguration::Array::Sorted::Unique::ModuleSupportMethods
3
-
4
- ###################################
5
- # composite_sorted_unique_array #
6
- ###################################
7
-
8
- def composite_sorted_unique_array( configuration_instance, configuration_name )
9
-
10
- composite_sorted_unique_array = nil
11
-
12
- if ::CascadingConfiguration::Variable.has_configuration_variable?( configuration_instance,
13
- configuration_name )
14
- composite_sorted_unique_array = ::CascadingConfiguration::Variable.
15
- get_configuration_variable( configuration_instance,
16
- configuration_name )
17
- else
18
- composite_sorted_unique_array = ::CascadingConfiguration::Array::
19
- Sorted::Unique::CompositingArray.
20
- new( configuration_instance, configuration_name )
21
- end
22
-
23
- return composite_sorted_unique_array
24
-
25
- end
26
-
27
- #######################################
28
- # set_composite_sorted_unique_array #
29
- #######################################
30
-
31
- def set_composite_sorted_unique_array( configuration_instance, configuration_name, array )
32
-
33
- composite_sorted_unique_array = composite_sorted_unique_array( configuration_instance,
34
- configuration_name )
35
-
36
- # we want the array to supplant existing config
37
- # clear the array (excludes everything explicitly)
38
- composite_sorted_unique_array.clear
39
-
40
- # push array elements (removes anything excluded from exclude)
41
- composite_sorted_unique_array.push( *array )
42
-
43
- return composite_sorted_unique_array
44
-
45
- end
46
-
47
- end
@@ -1,1008 +0,0 @@
1
-
2
- if $__cascading_configuration__spec__development
3
- require_relative '../../../../../../lib/cascading-configuration-array-sorted-unique.rb'
4
- else
5
- require 'cascading-configuration-array-sorted-unique'
6
- end
7
-
8
- describe CascadingConfiguration::Array::Sorted::Unique::CompositingArray do
9
-
10
- before :all do
11
-
12
- module ::CascadingConfiguration::Array::Sorted::Unique::CompositingArray::MockA
13
- # needed for ccv ancestor determination
14
- def self.some_configuration
15
- end
16
- end
17
- module ::CascadingConfiguration::Array::Sorted::Unique::CompositingArray::MockB
18
- end
19
-
20
- @configuration_instance = CascadingConfiguration::Array::Sorted::Unique::CompositingArray::MockA
21
- @sub_configuration_instance = CascadingConfiguration::Array::Sorted::Unique::CompositingArray::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_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
37
-
38
- cascading_composite_array.instance_variable_get( :@super_composite_array ).should == nil
39
- cascading_composite_array.should == []
40
- cascading_composite_array.push( :A, :B, :C, :D )
41
-
42
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
43
- sub_cascading_composite_array.instance_variable_get( :@super_composite_array ).should == cascading_composite_array
44
- sub_cascading_composite_array.should == [ :A, :B, :C, :D ]
45
-
46
- end
47
-
48
- ##################################################################################################
49
- # private #####################################################################################
50
- ##################################################################################################
51
-
52
- ##################################################
53
- # update_corresponding_index_for_parent_change #
54
- ##################################################
55
-
56
- it 'can update tracked parent indices for parent insert/delete' do
57
-
58
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
59
- cascading_composite_array.push( :A, :B )
60
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
61
-
62
- sub_cascading_composite_array.instance_eval do
63
- @local_index_for_parent_index[ 0 ].should == 0
64
- @local_index_for_parent_index[ 1 ].should == 1
65
- @local_index_for_parent_index[ 2 ].should == nil
66
- # insert 1 in parent before parent-1
67
- update_corresponding_index_for_parent_change( 1, 1 )
68
- @local_index_for_parent_index[ 0 ].should == 0
69
- # no longer a parent-1 index (has to be set separately)
70
- @local_index_for_parent_index[ 1 ].should == nil
71
- # parent-1 is now parent-2
72
- @local_index_for_parent_index[ 2 ].should == 2
73
- @parent_and_interpolated_object_count.should == 3
74
- end
75
-
76
- end
77
-
78
- #################################################
79
- # update_corresponding_index_for_local_change #
80
- #################################################
81
-
82
- it 'can update tracked parent indices for local insert/delete' do
83
-
84
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
85
- cascading_composite_array.push( :A, :B )
86
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
87
-
88
- sub_cascading_composite_array.instance_eval do
89
- @local_index_for_parent_index[ 0 ].should == 0
90
- @local_index_for_parent_index[ 1 ].should == 1
91
- @local_index_for_parent_index[ 2 ].should == nil
92
- # insert 1 before parent-1
93
- update_corresponding_index_for_local_change( 1, 1 )
94
- @local_index_for_parent_index[ 0 ].should == 0
95
- # new index for parent-1 is 2
96
- @local_index_for_parent_index[ 1 ].should == 2
97
- @local_index_for_parent_index[ 2 ].should == nil
98
- @parent_and_interpolated_object_count.should == 3
99
- end
100
-
101
- end
102
-
103
- ###########################################
104
- # update_as_sub_array_for_parent_insert #
105
- ###########################################
106
-
107
- it 'can handle updating itself as a sub-array when told an insert has occurred in parent' do
108
-
109
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
110
- cascading_composite_array.push( :A, :B )
111
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
112
-
113
- sub_cascading_composite_array.instance_eval do
114
- @local_index_for_parent_index[ 0 ].should == 0
115
- @local_index_for_parent_index[ 1 ].should == 1
116
- @local_index_for_parent_index[ 2 ].should == nil
117
- # insert 1 before parent-1
118
- update_as_sub_array_for_parent_insert( 1, :C )
119
- @local_index_for_parent_index[ 0 ].should == 0
120
- # new parent index parent-1 inserted for :C
121
- @local_index_for_parent_index[ 1 ].should == 1
122
- # new index for parent-1 is parent-2
123
- @local_index_for_parent_index[ 2 ].should == 2
124
- @parent_and_interpolated_object_count.should == 3
125
- end
126
-
127
- end
128
-
129
- ########################################
130
- # update_as_sub_array_for_parent_set #
131
- ########################################
132
-
133
- it 'can handle updating itself as a sub-array when told a set has occurred in parent' do
134
-
135
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
136
- cascading_composite_array.push( :A, :B )
137
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
138
-
139
- sub_cascading_composite_array.instance_eval do
140
- @local_index_for_parent_index[ 0 ].should == 0
141
- @local_index_for_parent_index[ 1 ].should == 1
142
- @local_index_for_parent_index[ 2 ].should == nil
143
- # set for parent-1
144
- update_as_sub_array_for_parent_set( 1, :C )
145
- @local_index_for_parent_index[ 0 ].should == 0
146
- @local_index_for_parent_index[ 1 ].should == 0
147
- @local_index_for_parent_index[ 2 ].should == nil
148
- @parent_and_interpolated_object_count.should == 2
149
- end
150
-
151
- end
152
-
153
- ###########################################
154
- # update_as_sub_array_for_parent_delete #
155
- ###########################################
156
-
157
- it 'can handle updating itself as a sub-array when told a delete has occurred in parent' do
158
-
159
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
160
- cascading_composite_array.push( :A, :B )
161
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
162
-
163
- sub_cascading_composite_array.instance_eval do
164
- @local_index_for_parent_index[ 0 ].should == 0
165
- @local_index_for_parent_index[ 1 ].should == 1
166
- @local_index_for_parent_index[ 2 ].should == nil
167
- # delete parent-1
168
- update_as_sub_array_for_parent_delete( 1 )
169
- @local_index_for_parent_index[ 0 ].should == 0
170
- @local_index_for_parent_index[ 1 ].should == 1
171
- @local_index_for_parent_index[ 2 ].should == nil
172
- @parent_and_interpolated_object_count.should == 1
173
- end
174
-
175
- end
176
-
177
- ##################################################################################################
178
- # public ######################################################################################
179
- ##################################################################################################
180
-
181
- #########
182
- # []= #
183
- #########
184
-
185
- it 'can add elements' do
186
-
187
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
188
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
189
-
190
- cascading_composite_array[ 0 ] = :A
191
- cascading_composite_array.should == [ :A ]
192
- sub_cascading_composite_array.should == [ :A ]
193
-
194
- cascading_composite_array[ 1 ] = :B
195
- cascading_composite_array.should == [ :A, :B ]
196
- sub_cascading_composite_array.should == [ :A, :B ]
197
-
198
- sub_cascading_composite_array[ 0 ] = :C
199
- cascading_composite_array.should == [ :A, :B ]
200
- sub_cascading_composite_array.should == [ :B, :C ]
201
-
202
- sub_cascading_composite_array[ 0 ] = :B
203
- cascading_composite_array.should == [ :A, :B ]
204
- sub_cascading_composite_array.should == [ :B, :C ]
205
-
206
- sub_cascading_composite_array[ 2 ] = :C
207
- cascading_composite_array.should == [ :A, :B ]
208
- sub_cascading_composite_array.should == [ :B, :C ]
209
-
210
- cascading_composite_array[ 0 ] = :D
211
- cascading_composite_array.should == [ :B, :D ]
212
- sub_cascading_composite_array.should == [ :C ]
213
-
214
- end
215
-
216
- ############
217
- # insert #
218
- ############
219
-
220
- it 'can insert elements' do
221
-
222
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
223
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
224
-
225
- cascading_composite_array.insert( 3, :D )
226
- cascading_composite_array.should == [ nil, :D ]
227
- sub_cascading_composite_array.should == [ nil, :D ]
228
-
229
- cascading_composite_array.insert( 1, :B )
230
- cascading_composite_array.should == [ nil, :B, :D ]
231
- sub_cascading_composite_array.should == [ nil, :B, :D ]
232
-
233
- cascading_composite_array.insert( 2, :C )
234
- cascading_composite_array.should == [ nil, :B, :C, :D ]
235
- sub_cascading_composite_array.should == [ nil, :B, :C, :D ]
236
-
237
- sub_cascading_composite_array.insert( 0, :E )
238
- cascading_composite_array.should == [ nil, :B, :C, :D ]
239
- sub_cascading_composite_array.should == [ nil, :B, :C, :D, :E ]
240
-
241
- sub_cascading_composite_array.insert( 4, :F )
242
- cascading_composite_array.should == [ nil, :B, :C, :D ]
243
- sub_cascading_composite_array.should == [ nil, :B, :C, :D, :E, :F ]
244
-
245
- end
246
-
247
- ##########
248
- # push #
249
- # << #
250
- ##########
251
-
252
- it 'can add elements' do
253
-
254
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
255
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
256
-
257
- cascading_composite_array << :A
258
- cascading_composite_array.should == [ :A ]
259
- sub_cascading_composite_array.should == [ :A ]
260
-
261
- cascading_composite_array << :B
262
- cascading_composite_array.should == [ :A, :B ]
263
- sub_cascading_composite_array.should == [ :A, :B ]
264
-
265
- sub_cascading_composite_array << :C
266
- cascading_composite_array.should == [ :A, :B ]
267
- sub_cascading_composite_array.should == [ :A, :B, :C ]
268
-
269
- sub_cascading_composite_array << :B
270
- cascading_composite_array.should == [ :A, :B ]
271
- sub_cascading_composite_array.should == [ :A, :B, :C ]
272
-
273
- end
274
-
275
- ############
276
- # concat #
277
- # + #
278
- ############
279
-
280
- it 'can add elements' do
281
-
282
- # NOTE: this breaks + by causing it to modify the array like +=
283
- # The alternative was worse.
284
-
285
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
286
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
287
-
288
- cascading_composite_array.concat( [ :A ] )
289
- cascading_composite_array.should == [ :A ]
290
- sub_cascading_composite_array.should == [ :A ]
291
-
292
- cascading_composite_array += [ :B ]
293
- cascading_composite_array.should == [ :A, :B ]
294
- sub_cascading_composite_array.should == [ :A, :B ]
295
-
296
- sub_cascading_composite_array.concat( [ :C ] )
297
- cascading_composite_array.should == [ :A, :B ]
298
- sub_cascading_composite_array.should == [ :A, :B, :C ]
299
-
300
- sub_cascading_composite_array += [ :B ]
301
- cascading_composite_array.should == [ :A, :B ]
302
- sub_cascading_composite_array.should == [ :A, :B, :C ]
303
-
304
- end
305
-
306
- ####################
307
- # delete_objects #
308
- ####################
309
-
310
- it 'can delete multiple elements' do
311
-
312
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
313
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
314
-
315
- cascading_composite_array += [ :A, :B ]
316
- cascading_composite_array.should == [ :A, :B ]
317
- sub_cascading_composite_array.should == [ :A, :B ]
318
-
319
- cascading_composite_array.delete_objects( :A, :B )
320
- cascading_composite_array.should == [ ]
321
- sub_cascading_composite_array.should == [ ]
322
-
323
- sub_cascading_composite_array += [ :B, :C, :D ]
324
- cascading_composite_array.should == [ ]
325
- sub_cascading_composite_array.should == [ :B, :C, :D ]
326
-
327
- sub_cascading_composite_array.delete_objects( :C, :B )
328
- cascading_composite_array.should == [ ]
329
- sub_cascading_composite_array.should == [ :D ]
330
-
331
- end
332
-
333
- #######
334
- # - #
335
- #######
336
-
337
- it 'can exclude elements' do
338
-
339
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
340
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
341
-
342
- cascading_composite_array.push( :A )
343
- cascading_composite_array.should == [ :A ]
344
- sub_cascading_composite_array.should == [ :A ]
345
-
346
- cascading_composite_array -= [ :A ]
347
- cascading_composite_array.should == [ ]
348
- sub_cascading_composite_array.should == [ ]
349
-
350
- cascading_composite_array.push( :B )
351
- cascading_composite_array.should == [ :B ]
352
- sub_cascading_composite_array.should == [ :B ]
353
-
354
- sub_cascading_composite_array.push( :C )
355
- cascading_composite_array.should == [ :B ]
356
- sub_cascading_composite_array.should == [ :B, :C ]
357
-
358
- sub_cascading_composite_array -= [ :B ]
359
- cascading_composite_array.should == [ :B ]
360
- sub_cascading_composite_array.should == [ :C ]
361
-
362
- end
363
-
364
- ############
365
- # delete #
366
- ############
367
-
368
- it 'can delete elements' do
369
-
370
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
371
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
372
-
373
- cascading_composite_array.push( :A )
374
- cascading_composite_array.should == [ :A ]
375
- sub_cascading_composite_array.should == [ :A ]
376
-
377
- cascading_composite_array.delete( :A )
378
- cascading_composite_array.should == [ ]
379
- sub_cascading_composite_array.should == [ ]
380
-
381
- cascading_composite_array.push( :B )
382
- cascading_composite_array.should == [ :B ]
383
- sub_cascading_composite_array.should == [ :B ]
384
-
385
- sub_cascading_composite_array.push( :C )
386
- cascading_composite_array.should == [ :B ]
387
- sub_cascading_composite_array.should == [ :B, :C ]
388
-
389
- sub_cascading_composite_array.delete( :B )
390
- cascading_composite_array.should == [ :B ]
391
- sub_cascading_composite_array.should == [ :C ]
392
-
393
- end
394
-
395
- ###############
396
- # delete_at #
397
- ###############
398
-
399
- it 'can delete by indexes' do
400
-
401
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
402
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
403
-
404
- cascading_composite_array.push( :A )
405
- cascading_composite_array.should == [ :A ]
406
- sub_cascading_composite_array.should == [ :A ]
407
-
408
- cascading_composite_array.delete_at( 0 )
409
- cascading_composite_array.should == [ ]
410
- sub_cascading_composite_array.should == [ ]
411
-
412
- cascading_composite_array.push( :B )
413
- cascading_composite_array.should == [ :B ]
414
- sub_cascading_composite_array.should == [ :B ]
415
-
416
- sub_cascading_composite_array.push( :C )
417
- cascading_composite_array.should == [ :B ]
418
- sub_cascading_composite_array.should == [ :B, :C ]
419
-
420
- sub_cascading_composite_array.delete_at( 0 )
421
- cascading_composite_array.should == [ :B ]
422
- sub_cascading_composite_array.should == [ :C ]
423
-
424
- end
425
-
426
- #######################
427
- # delete_at_indexes #
428
- #######################
429
-
430
- it 'can delete by indexes' do
431
-
432
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
433
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
434
-
435
- cascading_composite_array.push( :A, :B, :C )
436
- cascading_composite_array.should == [ :A, :B, :C ]
437
- sub_cascading_composite_array.should == [ :A, :B, :C ]
438
-
439
- cascading_composite_array.delete_at_indexes( 0, 1 )
440
- cascading_composite_array.should == [ :C ]
441
- sub_cascading_composite_array.should == [ :C ]
442
-
443
- sub_cascading_composite_array.push( :C, :B )
444
- cascading_composite_array.should == [ :C ]
445
- sub_cascading_composite_array.should == [ :B, :C ]
446
-
447
- sub_cascading_composite_array.delete_at_indexes( 0, 1, 2 )
448
- cascading_composite_array.should == [ :C ]
449
- sub_cascading_composite_array.should == [ ]
450
-
451
- end
452
-
453
- ###############
454
- # delete_if #
455
- ###############
456
-
457
- it 'can delete by block' do
458
-
459
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
460
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
461
-
462
- cascading_composite_array.push( :A, :B, :C )
463
- cascading_composite_array.should == [ :A, :B, :C ]
464
- sub_cascading_composite_array.should == [ :A, :B, :C ]
465
- cascading_composite_array.delete_if do |object|
466
- object != :C
467
- end
468
- cascading_composite_array.should == [ :C ]
469
- sub_cascading_composite_array.should == [ :C ]
470
-
471
- sub_cascading_composite_array.push( :C, :B )
472
- cascading_composite_array.should == [ :C ]
473
- sub_cascading_composite_array.should == [ :B, :C ]
474
- sub_cascading_composite_array.delete_if do |object|
475
- object != nil
476
- end
477
- sub_cascading_composite_array.should == [ ]
478
- cascading_composite_array.should == [ :C ]
479
-
480
- cascading_composite_array.delete_if.is_a?( Enumerator ).should == true
481
-
482
- end
483
-
484
- #############
485
- # keep_if #
486
- #############
487
-
488
- it 'can keep by block' do
489
-
490
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
491
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
492
-
493
- cascading_composite_array.push( :A, :B, :C )
494
- cascading_composite_array.should == [ :A, :B, :C ]
495
- sub_cascading_composite_array.should == [ :A, :B, :C ]
496
- cascading_composite_array.keep_if do |object|
497
- object == :C
498
- end
499
- cascading_composite_array.should == [ :C ]
500
- sub_cascading_composite_array.should == [ :C ]
501
-
502
- sub_cascading_composite_array.push( :C, :B )
503
- cascading_composite_array.should == [ :C ]
504
- sub_cascading_composite_array.should == [ :B, :C ]
505
- sub_cascading_composite_array.keep_if do |object|
506
- object == nil
507
- end
508
- cascading_composite_array.should == [ :C ]
509
- sub_cascading_composite_array.should == [ ]
510
-
511
- end
512
-
513
- ##############
514
- # compact! #
515
- ##############
516
-
517
- it 'can compact' do
518
-
519
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
520
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
521
-
522
- cascading_composite_array.push( :A, nil, :B, nil, :C, nil )
523
- cascading_composite_array.should == [ nil, :A, :B, :C ]
524
- sub_cascading_composite_array.should == [ nil, :A, :B, :C ]
525
- cascading_composite_array.compact!
526
- cascading_composite_array.should == [ :A, :B, :C ]
527
- sub_cascading_composite_array.should == [ :A, :B, :C ]
528
-
529
- sub_cascading_composite_array.push( nil, :D )
530
- cascading_composite_array.should == [ :A, :B, :C ]
531
- sub_cascading_composite_array.should == [ nil, :A, :B, :C, :D ]
532
- sub_cascading_composite_array.compact!
533
- cascading_composite_array.should == [ :A, :B, :C ]
534
- sub_cascading_composite_array.should == [ :A, :B, :C, :D ]
535
-
536
- end
537
-
538
- ##############
539
- # flatten! #
540
- ##############
541
-
542
- it 'can flatten' do
543
-
544
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
545
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
546
-
547
- cascading_composite_array.push( :A, [ :F_A, :F_B ], :B, [ :F_C ], :C, [ :F_D ], [ :F_E ] )
548
- cascading_composite_array.should == [ :A, [ :F_A, :F_B ], :B, [ :F_C ], :C, [ :F_D ], [ :F_E ] ]
549
- sub_cascading_composite_array.should == [ :A, [ :F_A, :F_B ], :B, [ :F_C ], :C, [ :F_D ], [ :F_E ] ]
550
- cascading_composite_array.flatten!
551
- cascading_composite_array.should == [ :A, :B, :C, :F_A, :F_B, :F_C, :F_D, :F_E ]
552
- sub_cascading_composite_array.should == [ :A, :B, :C, :F_A, :F_B, :F_C, :F_D, :F_E ]
553
-
554
- sub_cascading_composite_array.push( [ :F_F, :F_G ], :D, [ :F_H ] )
555
- cascading_composite_array.should == [ :A, :B, :C, :F_A, :F_B, :F_C, :F_D, :F_E ]
556
- sub_cascading_composite_array.should == [ :A, :B, :C, :D, :F_A, :F_B, :F_C, :F_D, :F_E, [ :F_F, :F_G ], [ :F_H ] ]
557
- sub_cascading_composite_array.flatten!
558
- cascading_composite_array.should == [ :A, :B, :C, :F_A, :F_B, :F_C, :F_D, :F_E ]
559
- sub_cascading_composite_array.should == [ :A, :B, :C, :D, :F_A, :F_B, :F_C, :F_D, :F_E, :F_F, :F_G, :F_H ]
560
-
561
- end
562
-
563
- #############
564
- # reject! #
565
- #############
566
-
567
- it 'can reject' do
568
-
569
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
570
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
571
-
572
- cascading_composite_array.push( :A, :B, :C )
573
- cascading_composite_array.should == [ :A, :B, :C ]
574
- sub_cascading_composite_array.should == [ :A, :B, :C ]
575
- cascading_composite_array.reject! do |object|
576
- object != :C
577
- end
578
- cascading_composite_array.should == [ :C ]
579
- sub_cascading_composite_array.should == [ :C ]
580
-
581
- sub_cascading_composite_array.push( :C, :B )
582
- cascading_composite_array.should == [ :C ]
583
- sub_cascading_composite_array.should == [ :B, :C ]
584
- sub_cascading_composite_array.reject! do |object|
585
- object != nil
586
- end
587
- sub_cascading_composite_array.should == [ ]
588
- cascading_composite_array.should == [ :C ]
589
-
590
- cascading_composite_array.reject!.is_a?( Enumerator ).should == true
591
-
592
- end
593
-
594
- #############
595
- # replace #
596
- #############
597
-
598
- it 'can replace self' do
599
-
600
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
601
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
602
-
603
- cascading_composite_array.push( :A, :B, :C )
604
- cascading_composite_array.should == [ :A, :B, :C ]
605
- sub_cascading_composite_array.should == [ :A, :B, :C ]
606
- cascading_composite_array.replace( [ :D, :E, :F ] )
607
- cascading_composite_array.should == [ :D, :E, :F ]
608
- sub_cascading_composite_array.should == [ :D, :E, :F ]
609
-
610
- cascading_composite_array.should == [ :D, :E, :F ]
611
- sub_cascading_composite_array.should == [ :D, :E, :F ]
612
- sub_cascading_composite_array.replace( [ :G, :H, :I ] )
613
- cascading_composite_array.should == [ :D, :E, :F ]
614
- sub_cascading_composite_array.should == [ :G, :H, :I ]
615
-
616
- end
617
-
618
- ##############
619
- # reverse! #
620
- ##############
621
-
622
- it 'can reverse self' do
623
-
624
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
625
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
626
-
627
- cascading_composite_array.push( :A, :B, :C )
628
- cascading_composite_array.should == [ :A, :B, :C ]
629
- sub_cascading_composite_array.should == [ :A, :B, :C ]
630
- cascading_composite_array.reverse!
631
- cascading_composite_array.should == [ :C, :B, :A ]
632
- sub_cascading_composite_array.should == [ :C, :B, :A ]
633
-
634
- cascading_composite_array.should == [ :C, :B, :A ]
635
- sub_cascading_composite_array.should == [ :C, :B, :A ]
636
- sub_cascading_composite_array.reverse!
637
- cascading_composite_array.should == [ :C, :B, :A ]
638
- sub_cascading_composite_array.should == [ :A, :B, :C ]
639
-
640
- end
641
-
642
- #############
643
- # rotate! #
644
- #############
645
-
646
- it 'can rotate self' do
647
-
648
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
649
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
650
-
651
- cascading_composite_array.push( :A, :B, :C )
652
- cascading_composite_array.should == [ :A, :B, :C ]
653
- sub_cascading_composite_array.should == [ :A, :B, :C ]
654
-
655
- cascading_composite_array.rotate!
656
- cascading_composite_array.should == [ :A, :B, :C ]
657
- sub_cascading_composite_array.should == [ :A, :B, :C ]
658
-
659
- cascading_composite_array.rotate!( -1 )
660
- cascading_composite_array.should == [ :A, :B, :C ]
661
- sub_cascading_composite_array.should == [ :A, :B, :C ]
662
-
663
- sub_cascading_composite_array.rotate!( 2 )
664
- cascading_composite_array.should == [ :A, :B, :C ]
665
- sub_cascading_composite_array.should == [ :A, :B, :C ]
666
-
667
- end
668
-
669
- #############
670
- # select! #
671
- #############
672
-
673
- it 'can keep by select' do
674
-
675
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
676
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
677
-
678
- cascading_composite_array.push( :A, :B, :C )
679
- cascading_composite_array.should == [ :A, :B, :C ]
680
- sub_cascading_composite_array.should == [ :A, :B, :C ]
681
- cascading_composite_array.select! do |object|
682
- object == :C
683
- end
684
- cascading_composite_array.should == [ :C ]
685
- sub_cascading_composite_array.should == [ :C ]
686
-
687
- sub_cascading_composite_array.push( :C, :B )
688
- cascading_composite_array.should == [ :C ]
689
- sub_cascading_composite_array.should == [ :B, :C ]
690
- sub_cascading_composite_array.select! do |object|
691
- object == nil
692
- end
693
- cascading_composite_array.should == [ :C ]
694
- sub_cascading_composite_array.should == [ ]
695
-
696
- cascading_composite_array.select!.is_a?( Enumerator ).should == true
697
-
698
- end
699
-
700
- ##############
701
- # shuffle! #
702
- ##############
703
-
704
- it 'can shuffle self' do
705
-
706
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
707
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
708
-
709
- cascading_composite_array.push( :A, :B, :C )
710
- cascading_composite_array.should == [ :A, :B, :C ]
711
- sub_cascading_composite_array.should == cascading_composite_array
712
-
713
- first_shuffle_version = cascading_composite_array.dup
714
- cascading_composite_array.shuffle!
715
- cascading_composite_array.should == first_shuffle_version
716
- sub_cascading_composite_array.should == cascading_composite_array
717
-
718
- first_shuffle_version = sub_cascading_composite_array.dup
719
- sub_cascading_composite_array.shuffle!
720
- sub_cascading_composite_array.should == first_shuffle_version
721
- sub_cascading_composite_array.should == cascading_composite_array
722
-
723
- end
724
-
725
- ##############
726
- # collect! #
727
- # map! #
728
- ##############
729
-
730
- it 'can replace by collect/map' do
731
-
732
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
733
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
734
-
735
- cascading_composite_array.push( :A, :B, :C )
736
- cascading_composite_array.should == [ :A, :B, :C ]
737
- sub_cascading_composite_array.should == [ :A, :B, :C ]
738
- cascading_composite_array.collect! do |object|
739
- :C
740
- end
741
- cascading_composite_array.should == [ :C, ]
742
- sub_cascading_composite_array.should == [ :C ]
743
-
744
- sub_cascading_composite_array.collect! do |object|
745
- :A
746
- end
747
- cascading_composite_array.should == [ :C ]
748
- sub_cascading_composite_array.should == [ :A ]
749
-
750
- cascading_composite_array.collect!.is_a?( Enumerator ).should == true
751
-
752
- end
753
-
754
- ###########
755
- # sort! #
756
- ###########
757
-
758
- it 'can replace by collect/map' do
759
-
760
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
761
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
762
-
763
- cascading_composite_array.push( :A, :B, :C )
764
- cascading_composite_array.should == [ :A, :B, :C ]
765
- sub_cascading_composite_array.should == [ :A, :B, :C ]
766
- cascading_composite_array.sort! do |a, b|
767
- if a < b
768
- 1
769
- elsif a > b
770
- -1
771
- elsif a == b
772
- 0
773
- end
774
- end
775
- cascading_composite_array.should == [ :A, :B, :C ]
776
- sub_cascading_composite_array.should == [ :A, :B, :C ]
777
-
778
- sub_cascading_composite_array.sort! do |a, b|
779
- if a < b
780
- -1
781
- elsif a > b
782
- 1
783
- elsif a == b
784
- 0
785
- end
786
- end
787
- cascading_composite_array.should == [ :A, :B, :C ]
788
- sub_cascading_composite_array.should == [ :A, :B, :C ]
789
-
790
- cascading_composite_array.sort!
791
- cascading_composite_array.should == [ :A, :B, :C ]
792
- sub_cascading_composite_array.should == [ :A, :B, :C ]
793
-
794
- end
795
-
796
- ##############
797
- # sort_by! #
798
- ##############
799
-
800
- it 'can replace by collect/map' do
801
-
802
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
803
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
804
-
805
- cascading_composite_array.push( :A, :B, :C )
806
- cascading_composite_array.should == [ :A, :B, :C ]
807
- sub_cascading_composite_array.should == [ :A, :B, :C ]
808
- cascading_composite_array.sort_by! do |object|
809
- case object
810
- when :A
811
- :B
812
- when :B
813
- :A
814
- when :C
815
- :C
816
- end
817
- end
818
- cascading_composite_array.should == [ :A, :B, :C ]
819
- sub_cascading_composite_array.should == [ :A, :B, :C ]
820
-
821
- sub_cascading_composite_array.sort_by! do |object|
822
- case object
823
- when :A
824
- :C
825
- when :B
826
- :B
827
- when :C
828
- :A
829
- end
830
- end
831
- cascading_composite_array.should == [ :A, :B, :C ]
832
- sub_cascading_composite_array.should == [ :A, :B, :C ]
833
-
834
- cascading_composite_array.sort_by!.is_a?( Enumerator ).should == true
835
-
836
- end
837
-
838
- ###########
839
- # uniq! #
840
- ###########
841
-
842
- it 'can remove non-unique elements' do
843
-
844
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
845
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
846
-
847
- cascading_composite_array.push( :A, :B, :C, :C, :C, :B, :A )
848
- cascading_composite_array.should == [ :A, :B, :C ]
849
- sub_cascading_composite_array.should == [ :A, :B, :C ]
850
- cascading_composite_array.uniq!
851
- cascading_composite_array.should == [ :A, :B, :C ]
852
- sub_cascading_composite_array.should == [ :A, :B, :C ]
853
-
854
- sub_cascading_composite_array.push( :C, :B )
855
- cascading_composite_array.should == [ :A, :B, :C ]
856
- sub_cascading_composite_array.should == [ :A, :B, :C ]
857
- sub_cascading_composite_array.uniq!
858
- cascading_composite_array.should == [ :A, :B, :C ]
859
- sub_cascading_composite_array.should == [ :A, :B, :C ]
860
-
861
- end
862
-
863
- #############
864
- # unshift #
865
- #############
866
-
867
- it 'can unshift onto the first element' do
868
-
869
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
870
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
871
-
872
- cascading_composite_array += :A
873
- cascading_composite_array.should == [ :A ]
874
- sub_cascading_composite_array.should == [ :A ]
875
-
876
- cascading_composite_array.unshift( :B )
877
- cascading_composite_array.should == [ :A, :B ]
878
- sub_cascading_composite_array.should == [ :A, :B ]
879
-
880
- sub_cascading_composite_array.unshift( :C )
881
- cascading_composite_array.should == [ :A, :B ]
882
- sub_cascading_composite_array.should == [ :A, :B, :C ]
883
-
884
- end
885
-
886
- #########
887
- # pop #
888
- #########
889
-
890
- it 'can pop the final element' do
891
-
892
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
893
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
894
-
895
- cascading_composite_array += :A
896
- cascading_composite_array.should == [ :A ]
897
- sub_cascading_composite_array.should == [ :A ]
898
-
899
- cascading_composite_array.pop.should == :A
900
- cascading_composite_array.should == [ ]
901
- sub_cascading_composite_array.should == [ ]
902
-
903
- cascading_composite_array += :B
904
- cascading_composite_array.should == [ :B ]
905
- sub_cascading_composite_array.should == [ :B ]
906
-
907
- sub_cascading_composite_array += :C
908
- cascading_composite_array.should == [ :B ]
909
- sub_cascading_composite_array.should == [ :B, :C ]
910
- sub_cascading_composite_array.pop.should == :C
911
- cascading_composite_array.should == [ :B ]
912
- sub_cascading_composite_array.should == [ :B ]
913
-
914
- end
915
-
916
- ###########
917
- # shift #
918
- ###########
919
-
920
- it 'can shift the first element' do
921
-
922
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
923
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
924
-
925
- cascading_composite_array += :A
926
- cascading_composite_array.should == [ :A ]
927
- sub_cascading_composite_array.should == [ :A ]
928
-
929
- cascading_composite_array.shift.should == :A
930
- cascading_composite_array.should == [ ]
931
- sub_cascading_composite_array.should == [ ]
932
-
933
- cascading_composite_array += :B
934
- cascading_composite_array.should == [ :B ]
935
- sub_cascading_composite_array.should == [ :B ]
936
-
937
- sub_cascading_composite_array += :C
938
- cascading_composite_array.should == [ :B ]
939
- sub_cascading_composite_array.should == [ :B, :C ]
940
- sub_cascading_composite_array.shift.should == :B
941
- cascading_composite_array.should == [ :B ]
942
- sub_cascading_composite_array.should == [ :C ]
943
-
944
- end
945
-
946
- ############
947
- # slice! #
948
- ############
949
-
950
- it 'can slice elements' do
951
-
952
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
953
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
954
-
955
- cascading_composite_array += :A
956
- cascading_composite_array.should == [ :A ]
957
- sub_cascading_composite_array.should == [ :A ]
958
-
959
- cascading_composite_array.slice!( 0, 1 ).should == [ :A ]
960
- cascading_composite_array.should == [ ]
961
- sub_cascading_composite_array.should == [ ]
962
-
963
- cascading_composite_array += :B
964
- cascading_composite_array.should == [ :B ]
965
- sub_cascading_composite_array.should == [ :B ]
966
-
967
- sub_cascading_composite_array += :C
968
- cascading_composite_array.should == [ :B ]
969
- sub_cascading_composite_array.should == [ :B, :C ]
970
-
971
- sub_cascading_composite_array.slice!( 0, 1 ).should == [ :B ]
972
- cascading_composite_array.should == [ :B ]
973
- sub_cascading_composite_array.should == [ :C ]
974
-
975
- end
976
-
977
- ###########
978
- # clear #
979
- ###########
980
-
981
- it 'can clear, causing present elements to be excluded' do
982
-
983
- cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @configuration_instance, @configuration_name )
984
- sub_cascading_composite_array = CascadingConfiguration::Array::Sorted::Unique::CompositingArray.new( @sub_configuration_instance, @configuration_name )
985
-
986
- cascading_composite_array += :A
987
- cascading_composite_array.should == [ :A ]
988
- sub_cascading_composite_array.should == [ :A ]
989
-
990
- cascading_composite_array.clear
991
- cascading_composite_array.should == [ ]
992
- sub_cascading_composite_array.should == [ ]
993
-
994
- cascading_composite_array += :B
995
- cascading_composite_array.should == [ :B ]
996
- sub_cascading_composite_array.should == [ :B ]
997
-
998
- sub_cascading_composite_array += :C
999
- cascading_composite_array.should == [ :B ]
1000
- sub_cascading_composite_array.should == [ :B, :C ]
1001
-
1002
- sub_cascading_composite_array.clear
1003
- cascading_composite_array.should == [ :B ]
1004
- sub_cascading_composite_array.should == [ ]
1005
-
1006
- end
1007
-
1008
- end