ruby_speech 2.3.1 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.hound.yml +2 -0
  4. data/.travis.yml +25 -9
  5. data/CHANGELOG.md +19 -1
  6. data/README.md +14 -15
  7. data/Rakefile +2 -0
  8. data/ext/ruby_speech/RubySpeechGRXMLMatcher.java +17 -12
  9. data/ext/ruby_speech/RubySpeechService.java +1 -1
  10. data/ext/ruby_speech/extconf.rb +1 -1
  11. data/lib/ruby_speech/generic_element.rb +2 -2
  12. data/lib/ruby_speech/grxml/builtins.rb +18 -11
  13. data/lib/ruby_speech/grxml/grammar.rb +26 -4
  14. data/lib/ruby_speech/grxml/matcher.rb +2 -2
  15. data/lib/ruby_speech/grxml.rb +2 -0
  16. data/lib/ruby_speech/nlsml/builder.rb +2 -1
  17. data/lib/ruby_speech/nlsml/document.rb +5 -0
  18. data/lib/ruby_speech/ssml/break.rb +1 -2
  19. data/lib/ruby_speech/ssml/element.rb +13 -1
  20. data/lib/ruby_speech/ssml/mark.rb +0 -1
  21. data/lib/ruby_speech/ssml/prosody.rb +8 -5
  22. data/lib/ruby_speech/version.rb +1 -1
  23. data/ruby_speech.gemspec +13 -8
  24. data/spec/ruby_speech/grxml/builtins_spec.rb +80 -71
  25. data/spec/ruby_speech/grxml/grammar_spec.rb +168 -34
  26. data/spec/ruby_speech/grxml/item_spec.rb +33 -33
  27. data/spec/ruby_speech/grxml/match_spec.rb +1 -1
  28. data/spec/ruby_speech/grxml/matcher_spec.rb +103 -59
  29. data/spec/ruby_speech/grxml/max_match_spec.rb +2 -2
  30. data/spec/ruby_speech/grxml/no_match_spec.rb +2 -2
  31. data/spec/ruby_speech/grxml/one_of_spec.rb +6 -6
  32. data/spec/ruby_speech/grxml/potential_match_spec.rb +2 -2
  33. data/spec/ruby_speech/grxml/rule_spec.rb +17 -17
  34. data/spec/ruby_speech/grxml/ruleref_spec.rb +10 -10
  35. data/spec/ruby_speech/grxml/tag_spec.rb +5 -5
  36. data/spec/ruby_speech/grxml/token_spec.rb +7 -7
  37. data/spec/ruby_speech/grxml_spec.rb +25 -25
  38. data/spec/ruby_speech/nlsml_spec.rb +58 -10
  39. data/spec/ruby_speech/ssml/audio_spec.rb +19 -19
  40. data/spec/ruby_speech/ssml/break_spec.rb +42 -22
  41. data/spec/ruby_speech/ssml/desc_spec.rb +7 -7
  42. data/spec/ruby_speech/ssml/emphasis_spec.rb +21 -21
  43. data/spec/ruby_speech/ssml/mark_spec.rb +5 -5
  44. data/spec/ruby_speech/ssml/p_spec.rb +17 -17
  45. data/spec/ruby_speech/ssml/phoneme_spec.rb +8 -8
  46. data/spec/ruby_speech/ssml/prosody_spec.rb +82 -64
  47. data/spec/ruby_speech/ssml/s_spec.rb +16 -16
  48. data/spec/ruby_speech/ssml/say_as_spec.rb +9 -9
  49. data/spec/ruby_speech/ssml/speak_spec.rb +29 -29
  50. data/spec/ruby_speech/ssml/sub_spec.rb +7 -7
  51. data/spec/ruby_speech/ssml/voice_spec.rb +31 -31
  52. data/spec/ruby_speech/ssml_spec.rb +41 -17
  53. data/spec/ruby_speech_spec.rb +3 -3
  54. data/spec/spec_helper.rb +8 -3
  55. data/spec/support/dtmf_helper.rb +14 -0
  56. data/spec/support/grammar_matchers.rb +6 -6
  57. data/spec/support/match_examples.rb +5 -5
  58. data/spec/support/matchers.rb +1 -1
  59. metadata +49 -20
