dither 0.0.9-java → 0.0.10-java
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/README.md +22 -32
- data/lib/dither/ipog_helper.rb +28 -8
- data/lib/dither/java_ext/dither.rb +2 -1
- data/lib/dither/version.rb +1 -1
- data/lib/dither.jar +0 -0
- data/spec/dither/dither_spec.rb +7 -7
- 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: f604e88d5d8eac1f835c1dda247b4fd0772002ea
|
4
|
+
data.tar.gz: 4dbd069d8a778df29828151bbb176093885f0f3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b648cc3b440e1f2cd88dd47d85cd84e31a6755fe5c6912b11aa23c1fa405155c55a25a74f80e37b37a91ec5fe40e62abb74adba574eb87d86abe4968521adfd2
|
7
|
+
data.tar.gz: 20ef90a73de9b0f31bc43f3435c33f5202b1eef2aa8ecc7971eb42900dde8b4a1f243ff1dba5ede919cf5555a0f2e4d114bf5011d3793f15b845fa6df0273b08
|
data/README.md
CHANGED
@@ -3,42 +3,32 @@ Collection of combinatorial test generation strategies.
|
|
3
3
|
|
4
4
|
# Usage
|
5
5
|
|
6
|
-
Use 2-Way IPOG
|
7
6
|
```ruby
|
8
7
|
require 'dither'
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
[
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
[
|
23
|
-
[true,
|
24
|
-
[
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
results = Dither.ipog([[true, false],
|
33
|
-
[true, false],
|
34
|
-
[:cat, :dog, :mouse],
|
35
|
-
(0...5).to_a], :t => 3)
|
36
|
-
|
37
|
-
results.each { |a| puts "#{a}" }
|
9
|
+
# 2-way
|
10
|
+
Dither.ipog([[true, false],
|
11
|
+
[:cat, :dog, :mouse],
|
12
|
+
(0...3).to_a])
|
13
|
+
# 3-way
|
14
|
+
Dither.ipog([[true, false],
|
15
|
+
[true, false],
|
16
|
+
[:cat, :dog, :mouse],
|
17
|
+
(0...5).to_a],
|
18
|
+
:t => 3)
|
19
|
+
|
20
|
+
# 3-way with constraints and previously tested cases
|
21
|
+
Dither.ipog([[true, false],
|
22
|
+
[true, false],
|
23
|
+
[:cat, :dog, :mouse],
|
24
|
+
(0...5).to_a],
|
25
|
+
:t => 3,
|
26
|
+
:constraints => [
|
27
|
+
{ 1 => 0, 2 => 0 }, # exclude true and cat
|
28
|
+
{ 1 => 0, 2 => 1, 3 => 4 }, # exclude true :dog 4 combinations
|
29
|
+
],
|
30
|
+
:previously_tested => [[true, true, :cat, 0]])
|
38
31
|
|
39
|
-
# output
|
40
|
-
[true, true, :cat, 0]
|
41
|
-
...
|
42
32
|
```
|
43
33
|
|
44
34
|
# Note on Patches/Pull Requests
|
data/lib/dither/ipog_helper.rb
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
module Dither
|
4
4
|
module IPOGHelper
|
5
|
-
attr_reader :params, :t, :constraints, :test_set, :orig_params, :unbound_param_pool
|
6
|
-
private :params, :t, :constraints, :test_set, :orig_params, :unbound_param_pool
|
5
|
+
attr_reader :params, :t, :constraints, :test_set, :orig_params, :unbound_param_pool, :tested
|
6
|
+
private :params, :t, :constraints, :test_set, :orig_params, :unbound_param_pool, :tested
|
7
7
|
|
8
8
|
def initialize(params, opts = {})
|
9
|
-
init_params(params)
|
9
|
+
init_params(params, (opts[:previously_tested] || []))
|
10
10
|
@t = opts[:t]
|
11
11
|
unless opts[:constraints].nil?
|
12
12
|
@constraints = opts[:constraints].map(&:to_a)
|
@@ -21,24 +21,40 @@ module Dither
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def init_params(user_params)
|
24
|
+
def init_params(user_params, previously_tested)
|
25
25
|
tmp = []
|
26
26
|
@input_params = user_params
|
27
27
|
user_params.each_with_index { |e, i| tmp << [i, e] }
|
28
28
|
@orig_params = tmp.sort_by { |a| a[1].length }
|
29
29
|
.reverse!
|
30
30
|
|
31
|
+
orig_param_map = {}
|
31
32
|
@map_to_orig_index = {}
|
32
33
|
@orig_params.each_with_index do |e, i|
|
33
34
|
@map_to_orig_index[i] = e[0]
|
35
|
+
orig_param_map[e[0]] = {}
|
34
36
|
end
|
35
37
|
|
36
38
|
@params = []
|
37
39
|
@unbound_param_pool = []
|
38
40
|
orig_params.each_with_index do |e, i|
|
39
|
-
@params << (0...e[1].length).map
|
41
|
+
@params << (0...e[1].length).map do |j|
|
42
|
+
local_param = Param.new(i, j)
|
43
|
+
orig_param_map[e[0]][e[1][j]] = local_param
|
44
|
+
local_param
|
45
|
+
end
|
40
46
|
@unbound_param_pool << UnboundParam.new(i)
|
41
47
|
end
|
48
|
+
|
49
|
+
@tested = []
|
50
|
+
previously_tested.each do |a|
|
51
|
+
local_params = []
|
52
|
+
a.each_with_index do |e, i|
|
53
|
+
local_params << orig_param_map[i][e]
|
54
|
+
end
|
55
|
+
@tested << TestCase.create(params, unbound_param_pool, local_params)
|
56
|
+
end
|
57
|
+
|
42
58
|
params
|
43
59
|
end
|
44
60
|
|
@@ -88,7 +104,7 @@ module Dither
|
|
88
104
|
|
89
105
|
result = products.map(&:flatten)
|
90
106
|
.map { |a| TestCase.create(params, unbound_param_pool, a) }
|
91
|
-
result
|
107
|
+
result.reject { |a| tested?(a) }
|
92
108
|
end
|
93
109
|
|
94
110
|
def comb_i(param_i)
|
@@ -101,11 +117,14 @@ module Dither
|
|
101
117
|
result += a[1..-1]
|
102
118
|
.inject((0...params[a[0]].length).map { |b| params[a[0]][b] }) { |p, i| p.product((0...params[i].length).to_a.map { |c| params[i][c] }) }
|
103
119
|
.map(&:flatten)
|
104
|
-
.map { |
|
120
|
+
.map { |b| TestCase.create(params, unbound_param_pool, b) }
|
105
121
|
end
|
106
|
-
result.to_set
|
122
|
+
result.reject { |a| tested?(a) }.to_set
|
107
123
|
end
|
108
124
|
|
125
|
+
def tested?(test_case)
|
126
|
+
@tested.any? { |a| test_case.subset?(a) }
|
127
|
+
end
|
109
128
|
|
110
129
|
def fill_unbound(data)
|
111
130
|
arr = Array.new(params.length)
|
@@ -134,6 +153,7 @@ module Dither
|
|
134
153
|
end
|
135
154
|
|
136
155
|
return nil if violates_constraints?(data)
|
156
|
+
return nil if tested?(data)
|
137
157
|
|
138
158
|
arr
|
139
159
|
end
|
@@ -7,7 +7,8 @@ module Dither
|
|
7
7
|
com.github.jesg.dither.Dither.ipog(
|
8
8
|
opts[:t].to_java(:int),
|
9
9
|
params.map(&:to_java).to_java,
|
10
|
-
constraints
|
10
|
+
constraints,
|
11
|
+
(opts[:previously_tested] || []).map(&:to_java).to_java).to_a
|
11
12
|
rescue com.github.jesg.dither.DitherError => e
|
12
13
|
raise Dither::Error.new(e.message)
|
13
14
|
end
|
data/lib/dither/version.rb
CHANGED
data/lib/dither.jar
CHANGED
Binary file
|
data/spec/dither/dither_spec.rb
CHANGED
@@ -117,13 +117,13 @@ describe Dither do
|
|
117
117
|
it 'can compute 3-way ipog with constraints' do
|
118
118
|
params = [(0...2).to_a, (0...2).to_a, (0..3).to_a]
|
119
119
|
expect(Dither.ipog(params, :t => 3,
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
120
|
+
:constraints => [
|
121
|
+
{0 => 0,
|
122
|
+
2 => 2},
|
123
|
+
{0 => 0,
|
124
|
+
1 => 1,
|
125
|
+
2 => 0}],
|
126
|
+
:previously_tested => [[0, 0, 0]]).to_set).to eq([
|
127
127
|
[1, 0, 0],
|
128
128
|
[1, 1, 0],
|
129
129
|
[0, 0, 1],
|
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.10
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Jason Gowan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|