stamina 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +22 -5
- data/LICENCE.md +2 -2
- data/bin/stamina +1 -7
- data/lib/stamina.rb +10 -19
- metadata +54 -333
- data/.gemtest +0 -0
- data/Gemfile +0 -2
- data/Gemfile.lock +0 -37
- data/Manifest.txt +0 -16
- data/README.md +0 -78
- data/Rakefile +0 -23
- data/example/adl/automaton.adl +0 -49
- data/example/adl/sample.adl +0 -53
- data/example/basic/characteristic_sample.adl +0 -32
- data/example/basic/target.adl +0 -9
- data/example/competition/31_test.adl +0 -1500
- data/example/competition/31_training.adl +0 -1759
- data/lib/stamina/abbadingo.rb +0 -2
- data/lib/stamina/abbadingo/random_dfa.rb +0 -48
- data/lib/stamina/abbadingo/random_sample.rb +0 -146
- data/lib/stamina/adl.rb +0 -298
- data/lib/stamina/automaton.rb +0 -1263
- data/lib/stamina/automaton/complete.rb +0 -36
- data/lib/stamina/automaton/equivalence.rb +0 -55
- data/lib/stamina/automaton/metrics.rb +0 -78
- data/lib/stamina/automaton/minimize.rb +0 -25
- data/lib/stamina/automaton/minimize/hopcroft.rb +0 -116
- data/lib/stamina/automaton/minimize/pitchies.rb +0 -64
- data/lib/stamina/automaton/strip.rb +0 -16
- data/lib/stamina/automaton/walking.rb +0 -363
- data/lib/stamina/classifier.rb +0 -52
- data/lib/stamina/command.rb +0 -45
- data/lib/stamina/command/abbadingo_dfa.rb +0 -81
- data/lib/stamina/command/abbadingo_samples.rb +0 -40
- data/lib/stamina/command/adl2dot.rb +0 -71
- data/lib/stamina/command/classify.rb +0 -48
- data/lib/stamina/command/help.rb +0 -27
- data/lib/stamina/command/infer.rb +0 -141
- data/lib/stamina/command/metrics.rb +0 -51
- data/lib/stamina/command/robustness.rb +0 -22
- data/lib/stamina/command/score.rb +0 -35
- data/lib/stamina/errors.rb +0 -23
- data/lib/stamina/ext/math.rb +0 -20
- data/lib/stamina/induction/blue_fringe.rb +0 -265
- data/lib/stamina/induction/commons.rb +0 -156
- data/lib/stamina/induction/rpni.rb +0 -186
- data/lib/stamina/induction/union_find.rb +0 -377
- data/lib/stamina/input_string.rb +0 -123
- data/lib/stamina/loader.rb +0 -1
- data/lib/stamina/markable.rb +0 -42
- data/lib/stamina/sample.rb +0 -267
- data/lib/stamina/scoring.rb +0 -213
- data/lib/stamina/utils.rb +0 -1
- data/lib/stamina/utils/decorate.rb +0 -81
- data/lib/stamina/version.rb +0 -14
- data/stamina.gemspec +0 -191
- data/stamina.noespec +0 -32
- data/tasks/debug_mail.rake +0 -78
- data/tasks/debug_mail.txt +0 -13
- data/tasks/gem.rake +0 -68
- data/tasks/spec_test.rake +0 -79
- data/tasks/unit_test.rake +0 -77
- data/tasks/yard.rake +0 -51
- data/test/stamina/abbadingo/random_dfa_test.rb +0 -16
- data/test/stamina/abbadingo/random_sample_test.rb +0 -78
- data/test/stamina/adl_test.rb +0 -516
- data/test/stamina/automaton/classifier_test.rb +0 -259
- data/test/stamina/automaton/complete_test.rb +0 -58
- data/test/stamina/automaton/equivalence_test.rb +0 -120
- data/test/stamina/automaton/metrics_test.rb +0 -36
- data/test/stamina/automaton/minimize/hopcroft_test.rb +0 -15
- data/test/stamina/automaton/minimize/minimize_test.rb +0 -55
- data/test/stamina/automaton/minimize/pitchies_test.rb +0 -15
- data/test/stamina/automaton/minimize/rice_edu_10.adl +0 -16
- data/test/stamina/automaton/minimize/rice_edu_10.min.adl +0 -13
- data/test/stamina/automaton/minimize/rice_edu_13.adl +0 -13
- data/test/stamina/automaton/minimize/rice_edu_13.min.adl +0 -7
- data/test/stamina/automaton/minimize/should_strip_1.adl +0 -8
- data/test/stamina/automaton/minimize/should_strip_1.min.adl +0 -6
- data/test/stamina/automaton/minimize/unknown_1.adl +0 -16
- data/test/stamina/automaton/minimize/unknown_1.min.adl +0 -12
- data/test/stamina/automaton/strip_test.rb +0 -36
- data/test/stamina/automaton/to_dot_test.rb +0 -64
- data/test/stamina/automaton/walking/dfa_delta_test.rb +0 -39
- data/test/stamina/automaton/walking_test.rb +0 -206
- data/test/stamina/automaton_additional_test.rb +0 -190
- data/test/stamina/automaton_test.rb +0 -1104
- data/test/stamina/exit.rb +0 -3
- data/test/stamina/induction/blue_fringe_test.rb +0 -83
- data/test/stamina/induction/induction_test.rb +0 -70
- data/test/stamina/induction/redblue_mergesamestatebug_expected.adl +0 -19
- data/test/stamina/induction/redblue_mergesamestatebug_pta.dot +0 -64
- data/test/stamina/induction/redblue_mergesamestatebug_sample.adl +0 -9
- data/test/stamina/induction/redblue_universal_expected.adl +0 -4
- data/test/stamina/induction/redblue_universal_sample.adl +0 -5
- data/test/stamina/induction/rpni_inria_expected.adl +0 -7
- data/test/stamina/induction/rpni_inria_sample.adl +0 -9
- data/test/stamina/induction/rpni_test.rb +0 -129
- data/test/stamina/induction/rpni_test_pta.dot +0 -22
- data/test/stamina/induction/rpni_universal_expected.adl +0 -4
- data/test/stamina/induction/rpni_universal_sample.adl +0 -4
- data/test/stamina/induction/union_find_test.rb +0 -124
- data/test/stamina/input_string_test.rb +0 -323
- data/test/stamina/markable_test.rb +0 -70
- data/test/stamina/randdfa.adl +0 -66
- data/test/stamina/sample.adl +0 -4
- data/test/stamina/sample_classify_test.rb +0 -149
- data/test/stamina/sample_test.rb +0 -290
- data/test/stamina/scoring_test.rb +0 -63
- data/test/stamina/small_dfa.dot +0 -16
- data/test/stamina/small_dfa.gif +0 -0
- data/test/stamina/small_nfa.dot +0 -18
- data/test/stamina/small_nfa.gif +0 -0
- data/test/stamina/stamina_test.rb +0 -80
- data/test/stamina/utils/decorate_test.rb +0 -65
- data/test/test_all.rb +0 -7
@@ -1,124 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'stamina/induction/union_find'
|
3
|
-
module Stamina
|
4
|
-
module Induction
|
5
|
-
class UnionFindTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
def assert_whole_find_is(expected, ufds)
|
8
|
-
0.upto(expected.size-1) do |i|
|
9
|
-
assert_equal expected[i], ufds.find(i)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_initially
|
14
|
-
ufds = UnionFind.new(5)
|
15
|
-
assert_equal 5, ufds.size
|
16
|
-
0.upto(ufds.size-1) do |i|
|
17
|
-
assert_equal i, ufds.find(i)
|
18
|
-
assert_equal true, ufds.leader?(i)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_one_union
|
23
|
-
ufds = UnionFind.new(5)
|
24
|
-
ufds.union(3,0)
|
25
|
-
assert_whole_find_is [0, 1, 2, 0, 4], ufds
|
26
|
-
assert_equal true, ufds.leader?(0)
|
27
|
-
assert_equal false, ufds.leader?(3)
|
28
|
-
|
29
|
-
ufds = UnionFind.new(5)
|
30
|
-
ufds.union(0,3)
|
31
|
-
assert_whole_find_is [0, 1, 2, 0, 4], ufds
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_two_unions
|
35
|
-
ufds = UnionFind.new(5)
|
36
|
-
ufds.union(3,0)
|
37
|
-
ufds.union(4,3)
|
38
|
-
assert_whole_find_is [0, 1, 2, 0, 0], ufds
|
39
|
-
assert_equal true, ufds.leader?(0)
|
40
|
-
assert_equal false, ufds.leader?(3)
|
41
|
-
assert_equal false, ufds.leader?(4)
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_three_unions
|
45
|
-
ufds = UnionFind.new(5)
|
46
|
-
ufds.union(3,0)
|
47
|
-
ufds.union(1,2)
|
48
|
-
ufds.union(2,4)
|
49
|
-
assert_equal true, ufds.leader?(0)
|
50
|
-
assert_equal true, ufds.leader?(1)
|
51
|
-
assert_equal false, ufds.leader?(2)
|
52
|
-
assert_equal false, ufds.leader?(3)
|
53
|
-
assert_equal false, ufds.leader?(4)
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_union_supports_identity_union
|
57
|
-
ufds = UnionFind.new(5)
|
58
|
-
ufds.union(0,0)
|
59
|
-
assert_whole_find_is [0, 1, 2, 3, 4], ufds
|
60
|
-
ufds.union(1,0)
|
61
|
-
assert_whole_find_is [0, 0, 2, 3, 4], ufds
|
62
|
-
ufds.union(1,0)
|
63
|
-
assert_whole_find_is [0, 0, 2, 3, 4], ufds
|
64
|
-
ufds.union(0,1)
|
65
|
-
assert_whole_find_is [0, 0, 2, 3, 4], ufds
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_dup
|
69
|
-
ufds = UnionFind.new(5)
|
70
|
-
ufds.union(3,0)
|
71
|
-
copy = ufds.dup
|
72
|
-
(0...5).each {|i| assert_equal ufds.find(i), copy.find(i)}
|
73
|
-
copy.union(4,3)
|
74
|
-
assert_equal 0, copy.find(4)
|
75
|
-
assert_equal 4, ufds.find(4)
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_transactional_support
|
79
|
-
ufds = UnionFind.new(5)
|
80
|
-
ufds.save_point
|
81
|
-
ufds.union(3,0)
|
82
|
-
assert_whole_find_is [0, 1, 2, 0, 4], ufds
|
83
|
-
ufds.commit
|
84
|
-
assert_whole_find_is [0, 1, 2, 0, 4], ufds
|
85
|
-
ufds.save_point
|
86
|
-
ufds.union(4,3)
|
87
|
-
assert_whole_find_is [0, 1, 2, 0, 0], ufds
|
88
|
-
ufds.rollback
|
89
|
-
assert_whole_find_is [0, 1, 2, 0, 4], ufds
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_validity_of_rdoc_example
|
93
|
-
# create a union-find for 10 elements
|
94
|
-
ufds = Stamina::Induction::UnionFind.new(10) do |index|
|
95
|
-
# each element will be associated with a hash with data of interest:
|
96
|
-
# smallest element, greatest element and concatenation of names
|
97
|
-
{:smallest => index, :greatest => index, :names => index.to_s}
|
98
|
-
end
|
99
|
-
|
100
|
-
# each element is its own leader
|
101
|
-
assert_equal true, (0...10).all?{|s| ufds.leader?(s)}
|
102
|
-
assert_equal false, (0...10).all?{|s| ufds.slave?(s)}
|
103
|
-
|
104
|
-
# and their respective group number are the element indices themselve
|
105
|
-
assert_equal [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], ufds.to_a
|
106
|
-
|
107
|
-
# now, let merge 4 with 0
|
108
|
-
ufds.union(0, 4) do |d0, d4|
|
109
|
-
{:smallest => d0[:smallest] < d4[:smallest] ? d0[:smallest] : d4[:smallest],
|
110
|
-
:greatest => d0[:smallest] > d4[:smallest] ? d0[:smallest] : d4[:smallest],
|
111
|
-
:names => d0[:names] + " " + d4[:names]}
|
112
|
-
end
|
113
|
-
|
114
|
-
# let see what happens on group numbers
|
115
|
-
assert_equal [0, 1, 2, 3, 0, 5, 6, 7, 8, 9], ufds.to_a
|
116
|
-
|
117
|
-
# let now have a look on mergeable_data of the group of 0 (same result for 4)
|
118
|
-
expected = {:smallest => 0, :greatest => 4, :names => "0 4"}
|
119
|
-
assert_equal expected, ufds.mergeable_data(0)
|
120
|
-
end
|
121
|
-
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
@@ -1,323 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'stamina/input_string'
|
3
|
-
module Stamina
|
4
|
-
|
5
|
-
# Tests InputString class
|
6
|
-
class InputStringTest < Test::Unit::TestCase
|
7
|
-
|
8
|
-
# Tests on empty string
|
9
|
-
def test_on_empty_string
|
10
|
-
# with empty array of symbols, positively labeled
|
11
|
-
s = InputString.new([], true)
|
12
|
-
assert_equal(0, s.size)
|
13
|
-
assert_equal(true, s.empty?)
|
14
|
-
assert_equal(true, s.lambda?)
|
15
|
-
assert_equal([], s.symbols)
|
16
|
-
assert_equal(true, s.symbols.frozen?)
|
17
|
-
assert_equal(true, s.positive?)
|
18
|
-
assert_equal(false, s.negative?)
|
19
|
-
assert_equal(false, s.unlabeled?)
|
20
|
-
assert_equal(true, s.label)
|
21
|
-
|
22
|
-
# with empty array of symbols, negatively labeled
|
23
|
-
s = InputString.new([], false)
|
24
|
-
assert_equal(0, s.size)
|
25
|
-
assert_equal(true, s.empty?)
|
26
|
-
assert_equal(true, s.lambda?)
|
27
|
-
assert_equal([], s.symbols)
|
28
|
-
assert_equal(true, s.symbols.frozen?)
|
29
|
-
assert_equal(false, s.positive?)
|
30
|
-
assert_equal(true, s.negative?)
|
31
|
-
assert_equal(false, s.unlabeled?)
|
32
|
-
assert_equal(false, s.label)
|
33
|
-
|
34
|
-
# with empty array of symbols, unlabeled
|
35
|
-
s = InputString.new([], nil)
|
36
|
-
assert_equal(0, s.size)
|
37
|
-
assert_equal(true, s.empty?)
|
38
|
-
assert_equal(true, s.lambda?)
|
39
|
-
assert_equal([], s.symbols)
|
40
|
-
assert_equal(true, s.symbols.frozen?)
|
41
|
-
assert_equal(false, s.positive?)
|
42
|
-
assert_equal(false, s.negative?)
|
43
|
-
assert_equal(true, s.unlabeled?)
|
44
|
-
assert_equal(nil, s.label)
|
45
|
-
|
46
|
-
# with empty string, positively labeled
|
47
|
-
s = InputString.new('', true)
|
48
|
-
assert_equal(0, s.size)
|
49
|
-
assert_equal(true, s.lambda?)
|
50
|
-
assert_equal(true, s.empty?)
|
51
|
-
assert_equal([], s.symbols)
|
52
|
-
assert_equal(true, s.symbols.frozen?)
|
53
|
-
assert_equal(true, s.positive?)
|
54
|
-
assert_equal(false, s.negative?)
|
55
|
-
assert_equal(false, s.unlabeled?)
|
56
|
-
|
57
|
-
# with empty string, negatively labeled
|
58
|
-
s = InputString.new('', false)
|
59
|
-
assert_equal(0, s.size)
|
60
|
-
assert_equal(true, s.lambda?)
|
61
|
-
assert_equal(true, s.empty?)
|
62
|
-
assert_equal([], s.symbols)
|
63
|
-
assert_equal(true, s.symbols.frozen?)
|
64
|
-
assert_equal(false, s.positive?)
|
65
|
-
assert_equal(true, s.negative?)
|
66
|
-
assert_equal(false, s.unlabeled?)
|
67
|
-
|
68
|
-
# with empty string, unlabeled
|
69
|
-
s = InputString.new('', nil)
|
70
|
-
assert_equal(0, s.size)
|
71
|
-
assert_equal(true, s.lambda?)
|
72
|
-
assert_equal(true, s.empty?)
|
73
|
-
assert_equal([], s.symbols)
|
74
|
-
assert_equal(true, s.symbols.frozen?)
|
75
|
-
assert_equal(false, s.positive?)
|
76
|
-
assert_equal(false, s.negative?)
|
77
|
-
assert_equal(true, s.unlabeled?)
|
78
|
-
|
79
|
-
# with empty string with trailing whitespaces, positively labeled
|
80
|
-
s = InputString.new(" ", true)
|
81
|
-
assert_equal(0, s.size)
|
82
|
-
assert_equal(true, s.lambda?)
|
83
|
-
assert_equal(true, s.empty?)
|
84
|
-
assert_equal([], s.symbols)
|
85
|
-
assert_equal(true, s.symbols.frozen?)
|
86
|
-
assert_equal(true, s.positive?)
|
87
|
-
assert_equal(false, s.negative?)
|
88
|
-
assert_equal(false, s.unlabeled?)
|
89
|
-
|
90
|
-
# with empty string with trailing whitespaces, negatively labeled
|
91
|
-
s = InputString.new(" ", false)
|
92
|
-
assert_equal(0, s.size)
|
93
|
-
assert_equal(true, s.lambda?)
|
94
|
-
assert_equal(true, s.empty?)
|
95
|
-
assert_equal([], s.symbols)
|
96
|
-
assert_equal(true, s.symbols.frozen?)
|
97
|
-
assert_equal(false, s.positive?)
|
98
|
-
assert_equal(true, s.negative?)
|
99
|
-
assert_equal(false, s.unlabeled?)
|
100
|
-
|
101
|
-
# with empty string with trailing whitespaces, unlabeled
|
102
|
-
s = InputString.new(" ", nil)
|
103
|
-
assert_equal(0, s.size)
|
104
|
-
assert_equal(true, s.lambda?)
|
105
|
-
assert_equal(true, s.empty?)
|
106
|
-
assert_equal([], s.symbols)
|
107
|
-
assert_equal(true, s.symbols.frozen?)
|
108
|
-
assert_equal(false, s.positive?)
|
109
|
-
assert_equal(false, s.negative?)
|
110
|
-
assert_equal(true, s.unlabeled?)
|
111
|
-
|
112
|
-
# with empty string with trailing whitespaces, negatively labeled
|
113
|
-
s = InputString.new(" \n \t \t\n ", false)
|
114
|
-
assert_equal(0, s.size)
|
115
|
-
assert_equal(true, s.empty?)
|
116
|
-
assert_equal([], s.symbols)
|
117
|
-
end
|
118
|
-
|
119
|
-
# Tests with a string of only one character
|
120
|
-
def test_on_one_character_string
|
121
|
-
# with array of symbols, positively labeled
|
122
|
-
s = InputString.new(['a'], true)
|
123
|
-
assert_equal(1, s.size)
|
124
|
-
assert_equal(false, s.empty?)
|
125
|
-
assert_equal(false, s.lambda?)
|
126
|
-
assert_equal(['a'], s.symbols)
|
127
|
-
assert_equal(true, s.symbols.frozen?)
|
128
|
-
assert_equal(true, s.positive?)
|
129
|
-
assert_equal(false, s.negative?)
|
130
|
-
assert_equal(false, s.unlabeled?)
|
131
|
-
assert_equal(true, s.label)
|
132
|
-
|
133
|
-
# with empty array of symbols, negatively labeled
|
134
|
-
s = InputString.new(['a'], false)
|
135
|
-
assert_equal(1, s.size)
|
136
|
-
assert_equal(false, s.empty?)
|
137
|
-
assert_equal(['a'], s.symbols)
|
138
|
-
assert_equal(true, s.symbols.frozen?)
|
139
|
-
assert_equal(false, s.positive?)
|
140
|
-
assert_equal(true, s.negative?)
|
141
|
-
assert_equal(false, s.label)
|
142
|
-
|
143
|
-
# with empty array of symbols, unlabeled
|
144
|
-
s = InputString.new(['a'], nil)
|
145
|
-
assert_equal(1, s.size)
|
146
|
-
assert_equal(false, s.empty?)
|
147
|
-
assert_equal(['a'], s.symbols)
|
148
|
-
assert_equal(true, s.symbols.frozen?)
|
149
|
-
assert_equal(false, s.positive?)
|
150
|
-
assert_equal(false, s.negative?)
|
151
|
-
assert_equal(true, s.unlabeled?)
|
152
|
-
assert_equal(nil, s.label)
|
153
|
-
|
154
|
-
# with empty string, positively labeled
|
155
|
-
s = InputString.new('a', true)
|
156
|
-
assert_equal(1, s.size)
|
157
|
-
assert_equal(false, s.empty?)
|
158
|
-
assert_equal(['a'], s.symbols)
|
159
|
-
assert_equal(true, s.symbols.frozen?)
|
160
|
-
assert_equal(true, s.positive?)
|
161
|
-
assert_equal(false, s.negative?)
|
162
|
-
|
163
|
-
# with empty string, negatively labeled
|
164
|
-
s = InputString.new('a', false)
|
165
|
-
assert_equal(1, s.size)
|
166
|
-
assert_equal(false, s.empty?)
|
167
|
-
assert_equal(['a'], s.symbols)
|
168
|
-
assert_equal(true, s.symbols.frozen?)
|
169
|
-
assert_equal(false, s.positive?)
|
170
|
-
assert_equal(true, s.negative?)
|
171
|
-
|
172
|
-
# with empty string with trailing whitespaces, positively labeled
|
173
|
-
s = InputString.new("a ", true)
|
174
|
-
assert_equal(1, s.size)
|
175
|
-
assert_equal(false, s.empty?)
|
176
|
-
assert_equal(['a'], s.symbols)
|
177
|
-
|
178
|
-
# with empty string with trailing whitespaces, positively labeled
|
179
|
-
s = InputString.new(" a", true)
|
180
|
-
assert_equal(1, s.size)
|
181
|
-
assert_equal(false, s.empty?)
|
182
|
-
assert_equal(['a'], s.symbols)
|
183
|
-
|
184
|
-
# with empty string with trailing whitespaces, positively labeled
|
185
|
-
s = InputString.new(" \na \t \n", true)
|
186
|
-
assert_equal(1, s.size)
|
187
|
-
assert_equal(false, s.empty?)
|
188
|
-
assert_equal(['a'], s.symbols)
|
189
|
-
end
|
190
|
-
|
191
|
-
def test_negate
|
192
|
-
assert_equal InputString.new([], true), InputString.new([], false).negate
|
193
|
-
assert_equal InputString.new([], false), InputString.new([], true).negate
|
194
|
-
assert_equal InputString.new([], nil), InputString.new([], nil).negate
|
195
|
-
assert_equal InputString.new(['a'], true), InputString.new(['a'], false).negate
|
196
|
-
assert_equal InputString.new(['a'], false), InputString.new(['a'], true).negate
|
197
|
-
assert_equal InputString.new(['a'], nil), InputString.new(['a'], nil).negate
|
198
|
-
end
|
199
|
-
|
200
|
-
# Tests on a small size string.
|
201
|
-
def test_on_small_size_string
|
202
|
-
s = InputString.new(['a', 'b', 'c', 'a'], true)
|
203
|
-
assert_equal(false, s.empty?)
|
204
|
-
assert_equal(4, s.size)
|
205
|
-
assert_equal(['a', 'b', 'c', 'a'], s.symbols)
|
206
|
-
assert_equal(true, s.positive?)
|
207
|
-
|
208
|
-
s = InputString.new('a b c a', false)
|
209
|
-
assert_equal(false, s.empty?)
|
210
|
-
assert_equal(4, s.size)
|
211
|
-
assert_equal(['a', 'b', 'c', 'a'], s.symbols)
|
212
|
-
assert_equal(false, s.positive?)
|
213
|
-
|
214
|
-
s = InputString.new('a b c a', nil)
|
215
|
-
assert_equal(false, s.empty?)
|
216
|
-
assert_equal(4, s.size)
|
217
|
-
assert_equal(['a', 'b', 'c', 'a'], s.symbols)
|
218
|
-
assert_equal(true, s.unlabeled?)
|
219
|
-
|
220
|
-
s = InputString.new('a b c a', false)
|
221
|
-
assert_equal(false, s.empty?)
|
222
|
-
assert_equal(4, s.size)
|
223
|
-
assert_equal(['a', 'b', 'c', 'a'], s.symbols)
|
224
|
-
|
225
|
-
s = InputString.new(" a b c a\t", true)
|
226
|
-
assert_equal(false, s.empty?)
|
227
|
-
assert_equal(4, s.size)
|
228
|
-
assert_equal(['a', 'b', 'c', 'a'], s.symbols)
|
229
|
-
end
|
230
|
-
|
231
|
-
# Tests that s.symbols.dup returns a modifiable array
|
232
|
-
def test_symbols_duplication_may_be_modified
|
233
|
-
s = InputString.new([''], true)
|
234
|
-
assert_equal(false, s.symbols.dup.frozen?)
|
235
|
-
|
236
|
-
s = InputString.new(['a' 'b' 'c' 'a'], true)
|
237
|
-
assert_equal(false, s.symbols.dup.frozen?)
|
238
|
-
|
239
|
-
s = InputString.new('', true)
|
240
|
-
assert_equal(false, s.symbols.dup.frozen?)
|
241
|
-
|
242
|
-
s = InputString.new('a b c a', true)
|
243
|
-
assert_equal(false, s.symbols.dup.frozen?)
|
244
|
-
end
|
245
|
-
|
246
|
-
# Tests InputString#==
|
247
|
-
def test_equality
|
248
|
-
s = InputString.new([], true)
|
249
|
-
assert_equal(s, InputString.new([], true))
|
250
|
-
assert_equal(s, InputString.new('', true))
|
251
|
-
assert_equal(s, InputString.new(' ', true))
|
252
|
-
assert_not_equal(s, InputString.new([], false))
|
253
|
-
assert_not_equal(s, InputString.new(['a'], false))
|
254
|
-
assert_not_equal(s, InputString.new([], nil))
|
255
|
-
|
256
|
-
s = InputString.new([], false)
|
257
|
-
assert_equal(s, InputString.new([], false))
|
258
|
-
assert_equal(s, InputString.new('', false))
|
259
|
-
assert_equal(s, InputString.new(' ', false))
|
260
|
-
assert_not_equal(s, InputString.new([], true))
|
261
|
-
assert_not_equal(s, InputString.new(['a'], true))
|
262
|
-
assert_not_equal(s, InputString.new([], nil))
|
263
|
-
|
264
|
-
s = InputString.new([], nil)
|
265
|
-
assert_equal(s, InputString.new([], nil))
|
266
|
-
assert_equal(s, InputString.new('', nil))
|
267
|
-
assert_not_equal(s, InputString.new([], true))
|
268
|
-
assert_not_equal(s, InputString.new(['a'], true))
|
269
|
-
assert_not_equal(s, InputString.new([], false))
|
270
|
-
assert_not_equal(s, InputString.new(['a'], false))
|
271
|
-
|
272
|
-
s = InputString.new('a b a b', true)
|
273
|
-
assert_equal(s, InputString.new("a b \n a b", true))
|
274
|
-
assert_equal(s, InputString.new(['a', 'b', 'a', 'b'], true))
|
275
|
-
assert_not_equal(s, InputString.new(['a', 'b', 'a', 'b'], false))
|
276
|
-
assert_not_equal(s, InputString.new(['a', 'b', 'a'], true))
|
277
|
-
assert_not_equal(s, InputString.new([], true))
|
278
|
-
end
|
279
|
-
|
280
|
-
def test_equality_2
|
281
|
-
assert InputString.new('+', true)==InputString.new('+', true)
|
282
|
-
assert InputString.new('+ a b', true)==InputString.new('+ a b', true)
|
283
|
-
|
284
|
-
strings = [InputString.new('+', true), InputString.new('+', true)]
|
285
|
-
assert_equal 1, strings.uniq.size
|
286
|
-
end
|
287
|
-
|
288
|
-
# Tests that input string accept other objects than strings as symbols
|
289
|
-
def test_input_string_accept_any_symbol_object
|
290
|
-
s = InputString.new([1, 2], true)
|
291
|
-
assert_equal(2, s.size)
|
292
|
-
assert_equal([1, 2], s.symbols)
|
293
|
-
end
|
294
|
-
|
295
|
-
def test_input_string_may_be_used_as_hash_key
|
296
|
-
str = InputString.new('a b a b', true)
|
297
|
-
neg = InputString.new('a b a b', false)
|
298
|
-
unl = InputString.new('a b a b', nil)
|
299
|
-
h = {}
|
300
|
-
h[str] = 1
|
301
|
-
assert h.has_key?(str)
|
302
|
-
assert_equal 1, h[str]
|
303
|
-
assert !h.has_key?(neg)
|
304
|
-
assert !h.has_key?(unl)
|
305
|
-
h[neg] = 2
|
306
|
-
assert h.has_key?(str)
|
307
|
-
assert_equal 1, h[str]
|
308
|
-
assert h.has_key?(neg)
|
309
|
-
assert_equal 2, h[neg]
|
310
|
-
assert !h.has_key?(unl)
|
311
|
-
h[unl] = 3
|
312
|
-
assert h.has_key?(str)
|
313
|
-
assert_equal 1, h[str]
|
314
|
-
assert h.has_key?(neg)
|
315
|
-
assert_equal 2, h[neg]
|
316
|
-
assert h.has_key?(unl)
|
317
|
-
assert_equal 3, h[unl]
|
318
|
-
end
|
319
|
-
|
320
|
-
end # class InputStringTest
|
321
|
-
|
322
|
-
end # module Stamina
|
323
|
-
|