@@ -13,7 +13,7 @@ module RubySpeech
13
13
  its(:repeat) { should == 1 }
14
14
 
15
15
  it 'registers itself' do
16
- Element.class_from_registration(:item).should == Item
16
+ expect(Element.class_from_registration(:item)).to eq(Item)
17
17
  end
18
18
 
19
19
  describe "everything from a document" do
@@ -21,7 +21,7 @@ module RubySpeech
21
21
 
22
22
  subject { Element.import document }
23
23
 
24
- it { should be_instance_of Item }
24
+ it { is_expected.to be_instance_of Item }
25
25
 
26
26
  its(:weight) { should == 1.1 }
27
27
  its(:repeat) { should == 1 }
@@ -54,16 +54,16 @@ module RubySpeech
54
54
  its(:weight) { should == 1.1 }
55
55
 
56
56
  it "with valid value" do
57
- lambda { subject.weight = 1 }.should_not raise_error
58
- lambda { subject.weight = 1.0 }.should_not raise_error
59
- lambda { subject.weight = 0.1 }.should_not raise_error
60
- lambda { subject.weight = '.1' }.should_not raise_error
61
- lambda { subject.weight = '1.' }.should_not raise_error
57
+ expect { subject.weight = 1 }.not_to raise_error
58
+ expect { subject.weight = 1.0 }.not_to raise_error
59
+ expect { subject.weight = 0.1 }.not_to raise_error
60
+ expect { subject.weight = '.1' }.not_to raise_error
61
+ expect { subject.weight = '1.' }.not_to raise_error
62
62
  end
63
63
 
64
64
  it "with an invalid value" do
65
- lambda { subject.weight = 'one' }.should raise_error(ArgumentError, "A Item's weight attribute must be a positive floating point number")
66
- lambda { subject.weight = -1 }.should raise_error(ArgumentError, "A Item's weight attribute must be a positive floating point number")
65
+ expect { subject.weight = 'one' }.to raise_error(ArgumentError, "A Item's weight attribute must be a positive floating point number")
66
+ expect { subject.weight = -1 }.to raise_error(ArgumentError, "A Item's weight attribute must be a positive floating point number")
67
67
  end
68
68
  end
69
69
  end
@@ -87,8 +87,8 @@ module RubySpeech
87
87
  end
88
88
 
89
89
  it "invalid values" do
90
- lambda { subject.repeat = -1 }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
91
- lambda { subject.repeat = 'one' }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
90
+ expect { subject.repeat = -1 }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
91
+ expect { subject.repeat = 'one' }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
92
92
  end
93
93
  end
94
94
 
@@ -111,12 +111,12 @@ module RubySpeech
111
111
  end
112
112
 
113
113
  it "illegal ranges from m to n" do
114
- lambda { subject.repeat = '5-1' }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
115
- lambda { subject.repeat = '-1-2' }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
116
- lambda { subject.repeat = '1-2-3' }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
117
- lambda { subject.repeat = '1-B' }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
118
- lambda { subject.repeat = -1..2 }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
119
- lambda { subject.repeat = 1..-2 }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
114
+ expect { subject.repeat = '5-1' }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
115
+ expect { subject.repeat = '-1-2' }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
116
+ expect { subject.repeat = '1-2-3' }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
117
+ expect { subject.repeat = '1-B' }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
118
+ expect { subject.repeat = -1..2 }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
119
+ expect { subject.repeat = 1..-2 }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
120
120
  end
121
121
 
122
122
  context "valid ranges of m or more" do
@@ -134,8 +134,8 @@ module RubySpeech
134
134
  end
135
135
 
136
136
  it "illegal ranges for m or more" do
