dither 0.0.6 → 0.0.7
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -1
- data/lib/dither/ipog_helper.rb +4 -4
- data/lib/dither/test_case.rb +6 -14
- data/lib/dither/version.rb +1 -1
- data/lib/dither.rb +3 -0
- data/spec/dither/dither_spec.rb +63 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84c66959b6921cffc06d9cac3b5bf925cff4e05d
|
4
|
+
data.tar.gz: c55fe4643b714ec9fb2e5a12e088c21576cc3b9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2fafce619a3975a7836d6ee89bb26c486a7de41f36a5dfc6a0b8bc249ac3995976d860591c9de024a309f741b01dd76cea24705b6bacbd6475df26f74f200ee
|
7
|
+
data.tar.gz: c861ce9af750be22f8071c21d0939576b9885a3f08292375090e3c03393094b94db7cef2d1f58e9e4b0105f5a9c5166c7dd5a22b49c2f47d06efbcf14863839a
|
data/Gemfile.lock
CHANGED
data/lib/dither/ipog_helper.rb
CHANGED
@@ -14,10 +14,10 @@ module Dither
|
|
14
14
|
.map(&:to_set)
|
15
15
|
end
|
16
16
|
|
17
|
-
raise 't must be >= 2' if t < 2
|
18
|
-
raise 't must be <= params.length' if t > params.length
|
17
|
+
raise Dither::Error, 't must be >= 2' if t < 2
|
18
|
+
raise Dither::Error, 't must be <= params.length' if t > params.length
|
19
19
|
params.each do |param|
|
20
|
-
raise 'param length must be > 1' if param.length < 2
|
20
|
+
raise Dither::Error, 'param length must be > 1' if param.length < 2
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -103,7 +103,7 @@ module Dither
|
|
103
103
|
.map(&:flatten)
|
104
104
|
.map { |a| TestCase.create(params, unbound_param_pool, a) }
|
105
105
|
end
|
106
|
-
result
|
106
|
+
result.to_set
|
107
107
|
end
|
108
108
|
|
109
109
|
|
data/lib/dither/test_case.rb
CHANGED
@@ -46,18 +46,6 @@ module Dither
|
|
46
46
|
arr
|
47
47
|
end
|
48
48
|
|
49
|
-
def self.from_array(arr)
|
50
|
-
test_case = TestCase.new
|
51
|
-
arr.each_with_index do |i, e|
|
52
|
-
if e.nil?
|
53
|
-
test_case << unbound_param_pool[i]
|
54
|
-
else
|
55
|
-
test_case << bound_param_pool[i][e]
|
56
|
-
end
|
57
|
-
end
|
58
|
-
test_case
|
59
|
-
end
|
60
|
-
|
61
49
|
# return nil if there is a conflict
|
62
50
|
# return self if no conflict
|
63
51
|
def merge_without_conflict(i, test_case, &block)
|
@@ -66,9 +54,10 @@ module Dither
|
|
66
54
|
.each_with_index do |arr, a|
|
67
55
|
first, second = arr
|
68
56
|
|
69
|
-
next if (first == second) || second.nil?
|
70
57
|
if first.nil? && second.nil?
|
71
58
|
new_elements << unbound_param_pool[a]
|
59
|
+
elsif (first == second) || second.nil?
|
60
|
+
next
|
72
61
|
elsif first.nil?
|
73
62
|
new_elements << bound_param_pool[a][second]
|
74
63
|
else
|
@@ -81,7 +70,10 @@ module Dither
|
|
81
70
|
|
82
71
|
return nil if block_given? && block.call(new_self)
|
83
72
|
|
84
|
-
new_elements.each
|
73
|
+
new_elements.each do |a|
|
74
|
+
self.delete(unbound_param_pool[a.i]) unless a.unbound?
|
75
|
+
self << a
|
76
|
+
end
|
85
77
|
self
|
86
78
|
end
|
87
79
|
end # TestCase
|
data/lib/dither/version.rb
CHANGED
data/lib/dither.rb
CHANGED
@@ -3,11 +3,14 @@ require 'set'
|
|
3
3
|
|
4
4
|
module Dither
|
5
5
|
|
6
|
+
class Error < StandardError; end
|
7
|
+
|
6
8
|
def self.all_pairs(params, t = 2, opts = {})
|
7
9
|
IPOG.new(params, t, opts).run
|
8
10
|
end
|
9
11
|
|
10
12
|
def self.mipog(params, t = 2, opts = {})
|
13
|
+
raise Error, 'mipog does not support constraints' if opts.key?(:constraints)
|
11
14
|
MIPOG.new(params, t, opts).run
|
12
15
|
end
|
13
16
|
end # Dither
|
data/spec/dither/dither_spec.rb
CHANGED
@@ -2,16 +2,20 @@ require File.expand_path('../../spec_helper.rb', __FILE__)
|
|
2
2
|
|
3
3
|
describe Dither do
|
4
4
|
|
5
|
+
it 'mipog does not support constraints' do
|
6
|
+
expect { Dither.mipog([[1,1],[1,2]], 2, :constraints => []) }.to raise_error(Dither::Error, 'mipog does not support constraints')
|
7
|
+
end
|
8
|
+
|
5
9
|
it 't must be >= 2' do
|
6
|
-
expect { Dither.all_pairs([], 0) }.to raise_error('t must be >= 2')
|
10
|
+
expect { Dither.all_pairs([], 0) }.to raise_error(Dither::Error, 't must be >= 2')
|
7
11
|
end
|
8
12
|
|
9
13
|
it 't must be <= params.length' do
|
10
|
-
expect { Dither.all_pairs([(0...3).to_a], 4) }.to raise_error('t must be <= params.length')
|
14
|
+
expect { Dither.all_pairs([(0...3).to_a], 4) }.to raise_error(Dither::Error,'t must be <= params.length')
|
11
15
|
end
|
12
16
|
|
13
17
|
it 'param length must be > 1' do
|
14
|
-
expect { Dither.all_pairs([[], []], 2) }.to raise_error('param length must be > 1')
|
18
|
+
expect { Dither.all_pairs([[], []], 2) }.to raise_error(Dither::Error,'param length must be > 1')
|
15
19
|
end
|
16
20
|
|
17
21
|
it 'can compute 2-way ipog using symbols' do
|
@@ -158,6 +162,61 @@ describe Dither do
|
|
158
162
|
[1, 1, 0, 3],
|
159
163
|
[1, 0, 1, 3],
|
160
164
|
[0, 1, 1, 3],
|
161
|
-
[0, 0, 0, 1]
|
165
|
+
[0, 0, 0, 1],
|
166
|
+
[0, 1, 1, 1]])
|
167
|
+
|
168
|
+
# results = Dither.all_pairs([
|
169
|
+
# (0...10).to_a,
|
170
|
+
# (0...10).to_a,
|
171
|
+
# (0...4).to_a,
|
172
|
+
# (0...3).to_a,
|
173
|
+
# (0...3).to_a,
|
174
|
+
# (0...2).to_a,
|
175
|
+
# (0...2).to_a,
|
176
|
+
# (0...2).to_a,
|
177
|
+
# (0...2).to_a,
|
178
|
+
# (0...2).to_a,
|
179
|
+
# (0...2).to_a,
|
180
|
+
# (0...2).to_a,
|
181
|
+
# ], 4)
|
182
|
+
|
183
|
+
# results = Dither.all_pairs([
|
184
|
+
# (0...4).to_a,
|
185
|
+
# (0...4).to_a,
|
186
|
+
# (0...4).to_a,
|
187
|
+
# (0...4).to_a,
|
188
|
+
# (0...4).to_a,
|
189
|
+
# (0...3).to_a,
|
190
|
+
# (0...3).to_a,
|
191
|
+
# (0...3).to_a,
|
192
|
+
# (0...3).to_a,
|
193
|
+
# ], 2)
|
194
|
+
|
195
|
+
|
196
|
+
results = Dither.all_pairs([
|
197
|
+
(0...2).to_a, # user type
|
198
|
+
(0...2).to_a, # exists?
|
199
|
+
(0...2).to_a, # seats
|
200
|
+
(0...2).to_a, # seats
|
201
|
+
(0...3).to_a, # user region
|
202
|
+
(0...3).to_a, # currency
|
203
|
+
(0...3).to_a,
|
204
|
+
(0...4).to_a, # payment
|
205
|
+
(0...6).to_a, # delivery
|
206
|
+
(0...6).to_a,
|
207
|
+
], 3)
|
208
|
+
|
209
|
+
# mipog 2-way 36... ipog 36
|
210
|
+
# mipog 3-way 156... ipog 151
|
211
|
+
# mipog 4-way 592... ipog 511
|
212
|
+
|
213
|
+
# results = Dither.all_pairs( [[1,2],
|
214
|
+
# ['1','2'],
|
215
|
+
# [1.0,2.0],
|
216
|
+
# [true, false, 3]],3)
|
217
|
+
require 'csv'
|
218
|
+
results.each { |a| puts a.to_csv }
|
219
|
+
puts results.count
|
220
|
+
|
162
221
|
end
|
163
222
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dither
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Gowan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|