the_array_comparator 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. data/.gitignore +16 -0
  2. data/.rspec +2 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +6 -0
  5. data/CONTRIBUTIONS.md +7 -0
  6. data/Gemfile +30 -0
  7. data/Gemfile.lock +122 -0
  8. data/LICENSE.md +20 -0
  9. data/README.md +121 -0
  10. data/RELEASE_NOTES.md +0 -0
  11. data/Rakefile +93 -0
  12. data/TODO.md +1 -0
  13. data/gemfiles/Gemfile.default +30 -0
  14. data/gemfiles/Gemfile.travis +15 -0
  15. data/lib/the_array_comparator/check.rb +27 -0
  16. data/lib/the_array_comparator/comparator.rb +123 -0
  17. data/lib/the_array_comparator/exceptions.rb +21 -0
  18. data/lib/the_array_comparator/result.rb +21 -0
  19. data/lib/the_array_comparator/sample.rb +28 -0
  20. data/lib/the_array_comparator/strategies/base.rb +41 -0
  21. data/lib/the_array_comparator/strategies/contains_all.rb +35 -0
  22. data/lib/the_array_comparator/strategies/contains_all_with_substring_search.rb +39 -0
  23. data/lib/the_array_comparator/strategies/contains_any.rb +34 -0
  24. data/lib/the_array_comparator/strategies/contains_any_with_substring_search.rb +33 -0
  25. data/lib/the_array_comparator/strategies/contains_not.rb +32 -0
  26. data/lib/the_array_comparator/strategies/contains_not_with_substring_search.rb +33 -0
  27. data/lib/the_array_comparator/strategies/is_equal.rb +30 -0
  28. data/lib/the_array_comparator/strategies/is_not_equal.rb +30 -0
  29. data/lib/the_array_comparator/testing_helper/data_set.rb +63 -0
  30. data/lib/the_array_comparator/testing_helper/test_data.rb +33 -0
  31. data/lib/the_array_comparator/testing_helper.rb +55 -0
  32. data/lib/the_array_comparator/version.rb +6 -0
  33. data/lib/the_array_comparator.rb +34 -0
  34. data/script/console +8 -0
  35. data/script/terminal +12 -0
  36. data/spec/benchmark/benchmark_spec.rb +28 -0
  37. data/spec/check_spec.rb +30 -0
  38. data/spec/comparator/base_spec.rb +16 -0
  39. data/spec/comparator/comparator_spec.rb +198 -0
  40. data/spec/comparator/contains_all_spec.rb +52 -0
  41. data/spec/comparator/contains_all_with_substring_search_spec.rb +41 -0
  42. data/spec/comparator/contains_any_spec.rb +45 -0
  43. data/spec/comparator/contains_any_with_substring_search_spec.rb +35 -0
  44. data/spec/comparator/contains_not_spec.rb +45 -0
  45. data/spec/comparator/contains_not_with_substring_search_spec.rb +28 -0
  46. data/spec/comparator/is_equal_spec.rb +51 -0
  47. data/spec/comparator/is_not_equal_spec.rb +39 -0
  48. data/spec/result_spec.rb +31 -0
  49. data/spec/sample_spec.rb +24 -0
  50. data/spec/spec_helper.rb +38 -0
  51. data/spec/strategies_helper.rb +11 -0
  52. data/spec/testing_helper/testing_helper_spec.rb +27 -0
  53. data/the_array_comparator.gemspec +21 -0
  54. metadata +132 -0