137
- lambda { subject.repeat = '-1-' }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
138
- lambda { subject.repeat = 'B-' }.should raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
137
+ expect { subject.repeat = '-1-' }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
138
+ expect { subject.repeat = 'B-' }.to raise_error(ArgumentError, "A Item's repeat must be 0 or a positive integer")
139
139
  end
140
140
  end
141
141
  end
@@ -143,17 +143,17 @@ module RubySpeech
143
143
  # repeat probability (repeat-prob) -- http://www.w3.org/TR/speech-grammar/#S2.5.1
144
144
  describe "#repeat_prob" do
145
145
  it "should handle all valid values" do
146
- lambda { subject.repeat_prob = 0 }.should_not raise_error
147
- lambda { subject.repeat_prob = 1 }.should_not raise_error
148
- lambda { subject.repeat_prob = 1.0 }.should_not raise_error
149
- lambda { subject.repeat_prob = '1.' }.should_not raise_error
150
- lambda { subject.repeat_prob = '1.0' }.should_not raise_error
151
- lambda { subject.repeat_prob = '.5' }.should_not raise_error
146
+ expect { subject.repeat_prob = 0 }.not_to raise_error
147
+ expect { subject.repeat_prob = 1 }.not_to raise_error
148
+ expect { subject.repeat_prob = 1.0 }.not_to raise_error
149
+ expect { subject.repeat_prob = '1.' }.not_to raise_error
150
+ expect { subject.repeat_prob = '1.0' }.not_to raise_error
151
+ expect { subject.repeat_prob = '.5' }.not_to raise_error
152
152
  end
153
153
 
154
154
  it "should raise an error for invalid values" do
155
- lambda { subject.repeat_prob = -1 }.should raise_error(ArgumentError, "A Item's repeat probablity attribute must be a floating point number between 0.0 and 1.0")
156
- lambda { subject.repeat_prob = 1.5 }.should raise_error(ArgumentError, "A Item's repeat probablity attribute must be a floating point number between 0.0 and 1.0")
155
+ expect { subject.repeat_prob = -1 }.to raise_error(ArgumentError, "A Item's repeat probablity attribute must be a floating point number between 0.0 and 1.0")
156
+ expect { subject.repeat_prob = 1.5 }.to raise_error(ArgumentError, "A Item's repeat probablity attribute must be a floating point number between 0.0 and 1.0")
157
157
  end
158
158
  end
159
159
 
@@ -166,27 +166,27 @@ module RubySpeech
166
166
 
167
167
  describe "<<" do
168
168
  it "should accept String" do
169
- lambda { subject << 'anything' }.should_not raise_error
169
+ expect { subject << 'anything' }.not_to raise_error
170
170
  end
171
171
 
172
172
  it "should accept OneOf" do
173
- lambda { subject << OneOf.new(doc) }.should_not raise_error
173
+ expect { subject << OneOf.new(doc) }.not_to raise_error
174
174
  end
175
175
 
176
176
  it "should accept Item" do
177
- lambda { subject << Item.new(doc) }.should_not raise_error
177
+ expect { subject << Item.new(doc) }.not_to raise_error
178
178
  end
179
179
 
180
180
  it "should accept Ruleref" do
181
- lambda { subject << Ruleref.new(doc) }.should_not raise_error
181
+ expect { subject << Ruleref.new(doc) }.not_to raise_error
182
182
  end
183
183
 
184
184
  it "should accept Tag" do
185
- lambda { subject << Tag.new(doc) }.should_not raise_error
185
+ expect { subject << Tag.new(doc) }.not_to raise_error
186
186
  end
187
187
 
188
188
  it "should accept Token" do
189
- lambda { subject << Token.new(doc) }.should_not raise_error
189
+ expect { subject << Token.new(doc) }.not_to raise_error
190
190
  end
191
191
  end
192
192
  end # Item
@@ -7,7 +7,7 @@ module RubySpeech
7
7
 
8
8
  describe "equality" do
9
9
  it "should never be equal to a MaxMatch" do
10
- described_class.new.should_not eql(MaxMatch.new)
10
+ expect(described_class.new).not_to eql(MaxMatch.new)
11
11
  end
12
12
  end
13
13
  end
@@ -23,17 +23,17 @@ module RubySpeech
23
23
  :confidence => 1,
24
24
  :utterance => '6',
25
25
  :interpretation => 'dtmf-6'
26
- subject.match(input).should == expected_match
27
- input.should == '6'
26
+ expect(subject.match(input)).to eq(expected_match)
27
+ expect(input).to eq('6')
28
28
  end
29
29
 
30
30
  it "should potentially match an empty buffer" do
31
- subject.match('').should == GRXML::PotentialMatch.new
31
+ expect(subject.match('')).to eq(GRXML::PotentialMatch.new)
32
32
  end
33
33
 
34
34
  %w{1 2 3 4 5 7 8 9 10 66 26 61}.each do |input|
35
35
  it "should not match '#{input}'" do
36
- subject.match(input).should == GRXML::NoMatch.new
36
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
37
37
  end
38
38
  end
39
39
  end
@@ -69,7 +69,7 @@ module RubySpeech
69
69
  it "should return the literal tag interpretation" do
70
70
  expected_match = GRXML::MaxMatch.new mode: :dtmf, confidence: 1,
71
71
  utterance: '2', interpretation: 'bar'
72
- subject.match('2').should == expected_match
72
+ expect(subject.match('2')).to eq(expected_match)
73
73
  end
74
74
  end
75
75
 
@@ -87,18 +87,18 @@ module RubySpeech
87
87
  :confidence => 1,
88
88
  :utterance => '56',
89
89
  :interpretation => 'dtmf-5 dtmf-6'
90
- subject.match('56').should == expected_match
90
+ expect(subject.match('56')).to eq(expected_match)
91
91
  end
92
92
 
93
93
  it "should potentially match '5'" do
94
94
  input = '5'
95
- subject.match(input).should == GRXML::PotentialMatch.new
96
- input.should == '5'
95
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
96
+ expect(input).to eq('5')
97
97
  end
98
98
 