@@ -0,0 +1,198 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Comparator do
5
+ it "let you register classes" do
6
+ comparator_instance = double('TestComparatorInstance')
7
+ comparator_instance.stub(:success?).and_return(true)
8
+
9
+ comparator_klass = double('TestComparatorClass')
10
+ comparator_klass.stub(:new).and_return(comparator_instance)
11
+
12
+ expect {
13
+ Comparator.register(:is_eqal_new, comparator_klass)
14
+ }.to_not raise_error Exceptions::IncompatibleComparator
15
+ end
16
+
17
+ it "fails when registering a not suitable class" do
18
+ comparator_instance = double('TestComparatorInstance')
19
+ comparator_instance.stub(:successasdf?).and_return(true)
20
+
21
+ comparator_klass = double('TestComparatorClass')
22
+ comparator_klass.stub(:new).and_return(comparator_instance)
23
+ expect {
24
+ Comparator.register(:is_eqal_new, comparator_klass)
25
+ }.to raise_error Exceptions::IncompatibleComparator
26
+ end
27
+
28
+ it "let you add check to check for" do
29
+ testrun = Comparator.new
30
+ data = %w{ a b c d}
31
+ keyword = %w{ a }
32
+
33
+ expect {
34
+ testrun.add_check data , :contains_all , keyword
35
+ }.to_not raise_error
36
+ end
37
+
38
+ it "fails if an unknown check is given" do
39
+ testrun = Comparator.new
40
+ data = %w{ a b c d}
41
+ keyword = %w{ a }
42
+
43
+ expect {
44
+ testrun.add_check data , :contains_all_abc , keyword
45
+ }.to raise_error Exceptions::UnknownCheckType
46
+ end
47
+
48
+ it "let you register and use classes" do
49
+ comparator_instance = double('TestComparatorInstance')
50
+ comparator_instance.stub(:success?).and_return(true)
51
+
52
+ comparator_klass = double('TestComparatorClass')
53
+ comparator_klass.stub(:new).and_return(comparator_instance)
54
+
55
+ Comparator.register(:new_comp, comparator_klass)
56
+
57
+ comparator = Comparator.new
58
+ comparator.add_check %w{a}, :new_comp , %{a}
59
+ result = comparator.success?
60
+
61
+ expect(result).to eq(true)
62
+ end
63
+
64
+ it "support some comparators by default" do
65
+ testrun = Comparator.new
66
+ data = %w{ a b c d}
67
+ keyword = %w{ a }
68
+
69
+ expect {
70
+ testrun.add_check data , :contains_all , keyword
71
+ testrun.add_check data , :contains_any , keyword
72
+ testrun.add_check data , :not_contains , keyword
73
+ testrun.add_check data , :contains_all_as_substring , keyword
74
+ testrun.add_check data , :contains_any_as_substring , keyword
75
+ testrun.add_check data , :not_contains_substring , keyword
76
+ testrun.add_check data , :is_equal , keyword
77
+ testrun.add_check data , :is_not_equal , keyword
78
+ }.to_not raise_error
79
+ end
80
+
81
+ it "is successfull if all subtests are successfull" do
82
+ comparator = Comparator.new
83
+ data = %w{ a b c d }
84
+ keyword_overlap = %w{ a b }
85
+ keyword_no_overlap = %w{ e }
86
+
87
+ comparator.add_check data , :contains_all , keyword_overlap
88
+ comparator.add_check data , :not_contains , keyword_no_overlap
89
+
90
+ result = comparator.success?
91
+ expect(result).to eq(true)
92
+ end
93
+
94
+ it "fails if a least one subtest fails", :test => true do
95
+ comparator = Comparator.new
96
+ data = %w{ a b c d }
97
+ keyword_overlap = %w{ a }
98
+ keyword_no_overlap = %w{ e }
99
+
100
+ comparator.add_check data , :contains_all , keyword_overlap #should not fail
101
+ comparator.add_check data , :not_contains , keyword_overlap #should fail
102
+
103
+ result = comparator.success?
104
+ expect(result).to eq(false)
105
+ end
106
+
107
+ it "supports the addition of exceptions as well" do
108
+ comparator = Comparator.new
109
+ data = %w{ ab c d}
110
+ keyword_overlap = %w{ a }
111
+ exceptions = %w{ ab }
112
+
113
+ comparator.add_check data , :contains_any_as_substring , keyword_overlap
114
+ comparator.add_check data , :not_contains_substring , keyword_overlap, :exceptions => exceptions
115
+
116
+ result = comparator.success?
117
+ expect(result).to eq(true)
118
+ end
119
+
120
+ it "list all added check" do
121
+ comparator = Comparator.new
122
+ data = []
123
+ keywords = []
124
+
125
+ check = comparator.add_check data , :contains_any, keywords
126
+ list = comparator.list_checks.first
127
+
128
+ expect(list).to eq(check)
129
+ end
130
+
131
+ it "deletes the n-th check" do
132
+ comparator = Comparator.new
133
+ data = []
134
+ keywords = []
135
+
136
+ test_comps = []
137
+
138
+ test_comps << comparator.add_check(data , :contains_any, keywords)
139
+ comparator.add_check(data , :contains_any, keywords)
140
+ test_comps << comparator.add_check(data , :contains_any, keywords)
141
+ comparator.delete_check(1)
142
+
143
+ list = comparator.list_checks
144
+ expect(list).to eq(test_comps)
145
+ end
146
+
147
+ it "raises an error if a user tries to delete an unexisting check" do
148
+ comparator = Comparator.new
149
+
150
+ expect {
151
+ comparator.delete_last_check
152
+ }.to raise_error Exceptions::CheckDoesNotExist
153
+ end
154
+
155
+ it "deletes the last check" do
156
+ comparator = Comparator.new
157
+ data = []
158
+ keywords = []
159
+
160
+ test_comps = []
161
+
162
+ test_comps << comparator.add_check(data , :contains_any, keywords)
163
+ test_comps << comparator.add_check(data , :contains_any, keywords)
164
+ comparator.add_check(data , :contains_any, keywords)
165
+ comparator.delete_last_check
166
+
167
+ list = comparator.list_checks
168
+ expect(list).to eq(test_comps)
169
+ end
170
+
171
+ it "tells you the result of the check" do
172
+ comparator = Comparator.new
173
+ data = %w{ a b c d }
174
+ keyword_overlap = %w{ a b }
175
+ keyword_no_overlap = %w{ e }
176
+
177
+ comparator.add_check data , :contains_all , keyword_overlap
178
+ comparator.add_check data , :not_contains , keyword_no_overlap
179
+
180
+ comparator.success?
181
+ result = comparator.result
182
+ expect(result.of_checks).to eq(true)
183
+ end
184
+
185
+ it "tells you which check has failed and made the whole thing failed" do
186
+ comparator = Comparator.new
187
+ data = %w{ a b c d }
188
+ keyword_successfull = %w{ a b }
189
+ keyword_failed = %w{ e }
190
+
191
+ comparator.add_check data , :contains_all , keyword_successfull
192
+ c = comparator.add_check data , :contains_all , keyword_failed, tag: 'this is a failed sample'
193
+
194
+ comparator.success?
195
+ result = comparator.result
196
+ expect(result.failed_sample).to eq(c.sample)
197
+ end
198
+ end
@@ -0,0 +1,52 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+ require 'strategies_helper'
4
+
5
+ describe Strategies::ContainsAll do
6
+ let(:data) { %w{ a b c e} }
7
+ let(:keywords_overlap) { %w{ a } }
8
+ let(:keywords_no_overlap) { %w{ d } }
9
+ let(:multiple_keywords_with_one_no_overlap) { %w{ a b cd } }
10
+
11
+ it "fails if keywords are empty" do
12
+ sample = SampleDouble.new(data,[])
13
+ comparator = Strategies::ContainsAll.new(sample)
14
+ expect(comparator.success?).to eq(false)
15
+ end
16
+
17
+ it "fails if data is empty" do
18
+ sample = SampleDouble.new([],keywords_no_overlap)
19
+ comparator = Strategies::ContainsAll.new(sample)
20
+ expect(comparator.success?).to eq(false)
21
+ end
22
+
23
+ it "is successfull if both keywords and data are empty" do
24
+ sample = SampleDouble.new([],[])
25
+ comparator = Strategies::ContainsAll.new(sample)
26
+ expect(comparator.success?).to eq(true)
27
+ end
28
+
29
+ it "is successfull when there's a data overlap" do
30
+ sample = SampleDouble.new(data,keywords_overlap)
31
+ comparator = Strategies::ContainsAll.new(sample)
32
+ expect(comparator.success?).to eq(true)
33
+ end
34
+
35
+ it "doesn't find something if there's no overlap" do
36
+ sample = SampleDouble.new(data,keywords_no_overlap)
37
+ comparator = Strategies::ContainsAll.new(sample)
38
+ expect(comparator.success?).to eq(false)
39
+ end
40
+
41
+ it "fails if not all keywords can be found within the data" do
42
+ sample = SampleDouble.new(data,multiple_keywords_with_one_no_overlap)
43
+ comparator = Strategies::ContainsAll.new(sample)
44
+ expect(comparator.success?).to eq(false)
45
+ end
46
+
47
+ it "doesn't find something if there's an exception" do
48
+ #not implemented since it's not neccessary
49
+ #just leave the unneed element out of the
50
+ #keyword array
51
+ end
52
+ end
@@ -0,0 +1,41 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+ require 'strategies_helper'
4
+
5
+ describe Strategies::ContainsAllWithSubstringSearch do
6
+ let(:data) { %w{ ab c e} }
7
+ let(:exceptions) { %w{ b } }
8
+ let(:keywords_overlap) { %w{ a } }
9
+ let(:keywords_no_overlap) { %w{ d } }
10
+ let(:multiple_keywords_with_one_no_overlap) { %w{ a b cd } }
11
+
12
+ it "is successfull when there's a data overlap" do
13
+ sample = SampleDouble.new(data,keywords_overlap)
14
+ comparator = Strategies::ContainsAllWithSubstringSearch.new(sample)
15
+ expect(comparator.success?).to eq(true)
16
+ end
17
+
18
+ it "doesn't find something if there's no overlap" do
19
+ sample = SampleDouble.new(data,keywords_no_overlap)
20
+ comparator = Strategies::ContainsAllWithSubstringSearch.new(sample)
21
+ expect(comparator.success?).to eq(false)
22
+ end
23
+
24
+ it "doesn't find something if there's an exception defined" do
25
+ sample = SampleDouble.new(data,keywords_overlap, exceptions)
26
+ comparator = Strategies::ContainsAllWithSubstringSearch.new(sample)
27
+ expect(comparator.success?).to eq(false)
28
+ end
29
+
30
+ it "doesn't find something if there's an exception defined" do
31
+ sample = SampleDouble.new(data,multiple_keywords_with_one_no_overlap, exceptions)
32
+ comparator = Strategies::ContainsAllWithSubstringSearch.new(sample)
33
+ expect(comparator.success?).to eq(false)
34
+ end
35
+
36
+ it "fails if not all keywords can be found within the data" do
37
+ sample = SampleDouble.new(data,multiple_keywords_with_one_no_overlap)
38
+ comparator = Strategies::ContainsAllWithSubstringSearch.new(sample)
39
+ expect(comparator.success?).to eq(false)
40
+ end
41
+ end
@@ -0,0 +1,45 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+ require 'strategies_helper'
4
+
5
+ describe Strategies::ContainsAny do
6
+ let(:data) { %w{ a b c e} }
7
+ let(:keywords_overlap) { %w{ a } }
8
+ let(:keywords_no_overlap) { %w{ d } }
9
+
10
+ it "fails if keywords are empty" do
11
+ sample = SampleDouble.new(data,[])
12
+ comparator = Strategies::ContainsAny.new(sample)
13
+ expect(comparator.success?).to eq(false)
14
+ end
15
+
16
+ it "fails if data is empty" do
17
+ sample = SampleDouble.new([],keywords_no_overlap)
18
+ comparator = Strategies::ContainsAny.new(sample)
19
+ expect(comparator.success?).to eq(false)
20
+ end
21
+
22
+ it "is successfull if both keywords and data are empty" do
23
+ sample = SampleDouble.new([],[])
24
+ comparator = Strategies::ContainsAny.new(sample)
25
+ expect(comparator.success?).to eq(true)
26
+ end
27
+
28
+ it "is successfull when there's a data overlap" do
29
+ sample = SampleDouble.new(data,keywords_overlap)
30
+ comparator = Strategies::ContainsAny.new(sample)
31
+ expect(comparator.success?).to eq(true)
32
+ end
33
+
34
+ it "doesn't find something if there's no overlap" do
35
+ sample = SampleDouble.new(data,keywords_no_overlap)
36
+ comparator = Strategies::ContainsAny.new(sample)
37
+ expect(comparator.success?).to eq(false)
38
+ end
39
+
40
+ it "doesn't find something if there's an exception" do
41
+ #not implemented since it's not neccessary
42
+ #just leave the unneed element out of the
43
+ #keyword array
44
+ end
45
+ end
@@ -0,0 +1,35 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+ require 'strategies_helper'
4
+
5
+ describe Strategies::ContainsAnyWithSubstringSearch do
6
+ let(:data) { %w{ ab c e} }
7
+ let(:exceptions) { %w{ b} }
8
+ let(:keywords_overlap) { %w{ a } }
9
+ let(:multiple_overlap) { %w{ a c d} }
10
+ let(:keywords_no_overlap) { %w{ d } }
11
+
12
+ it "is successfull when there's a data overlap (at least one element)" do
13
+ sample = SampleDouble.new(data,keywords_overlap)
14
+ comparator = Strategies::ContainsAnyWithSubstringSearch.new(sample)
15
+ expect(comparator.success?).to eq(true)
16
+ end
17
+
18
+ it "doesn't find something if there's no overlap" do
19
+ sample = SampleDouble.new(data,keywords_no_overlap)
20
+ comparator = Strategies::ContainsAnyWithSubstringSearch.new(sample)
21
+ expect(comparator.success?).to eq(false)
22
+ end
23
+
24
+ it "doesn't find something if there's an exception defined" do
25
+ sample = SampleDouble.new(data,keywords_overlap, exceptions)
26
+ comparator = Strategies::ContainsAnyWithSubstringSearch.new(sample)
27
+ expect(comparator.success?).to eq(false)
28
+ end
29
+
30
+ it "is successfull, if there's a least one match (second match 'c' -> exception -> no match) " do
31
+ sample = SampleDouble.new(data,multiple_overlap, exceptions)
32
+ comparator = Strategies::ContainsAnyWithSubstringSearch.new(sample)
33
+ expect(comparator.success?).to eq(true)
34
+ end
35
+ end
@@ -0,0 +1,45 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+ require 'strategies_helper'
4
+
5
+ describe Strategies::ContainsNot do
6
+ let(:data) { %w{ a b c e} }
7
+ let(:keywords_overlap) { %w{ a } }
8
+ let(:keywords_no_overlap) { %w{ d } }
9
+
10
+ it "is successfull if keywords are empty" do
11
+ sample = SampleDouble.new(data,[])
12
+ comparator = Strategies::ContainsNot.new(sample)
13
+ expect(comparator.success?).to eq(true)
14
+ end
15
+
16
+ it "is successfull if data is empty" do
17
+ sample = SampleDouble.new([],keywords_no_overlap)
18
+ comparator = Strategies::ContainsNot.new(sample)
19
+ expect(comparator.success?).to eq(true)
20
+ end
21
+
22
+ it "fails if both keywords and data are empty" do
23
+ sample = SampleDouble.new([],[])
24
+ comparator = Strategies::ContainsNot.new(sample)
25
+ expect(comparator.success?).to eq(false)
26
+ end
27
+
28
+ it "is successfull if there's a data overlap" do
29
+ sample = SampleDouble.new(data,keywords_overlap)
30
+ comparator = Strategies::ContainsNot.new(sample)
31
+ expect(comparator.success?).to eq(false)
32
+ end
33
+
34
+ it "doesn't find something if there's no overlap" do
35
+ sample = SampleDouble.new(data,keywords_no_overlap)
36
+ comparator = Strategies::ContainsNot.new(sample)
37
+ expect(comparator.success?).to eq(true)
38
+ end
39
+
40
+ it "doesn't find something if there's an exception" do
41
+ #not implemented since it's not neccessary
42
+ #just leave the unneed element out of the
43
+ #keyword array
44
+ end
45
+ end
@@ -0,0 +1,28 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+ require 'strategies_helper'
4
+
5
+ describe Strategies::ContainsNotWithSubstringSearch do
6
+ let(:data) { %w{ ab c e } }
7
+ let(:exceptions) { %w{ a } }
8
+ let(:keywords_overlap) { %w{ ab } }
9
+ let(:keywords_no_overlap) { %w{ d } }
10
+
11
+ it "is successfull when there's a no overlap" do
12
+ sample = SampleDouble.new(data,keywords_no_overlap)
13
+ comparator = Strategies::ContainsNotWithSubstringSearch.new(sample)
14
+ expect(comparator.success?).to eq(true)
15
+ end
16
+
17
+ it "doesn't find something if there's an overlap" do
18
+ sample = SampleDouble.new(data,keywords_overlap)
19
+ comparator = Strategies::ContainsNotWithSubstringSearch.new(sample)
20
+ expect(comparator.success?).to eq(false)
21
+ end
22
+
23
+ it "is successfull although there's an overlap, but an exception defined" do
24
+ sample = SampleDouble.new(data,keywords_overlap, exceptions)
25
+ comparator = Strategies::ContainsNotWithSubstringSearch.new(sample)
26
+ expect(comparator.success?).to eq(true)
27
+ end
28
+ end
@@ -0,0 +1,51 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+ require 'strategies_helper'
4
+
5
+ describe Strategies::IsEqual do
6
+ let(:data) { %w{ a } }
7
+ let(:keywords_overlap) { %w{ a } }
8
+ let(:keywords_no_overlap) { %w{ d } }
9
+
10
+ it "fails if keywords are empty" do
11
+ sample = SampleDouble.new(data,[])
12
+ comparator = Strategies::IsEqual.new(sample)
13
+ expect(comparator.success?).to eq(false)
14
+ end
15
+
16
+ it "fails if data is empty" do
17
+ sample = SampleDouble.new([],keywords_no_overlap)
18
+ comparator = Strategies::IsEqual.new(sample)
19
+ expect(comparator.success?).to eq(false)
20
+ end
21
+
22
+ it "is successfull if both keywords and data are empty" do
23
+ sample = SampleDouble.new([],[])
24
+ comparator = Strategies::IsEqual.new(sample)
25
+ expect(comparator.success?).to eq(true)
26
+ end
27
+
28
+ it "is successfull if data and keywords are equal" do
29
+ sample = SampleDouble.new(data,keywords_overlap)
30
+ comparator = Strategies::IsEqual.new(sample)
31
+ expect(comparator.success?).to eq(true)
32
+ end
33
+
34
+ it "fails if data and keywords are different" do
35
+ sample = SampleDouble.new(data,keywords_no_overlap)
36
+ comparator = Strategies::IsEqual.new(sample)
37
+ expect(comparator.success?).to eq(false)
38
+ end
39
+
40
+ #tested at this point for all classes
41
+ it "displays a warning if an exception is defined (is not supported by this strategy)" do
42
+ needed_msg = "Exceptions are not supported by this strategy.\n"
43
+ sample = SampleDouble.new(data,keywords_no_overlap,%w{a})
44
+
45
+ msg = capture(:stderr) do
46
+ Strategies::IsEqual.new(sample)
47
+ end
48
+
49
+ expect(msg).to eq(needed_msg)
50
+ end
51
+ end
@@ -0,0 +1,39 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+ require 'strategies_helper'
4
+
5
+ describe Strategies::IsNotEqual do
6
+ let(:data) { %w{ a } }
7
+ let(:keywords_overlap) { %w{ a } }
8
+ let(:keywords_no_overlap) { %w{ d } }
9
+
10
+ it "is successfull if keywords are empty" do
11
+ sample = SampleDouble.new(data,[])
12
+ comparator = Strategies::IsNotEqual.new(sample)
13
+ expect(comparator.success?).to eq(true)
14
+ end
15
+
16
+ it "is successfull if data is empty" do
17
+ sample = SampleDouble.new([],keywords_no_overlap)
18
+ comparator = Strategies::IsNotEqual.new(sample)
19
+ expect(comparator.success?).to eq(true)
20
+ end
21
+
22
+ it "fails if both keywords and data are empty" do
23
+ sample = SampleDouble.new([],[])
24
+ comparator = Strategies::IsNotEqual.new(sample)
25
+ expect(comparator.success?).to eq(false)
26
+ end
27
+
28
+ it "fails if data and keywords are equal" do
29
+ sample = SampleDouble.new(data,keywords_overlap)
30
+ comparator = Strategies::IsNotEqual.new(sample)
31
+ expect(comparator.success?).to eq(false)
32
+ end
33
+
34
+ it "is successfull if data and keywords are different" do
35
+ sample = SampleDouble.new(data,keywords_no_overlap)
36
+ comparator = Strategies::IsNotEqual.new(sample)
37
+ expect(comparator.success?).to eq(true)
38
+ end
39
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Result do
4
+ sample_klass = Class.new do
5
+ attr_accessor :data, :keywords, :exceptions, :tag
6
+
7
+ def initialize(data,keywords,exceptions,tag)
8
+ @data = data
9
+ @keywords = keywords
10
+ @exceptions = exceptions
11
+ @tag = tag
12
+ end
13
+ end
14
+
15
+ it "returns true if _no_ sample is defined" do
16
+ result = Result.new()
17
+ expect(result.of_checks).to eq(true)
18
+ end
19
+
20
+ it "returns false if sample is defined" do
21
+ data = %w{ data }
22
+ keywords = %w{ keywords }
23
+ exceptions = %w{ exceptions }
24
+ tag = 'this is a tag'
25
+ sample = sample_klass.new(data,keywords,exceptions,tag)
26
+
27
+ result = Result.new(sample)
28
+ expect(result.of_checks).to eq(false)
29
+ end
30
+
31
+ end
@@ -0,0 +1,24 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Sample do
5
+ it "takes nothing by default" do
6
+ expect {
7
+ Sample.new()
8
+ }.to_not raise_error
9
+ end
10
+
11
+ it "takes data, keywords, exceptions, tags" do
12
+ data = %w{ data }
13
+ keywords = %w{ keywords }
14
+ exceptions = %w{ exceptions }
15
+ tag = 'this is a tag'
16
+
17
+ sample = Sample.new(data, keywords, exceptions, tag)
18
+
19
+ expect(sample.data).to eq(data)
20
+ expect(sample.keywords).to eq(keywords)
21
+ expect(sample.exceptions).to eq(exceptions)
22
+ expect(sample.tag).to eq(tag)
23
+ end
24
+ end
@@ -0,0 +1,38 @@
1
+ #encoding: utf-8
2
+
3
+ $LOAD_PATH << File.expand_path('../lib' , File.dirname(__FILE__))
4
+
5
+ unless ENV['TRAVIS_CI'] == 'true'
6
+ require 'pry'
7
+ require 'debugger'
8
+ require 'ap'
9
+ require 'ffaker'
10
+ require 'benchmark'
11
+ end
12
+
13
+ require 'stringio'
14
+ require 'tempfile'
15
+
16
+ require 'active_support/core_ext/object/blank'
17
+ require 'active_support/core_ext/numeric/time'
18
+ #require 'active_support/core_ext/kernel/reporting'
19
+
20
+ unless ENV['TRAVIS_CI'] == 'true'
21
+ require 'simplecov'
22
+ SimpleCov.start
23
+ end
24
+
25
+ require 'the_array_comparator'
26
+ require 'the_array_comparator/testing_helper/data_set'
27
+ require 'the_array_comparator/testing_helper/test_data'
28
+ require 'the_array_comparator/testing_helper'
29
+
30
+ RSpec.configure do |c|
31
+ c.treat_symbols_as_metadata_keys_with_true_values = true
32
+ # c.filter_run_including :focus => true
33
+ end
34
+
35
+ include TheArrayComparator
36
+ include TheArrayComparator::TestingHelper
37
+
38
+ #ENV['PATH'] = '/bin'
@@ -0,0 +1,11 @@
1
+ class SampleDouble
2
+
3
+ attr_accessor :data, :keywords, :exceptions,:tag
4
+
5
+ def initialize(data=[],keywords=[],exceptions=[],tag=nil)
6
+ @keywords = keywords
7
+ @data = data
8
+ @exceptions = exceptions
9
+ @tag = tag
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ #enconding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe "#generate_testdata" do
5
+
6
+ it "spread the testdata when amount of data is lower than keywords" do
7
+ data = generate_testdata(keywords: %w{a b c d}, raw_data: %w{data1 data2})
8
+ expect(data[2]).to eq('a')
9
+ end
10
+
11
+ it "spread the testdata when amount of data is equal to the amount of the keywords" do
12
+ data = generate_testdata(keywords: %w{a b c d}, raw_data: %w{data1 data2 data3 data4})
13
+ expect(data[1]).to eq('a')
14
+ expect(data[2]).to eq('data2')
15
+ end
16
+
17
+ it "spread the testdata when amount of data is larger than keywords" do
18
+ data = generate_testdata(keywords: %w{a b c d}, raw_data: %w{data1 data2 data3 data4 data5})
19
+ expect(data[1]).to eq('a')
20
+ end
21
+
22
+ it "spread the testdata when amount of data is not a multiply of keywords (it cares for the rest)" do
23
+ data = generate_testdata(keywords: %w{a b c d}, raw_data: [ 'data' ] * 99 )
24
+ expect(data[2]).to eq('data')
25
+ expect(data[24]).to eq('a')
26
+ end
27
+ end