99
99
  %w{* *7 #6 6* 1 2 3 4 6 7 8 9 10 65 57 46 26 61}.each do |input|
100
100
  it "should not match '#{input}'" do
101
- subject.match(input).should == GRXML::NoMatch.new
101
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
102
102
  end
103
103
  end
104
104
  end
@@ -117,16 +117,16 @@ module RubySpeech
117
117
  :confidence => 1,
118
118
  :utterance => '*6',
119
119
  :interpretation => 'dtmf-star dtmf-6'
120
- subject.match('*6').should == expected_match
120
+ expect(subject.match('*6')).to eq(expected_match)
121
121
  end
122
122
 
123
123
  it "should potentially match '*'" do
124
- subject.match('*').should == GRXML::PotentialMatch.new
124
+ expect(subject.match('*')).to eq(GRXML::PotentialMatch.new)
125
125
  end
126
126
 
127
127
  %w{*7 #6 6* 1 2 3 4 5 6 7 8 9 10 66 26 61}.each do |input|
128
128
  it "should not match '#{input}'" do
129
- subject.match(input).should == GRXML::NoMatch.new
129
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
130
130
  end
131
131
  end
132
132
  end
@@ -145,16 +145,16 @@ module RubySpeech
145
145
  :confidence => 1,
146
146
  :utterance => '#6',
147
147
  :interpretation => 'dtmf-pound dtmf-6'
148
- subject.match('#6').should == expected_match
148
+ expect(subject.match('#6')).to eq(expected_match)
149
149
  end
150
150
 
151
151
  it "should potentially match '#'" do
152
- subject.match('#').should == GRXML::PotentialMatch.new
152
+ expect(subject.match('#')).to eq(GRXML::PotentialMatch.new)
153
153
  end
154
154
 
155
155
  %w{* *6 #7 6* 1 2 3 4 5 6 7 8 9 10 66 26 61}.each do |input|
156
156
  it "should not match '#{input}'" do
157
- subject.match(input).should == GRXML::NoMatch.new
157
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
158
158
  end
159
159
  end
160
160
  end
@@ -178,16 +178,16 @@ module RubySpeech
178
178
  :confidence => 1,
179
179
  :utterance => '*6',
180
180
  :interpretation => 'dtmf-star dtmf-6'
181
- subject.match('*6').should == expected_match
181
+ expect(subject.match('*6')).to eq(expected_match)
182
182
  end
183
183
 
184
184
  it "should potentially match '*'" do
185
- subject.match('*').should == GRXML::PotentialMatch.new
185
+ expect(subject.match('*')).to eq(GRXML::PotentialMatch.new)
186
186
  end
187
187
 
188
188
  %w{*7 #6 6* 1 2 3 4 5 6 7 8 9 10 66 26 61}.each do |input|
189
189
  it "should not match '#{input}'" do
190
- subject.match(input).should == GRXML::NoMatch.new
190
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
191
191
  end
192
192
  end
193
193
  end
@@ -209,7 +209,7 @@ module RubySpeech
209
209
  :confidence => 1,
210
210
  :utterance => '6',
211
211
  :interpretation => 'dtmf-6'
212
- subject.match('6').should == expected_match
212
+ expect(subject.match('6')).to eq(expected_match)
213
213
  end
214
214
 
215
215
  it "should maximally match '7'" do
@@ -217,12 +217,12 @@ module RubySpeech
217
217
  :confidence => 1,
218
218
  :utterance => '7',
219
219
  :interpretation => 'dtmf-7'
220
- subject.match('7').should == expected_match
220
+ expect(subject.match('7')).to eq(expected_match)
221
221
  end
222
222
 
223
223
  %w{* # 1 2 3 4 5 8 9 10 66 26 61}.each do |input|
224
224
  it "should not match '#{input}'" do
225
- subject.match(input).should == GRXML::NoMatch.new
225
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
226
226
  end
227
227
  end
228
228
  end
@@ -250,7 +250,7 @@ module RubySpeech
250
250
  :confidence => 1,
251
251
  :utterance => '65',
252
252
  :interpretation => 'dtmf-6 dtmf-5'
253
- subject.match('65').should == expected_match
253
+ expect(subject.match('65')).to eq(expected_match)
254
254
  end
255
255
 
256
256
  it "should maximally match '72'" do
@@ -258,18 +258,18 @@ module RubySpeech
258
258
  :confidence => 1,
259
259
  :utterance => '72',
260
260
  :interpretation => 'dtmf-7 dtmf-2'
261
- subject.match('72').should == expected_match
261
+ expect(subject.match('72')).to eq(expected_match)
262
262
  end
263
263
 
264
264
  %w{6 7}.each do |input|
265
265
  it "should potentially match '#{input}'" do
266
- subject.match(input).should == GRXML::PotentialMatch.new
266
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
267
267
  end
268
268
  end
269
269
 
270
270
  %w{* # 1 2 3 4 5 8 9 10 66 26 61 75}.each do |input|
271
271
  it "should not match '#{input}'" do
272
- subject.match(input).should == GRXML::NoMatch.new
272
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
273
273
  end
274
274
  end
275
275
  end
@@ -299,7 +299,7 @@ module RubySpeech
299
299
  :confidence => 1,
300
300
  :utterance => '652',
301
301
  :interpretation => 'dtmf-6 dtmf-5 dtmf-2'
302
- subject.match('652').should == expected_match
302
+ expect(subject.match('652')).to eq(expected_match)
303
303
  end
304
304
 
305
305
  it "should maximally match '728'" do
@@ -307,18 +307,18 @@ module RubySpeech
307
307
  :confidence => 1,
308
308
  :utterance => '728',
309
309
  :interpretation => 'dtmf-7 dtmf-2 dtmf-8'
310
- subject.match('728').should == expected_match
310
+ expect(subject.match('728')).to eq(expected_match)
311
311
  end
312
312
 
313
313
  %w{6 65 7 72}.each do |input|
314
314
  it "should potentially match '#{input}'" do
315
- subject.match(input).should == GRXML::PotentialMatch.new
315
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
316
316
  end
317
317
  end
318
318
 
319
319
  %w{* # 1 2 3 4 5 8 9 10 66 26 61 75 729 654}.each do |input|
320
320
  it "should not match '#{input}'" do
321
- subject.match(input).should == GRXML::NoMatch.new
321
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
322
322
  end
323
323
  end
324
324
  end
@@ -341,7 +341,7 @@ module RubySpeech
341
341
  :confidence => 1,
342
342
  :utterance => '*6',
343
343
  :interpretation => 'dtmf-star dtmf-6'
344
- subject.match('*6').should == expected_match
344
+ expect(subject.match('*6')).to eq(expected_match)
345
345
  end
346
346
 
347
347
  it "should maximally match '*7'" do
@@ -349,16 +349,16 @@ module RubySpeech
349
349
  :confidence => 1,
350
350
  :utterance => '*7',
351
351
  :interpretation => 'dtmf-star dtmf-7'
352
- subject.match('*7').should == expected_match
352
+ expect(subject.match('*7')).to eq(expected_match)
353
353
  end
354
354
 
355
355
  it "should potentially match '*'" do
356
- subject.match('*').should == GRXML::PotentialMatch.new
356
+ expect(subject.match('*')).to eq(GRXML::PotentialMatch.new)
357
357
  end
358
358
 
359
359
  %w{*8 #6 6* 1 2 3 4 5 6 7 8 9 10 66 26 61}.each do |input|
360
360
  it "should not match '#{input}'" do
361
- subject.match(input).should == GRXML::NoMatch.new
361
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
362
362
  end
363
363
  end
364
364
  end
@@ -381,7 +381,7 @@ module RubySpeech
381
381
  :confidence => 1,
382
382
  :utterance => '6*',
383
383
  :interpretation => 'dtmf-6 dtmf-star'
384
- subject.match('6*').should == expected_match
384
+ expect(subject.match('6*')).to eq(expected_match)
385
385
  end
386
386
 
387
387
  it "should maximally match '7*'" do
@@ -389,22 +389,22 @@ module RubySpeech
389
389
  :confidence => 1,
390
390
  :utterance => '7*',
391
391
  :interpretation => 'dtmf-7 dtmf-star'
392
- subject.match('7*').should == expected_match
392
+ expect(subject.match('7*')).to eq(expected_match)
393
393
  end
394
394
 
395
395
  %w{6 7}.each do |input|
396
396
  it "should potentially match '#{input}'" do
397
- subject.match(input).should == GRXML::PotentialMatch.new
397
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
398
398
  end
399
399
  end
400
400
 
401
401
  it "should potentially match '7'" do
402
- subject.match('7').should == GRXML::PotentialMatch.new
402
+ expect(subject.match('7')).to eq(GRXML::PotentialMatch.new)
403
403
  end
404
404
 
405
405
  %w{8* 6# *6 *7 1 2 3 4 5 8 9 10 66 26 61}.each do |input|
406
406
  it "should not match '#{input}'" do
407
- subject.match(input).should == GRXML::NoMatch.new
407
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
408
408
  end
409
409
  end
410
410
  end
@@ -426,18 +426,18 @@ module RubySpeech
426
426
  :confidence => 1,
427
427
  :utterance => '166',
428
428
  :interpretation => 'dtmf-1 dtmf-6 dtmf-6'
429
- subject.match('166').should == expected_match
429
+ expect(subject.match('166')).to eq(expected_match)
430
430
  end
431
431
 
432
432
  %w{1 16}.each do |input|
433
433
  it "should potentially match '#{input}'" do
434
- subject.match(input).should == GRXML::PotentialMatch.new
434
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
435
435
  end
436
436
  end
437
437
 
438
438
  %w{1666 16666 17}.each do |input|
439
439
  it "should not match '#{input}'" do
440
- subject.match(input).should == GRXML::NoMatch.new
440
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
441
441
  end
442
442
  end
443
443
  end
@@ -459,18 +459,18 @@ module RubySpeech
459
459
  :confidence => 1,
460
460
  :utterance => '661',
461
461
  :interpretation => 'dtmf-6 dtmf-6 dtmf-1'
462
- subject.match('661').should == expected_match
462
+ expect(subject.match('661')).to eq(expected_match)
463
463
  end
464
464
 
465
465
  %w{6 66}.each do |input|
466
466
  it "should potentially match '#{input}'" do
467
- subject.match(input).should == GRXML::PotentialMatch.new
467
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
468
468
  end
469
469
  end
470
470
 
471
471
  %w{61 6661 66661 71 771}.each do |input|
472
472
  it "should not match '#{input}'" do
473
- subject.match(input).should == GRXML::NoMatch.new
473
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
474
474
  end
475
475
  end
476
476
  end
@@ -492,7 +492,7 @@ module RubySpeech
492
492
  :confidence => 1,
493
493
  :utterance => '1666',
494
494
  :interpretation => 'dtmf-1 dtmf-6 dtmf-6 dtmf-6'
495
- subject.match('1666').should == expected_match
495
+ expect(subject.match('1666')).to eq(expected_match)
496
496
  end
497
497
 
498
498
  {
@@ -505,13 +505,57 @@ module RubySpeech
505
505
  :confidence => 1,
506
506
  :utterance => input,
507
507
  :interpretation => interpretation
508
- subject.match(input).should == expected_match
508
+ expect(subject.match(input)).to eq(expected_match)
509
509
  end
510
510
  end
511
511
 
512
512
  %w{6 16666 17}.each do |input|
513
513
  it "should not match '#{input}'" do
514
- subject.match(input).should == GRXML::NoMatch.new
514
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
515
+ end
516
+ end
517
+ end
518
+
519
+ context "with a grammar that takes a a specific digit repeated within a range" do
520
+ let(:grammar) do
521
+ GRXML.draw :mode => :dtmf, :root => 'digits' do
522
+ rule :id => 'digits' do
523
+ item :repeat => 0..3 do
524
+ '6'
525
+ end
526
+ end
527
+ end
528
+ end
529
+
530
+ {
531
+ '' => '',
532
+ '6' => 'dtmf-6',
533
+ '66' => 'dtmf-6 dtmf-6',
534
+ }.each_pair do |input, interpretation|
535
+ it "should match '#{input}'" do
536
+ expected_match = GRXML::Match.new :mode => :dtmf,
537
+ :confidence => 1,
538
+ :utterance => input,
539
+ :interpretation => interpretation
540
+ expect(subject.match(input)).to eq(expected_match)
541
+ end
542
+ end
543
+
544
+ {
545
+ '666' => 'dtmf-6 dtmf-6 dtmf-6',
546
+ }.each_pair do |input, interpretation|
547
+ it "should maximally match '#{input}'" do
548
+ expected_match = GRXML::MaxMatch.new :mode => :dtmf,
549
+ :confidence => 1,
550
+ :utterance => input,
551
+ :interpretation => interpretation
552
+ expect(subject.match(input)).to eq(expected_match)
553
+ end
554
+ end
555
+
556
+ %w{6666 7}.each do |input|
557
+ it "should not match '#{input}'" do
558
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
515
559
  end
516
560
  end
517
561
  end
@@ -539,19 +583,19 @@ module RubySpeech
539
583
  :confidence => 1,
540
584
  :utterance => input,
541
585
  :interpretation => interpretation
542
- subject.match(input).should == expected_match
586
+ expect(subject.match(input)).to eq(expected_match)
543
587
  end
544
588
  end
545
589
 
546
590
  %w{6 66 666}.each do |input|
547
591
  it "should potentially match '#{input}'" do
548
- subject.match(input).should == GRXML::PotentialMatch.new
592
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
549
593
  end
550
594
  end
551
595
 
552
596
  %w{66661 71}.each do |input|
553
597
  it "should not match '#{input}'" do
554
- subject.match(input).should == GRXML::NoMatch.new
598
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
555
599
  end
556
600
  end
557
601
  end
@@ -578,19 +622,19 @@ module RubySpeech
578
622
  :confidence => 1,
579
623
  :utterance => input,
580
624
  :interpretation => interpretation
581
- subject.match(input).should == expected_match
625
+ expect(subject.match(input)).to eq(expected_match)
582
626
  end
583
627
  end
584
628
 
585
629
  %w{1 16}.each do |input|
586
630
  it "should potentially match '#{input}'" do
587
- subject.match(input).should == GRXML::PotentialMatch.new
631
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
588
632
  end
589
633
  end
590
634
 
591
635
  %w{7 17}.each do |input|
592
636
  it "should not match '#{input}'" do
593
- subject.match(input).should == GRXML::NoMatch.new
637
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
594
638
  end
595
639
  end
596
640
  end
@@ -617,19 +661,19 @@ module RubySpeech
617
661
  :confidence => 1,
618
662
  :utterance => input,
619
663
  :interpretation => interpretation
620
- subject.match(input).should == expected_match
664
+ expect(subject.match(input)).to eq(expected_match)
621
665
  end
622
666
  end
623
667
 
624
668
  %w{6 66}.each do |input|
625
669
  it "should potentially match '#{input}'" do
626
- subject.match(input).should == GRXML::PotentialMatch.new
670
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
627
671
  end
628
672
  end
629
673
 
630
674
  %w{7 71 61}.each do |input|
631
675
  it "should not match '#{input}'" do
632
- subject.match(input).should == GRXML::NoMatch.new
676
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
633
677
  end
634
678
  end
635
679
  end
@@ -670,19 +714,19 @@ module RubySpeech
670
714
  :confidence => 1,
671
715
  :utterance => input,
672
716
  :interpretation => interpretation
673
- subject.match(input).should == expected_match
717
+ expect(subject.match(input)).to eq(expected_match)
674
718
  end
675
719
  end
676
720
 
677
721
  %w{* 1 12 123 1234}.each do |input|
678
722
  it "should potentially match '#{input}'" do
679
- subject.match(input).should == GRXML::PotentialMatch.new
723
+ expect(subject.match(input)).to eq(GRXML::PotentialMatch.new)
680
724
  end
681
725
  end
682
726
 
683
727
  %w{11111 #1111 *7}.each do |input|
684
728
  it "should not match '#{input}'" do
685
- subject.match(input).should == GRXML::NoMatch.new
729
+ expect(subject.match(input)).to eq(GRXML::NoMatch.new)
686
730
  end
687
731
  end
688
732
  end
@@ -5,11 +5,11 @@ module RubySpeech
5
5
  describe MaxMatch do
6
6
  it_behaves_like "match"
7
7
 
8
- it { should be_a Match }
8
+ it { is_expected.to be_a Match }
9
9
 
10
10
  describe "equality" do
11
11
  it "should never be equal to a MaxMatch" do
12
- described_class.new.should_not eql(Match.new)
12
+ expect(described_class.new).not_to eql(Match.new)
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module RubySpeech
5
5
  describe NoMatch do
6
6
  describe "equality" do
7
7
  it "should be equal to another NoMatch" do
8
- NoMatch.new.should == NoMatch.new
8
+ expect(NoMatch.new).to eq(NoMatch.new)
9
9
  end
10
10
 
11
11
  it "should not equal a match" do
12
- NoMatch.new.should_not == Match.new
12
+ expect(NoMatch.new).not_to eq(Match.new)
13
13
  end
14
14
  end
15
15
  end