ruby_speech 2.1.2-java → 2.2.0-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.
- data/.travis.yml +1 -2
- data/CHANGELOG.md +8 -0
- data/README.md +23 -0
- data/ext/ruby_speech/extconf.rb +3 -1
- data/ext/ruby_speech/ruby_speech.c +4 -1
- data/lib/ruby_speech/generic_element.rb +141 -29
- data/lib/ruby_speech/grxml/element.rb +6 -6
- data/lib/ruby_speech/grxml/grammar.rb +29 -12
- data/lib/ruby_speech/grxml/item.rb +13 -0
- data/lib/ruby_speech/grxml/matcher.rb +5 -1
- data/lib/ruby_speech/grxml/one_of.rb +4 -0
- data/lib/ruby_speech/grxml/rule.rb +10 -0
- data/lib/ruby_speech/grxml/token.rb +3 -0
- data/lib/ruby_speech/grxml.rb +16 -22
- data/lib/ruby_speech/nlsml.rb +3 -9
- data/lib/ruby_speech/ruby_speech.jar +0 -0
- data/lib/ruby_speech/ssml/audio.rb +17 -0
- data/lib/ruby_speech/ssml/desc.rb +4 -0
- data/lib/ruby_speech/ssml/element.rb +5 -3
- data/lib/ruby_speech/ssml/emphasis.rb +17 -0
- data/lib/ruby_speech/ssml/mark.rb +2 -0
- data/lib/ruby_speech/ssml/p.rb +21 -0
- data/lib/ruby_speech/ssml/phoneme.rb +2 -0
- data/lib/ruby_speech/ssml/prosody.rb +15 -0
- data/lib/ruby_speech/ssml/s.rb +20 -0
- data/lib/ruby_speech/ssml/say_as.rb +2 -0
- data/lib/ruby_speech/ssml/speak.rb +19 -1
- data/lib/ruby_speech/ssml/sub.rb +2 -0
- data/lib/ruby_speech/ssml/voice.rb +19 -0
- data/lib/ruby_speech/ssml.rb +20 -22
- data/lib/ruby_speech/version.rb +1 -1
- data/lib/ruby_speech.rb +6 -19
- data/ruby_speech.gemspec +2 -3
- data/spec/ruby_speech/grxml/grammar_spec.rb +35 -30
- data/spec/ruby_speech/grxml/item_spec.rb +8 -6
- data/spec/ruby_speech/grxml/one_of_spec.rb +7 -3
- data/spec/ruby_speech/grxml/rule_spec.rb +14 -12
- data/spec/ruby_speech/grxml/ruleref_spec.rb +5 -3
- data/spec/ruby_speech/grxml/tag_spec.rb +6 -2
- data/spec/ruby_speech/grxml/token_spec.rb +6 -2
- data/spec/ruby_speech/grxml_spec.rb +57 -69
- data/spec/ruby_speech/ssml/audio_spec.rb +20 -16
- data/spec/ruby_speech/ssml/break_spec.rb +14 -10
- data/spec/ruby_speech/ssml/desc_spec.rb +9 -5
- data/spec/ruby_speech/ssml/emphasis_spec.rb +17 -13
- data/spec/ruby_speech/ssml/mark_spec.rb +7 -3
- data/spec/ruby_speech/ssml/p_spec.rb +18 -14
- data/spec/ruby_speech/ssml/phoneme_spec.rb +10 -6
- data/spec/ruby_speech/ssml/prosody_spec.rb +29 -25
- data/spec/ruby_speech/ssml/s_spec.rb +17 -13
- data/spec/ruby_speech/ssml/say_as_spec.rb +11 -7
- data/spec/ruby_speech/ssml/speak_spec.rb +48 -32
- data/spec/ruby_speech/ssml/sub_spec.rb +9 -5
- data/spec/ruby_speech/ssml/voice_spec.rb +23 -19
- data/spec/ruby_speech/ssml_spec.rb +64 -63
- data/spec/spec_helper.rb +0 -3
- metadata +12 -35
- data/lib/ruby_speech/xml.rb +0 -11
@@ -3,10 +3,14 @@ require 'spec_helper'
|
|
3
3
|
module RubySpeech
|
4
4
|
module SSML
|
5
5
|
describe P do
|
6
|
+
let(:doc) { Nokogiri::XML::Document.new }
|
7
|
+
|
8
|
+
subject { described_class.new doc }
|
9
|
+
|
6
10
|
its(:name) { should == 'p' }
|
7
11
|
|
8
12
|
describe "setting options in initializers" do
|
9
|
-
subject { P.new :language => 'jp' }
|
13
|
+
subject { P.new doc, :language => 'jp' }
|
10
14
|
|
11
15
|
its(:language) { should == 'jp' }
|
12
16
|
end
|
@@ -26,18 +30,18 @@ module RubySpeech
|
|
26
30
|
|
27
31
|
describe "comparing objects" do
|
28
32
|
it "should be equal if the content and language are the same" do
|
29
|
-
P.new(:language => 'jp', :content => "Hello there").should == P.new(:language => 'jp', :content => "Hello there")
|
33
|
+
P.new(doc, :language => 'jp', :content => "Hello there").should == P.new(doc, :language => 'jp', :content => "Hello there")
|
30
34
|
end
|
31
35
|
|
32
36
|
describe "when the content is different" do
|
33
37
|
it "should not be equal" do
|
34
|
-
P.new(:content => "Hello").should_not == P.new(:content => "Hello there")
|
38
|
+
P.new(doc, :content => "Hello").should_not == P.new(doc, :content => "Hello there")
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
38
42
|
describe "when the language is different" do
|
39
43
|
it "should not be equal" do
|
40
|
-
P.new(:language => 'jp').should_not == P.new(:language => 'en')
|
44
|
+
P.new(doc, :language => 'jp').should_not == P.new(doc, :language => 'en')
|
41
45
|
end
|
42
46
|
end
|
43
47
|
end
|
@@ -48,43 +52,43 @@ module RubySpeech
|
|
48
52
|
end
|
49
53
|
|
50
54
|
it "should accept Audio" do
|
51
|
-
lambda { subject << Audio.new }.should_not raise_error
|
55
|
+
lambda { subject << Audio.new(doc) }.should_not raise_error
|
52
56
|
end
|
53
57
|
|
54
58
|
it "should accept Break" do
|
55
|
-
lambda { subject << Break.new }.should_not raise_error
|
59
|
+
lambda { subject << Break.new(doc) }.should_not raise_error
|
56
60
|
end
|
57
61
|
|
58
62
|
it "should accept Emphasis" do
|
59
|
-
lambda { subject << Emphasis.new }.should_not raise_error
|
63
|
+
lambda { subject << Emphasis.new(doc) }.should_not raise_error
|
60
64
|
end
|
61
65
|
|
62
66
|
it "should accept Mark" do
|
63
|
-
lambda { subject << Mark.new }.should_not raise_error
|
67
|
+
lambda { subject << Mark.new(doc) }.should_not raise_error
|
64
68
|
end
|
65
69
|
|
66
70
|
it "should accept Phoneme" do
|
67
|
-
lambda { subject << Phoneme.new }.should_not raise_error
|
71
|
+
lambda { subject << Phoneme.new(doc) }.should_not raise_error
|
68
72
|
end
|
69
73
|
|
70
74
|
it "should accept Prosody" do
|
71
|
-
lambda { subject << Prosody.new }.should_not raise_error
|
75
|
+
lambda { subject << Prosody.new(doc) }.should_not raise_error
|
72
76
|
end
|
73
77
|
|
74
78
|
it "should accept SayAs" do
|
75
|
-
lambda { subject << SayAs.new(:interpret_as => :foo) }.should_not raise_error
|
79
|
+
lambda { subject << SayAs.new(doc, :interpret_as => :foo) }.should_not raise_error
|
76
80
|
end
|
77
81
|
|
78
82
|
it "should accept Sub" do
|
79
|
-
lambda { subject << Sub.new }.should_not raise_error
|
83
|
+
lambda { subject << Sub.new(doc) }.should_not raise_error
|
80
84
|
end
|
81
85
|
|
82
86
|
it "should accept S" do
|
83
|
-
lambda { subject << S.new }.should_not raise_error
|
87
|
+
lambda { subject << S.new(doc) }.should_not raise_error
|
84
88
|
end
|
85
89
|
|
86
90
|
it "should accept Voice" do
|
87
|
-
lambda { subject << Voice.new }.should_not raise_error
|
91
|
+
lambda { subject << Voice.new(doc) }.should_not raise_error
|
88
92
|
end
|
89
93
|
|
90
94
|
it "should raise InvalidChildError with non-acceptable objects" do
|
@@ -3,10 +3,14 @@ require 'spec_helper'
|
|
3
3
|
module RubySpeech
|
4
4
|
module SSML
|
5
5
|
describe Phoneme do
|
6
|
+
let(:doc) { Nokogiri::XML::Document.new }
|
7
|
+
|
8
|
+
subject { described_class.new doc }
|
9
|
+
|
6
10
|
its(:name) { should == 'phoneme' }
|
7
11
|
|
8
12
|
describe "setting options in initializers" do
|
9
|
-
subject { Phoneme.new :alphabet => 'foo', :ph => 'bar' }
|
13
|
+
subject { Phoneme.new doc, :alphabet => 'foo', :ph => 'bar' }
|
10
14
|
|
11
15
|
its(:alphabet) { should == 'foo' }
|
12
16
|
its(:ph) { should == 'bar' }
|
@@ -29,24 +33,24 @@ module RubySpeech
|
|
29
33
|
|
30
34
|
describe "comparing objects" do
|
31
35
|
it "should be equal if the content, ph and alphabet are the same" do
|
32
|
-
Phoneme.new(:alphabet => 'jp', :ph => 'foo', :content => "Hello there").should == Phoneme.new(:alphabet => 'jp', :ph => 'foo', :content => "Hello there")
|
36
|
+
Phoneme.new(doc, :alphabet => 'jp', :ph => 'foo', :content => "Hello there").should == Phoneme.new(doc, :alphabet => 'jp', :ph => 'foo', :content => "Hello there")
|
33
37
|
end
|
34
38
|
|
35
39
|
describe "when the content is different" do
|
36
40
|
it "should not be equal" do
|
37
|
-
Phoneme.new(:content => "Hello").should_not == Phoneme.new(:content => "Hello there")
|
41
|
+
Phoneme.new(doc, :content => "Hello").should_not == Phoneme.new(doc, :content => "Hello there")
|
38
42
|
end
|
39
43
|
end
|
40
44
|
|
41
45
|
describe "when the ph is different" do
|
42
46
|
it "should not be equal" do
|
43
|
-
Phoneme.new(:ph => 'jp').should_not == Phoneme.new(:ph => 'en')
|
47
|
+
Phoneme.new(doc, :ph => 'jp').should_not == Phoneme.new(doc, :ph => 'en')
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
47
51
|
describe "when the alphabet is different" do
|
48
52
|
it "should not be equal" do
|
49
|
-
Phoneme.new(:alphabet => 'jp').should_not == Phoneme.new(:alphabet => 'en')
|
53
|
+
Phoneme.new(doc, :alphabet => 'jp').should_not == Phoneme.new(doc, :alphabet => 'en')
|
50
54
|
end
|
51
55
|
end
|
52
56
|
end
|
@@ -57,7 +61,7 @@ module RubySpeech
|
|
57
61
|
end
|
58
62
|
|
59
63
|
it "should raise InvalidChildError with non-acceptable objects" do
|
60
|
-
lambda { subject << Voice.new }.should raise_error(InvalidChildError, "A Phoneme can only accept Strings as children")
|
64
|
+
lambda { subject << Voice.new(doc) }.should raise_error(InvalidChildError, "A Phoneme can only accept Strings as children")
|
61
65
|
end
|
62
66
|
end
|
63
67
|
end # Desc
|
@@ -3,16 +3,20 @@ require 'spec_helper'
|
|
3
3
|
module RubySpeech
|
4
4
|
module SSML
|
5
5
|
describe Prosody do
|
6
|
+
let(:doc) { Nokogiri::XML::Document.new }
|
7
|
+
|
8
|
+
subject { described_class.new doc }
|
9
|
+
|
6
10
|
its(:name) { should == 'prosody' }
|
7
11
|
|
8
12
|
describe "setting options in initializers" do
|
9
|
-
subject { Prosody.new :pitch => :medium, :contour => "something", :range => '20Hz', :rate => 2, :duration => 10
|
13
|
+
subject { Prosody.new doc, :pitch => :medium, :contour => "something", :range => '20Hz', :rate => 2, :duration => 10, :volume => :loud }
|
10
14
|
|
11
15
|
its(:pitch) { should == :medium }
|
12
16
|
its(:contour) { should == 'something' }
|
13
17
|
its(:range) { should == '20Hz' }
|
14
18
|
its(:rate) { should == 2 }
|
15
|
-
its(:duration) { should == 10
|
19
|
+
its(:duration) { should == 10 }
|
16
20
|
its(:volume) { should == :loud }
|
17
21
|
end
|
18
22
|
|
@@ -31,7 +35,7 @@ module RubySpeech
|
|
31
35
|
its(:contour) { should == 'something' }
|
32
36
|
its(:range) { should == '20Hz' }
|
33
37
|
its(:rate) { should == 2 }
|
34
|
-
its(:duration) { should == 10
|
38
|
+
its(:duration) { should == 10 }
|
35
39
|
its(:volume) { should == :loud }
|
36
40
|
end
|
37
41
|
|
@@ -150,14 +154,14 @@ module RubySpeech
|
|
150
154
|
|
151
155
|
describe "#duration" do
|
152
156
|
context "with a valid value" do
|
153
|
-
before { subject.duration = 3
|
157
|
+
before { subject.duration = 3 }
|
154
158
|
|
155
|
-
its(:duration) { should == 3
|
159
|
+
its(:duration) { should == 3 }
|
156
160
|
end
|
157
161
|
|
158
162
|
context "with a negative value" do
|
159
163
|
it do
|
160
|
-
lambda { subject.duration = -3
|
164
|
+
lambda { subject.duration = -3 }.should raise_error(ArgumentError, "You must specify a valid duration (positive float value in seconds)")
|
161
165
|
end
|
162
166
|
end
|
163
167
|
|
@@ -205,48 +209,48 @@ module RubySpeech
|
|
205
209
|
|
206
210
|
describe "comparing objects" do
|
207
211
|
it "should be equal if the content, strength and base uri are the same" do
|
208
|
-
Prosody.new(:pitch => :medium, :contour => "something", :range => '20Hz', :rate => 2, :duration => 10
|
212
|
+
Prosody.new(doc, :pitch => :medium, :contour => "something", :range => '20Hz', :rate => 2, :duration => 10, :volume => :loud, :content => "Hello there").should == Prosody.new(doc, :pitch => :medium, :contour => "something", :range => '20Hz', :rate => 2, :duration => 10, :volume => :loud, :content => "Hello there")
|
209
213
|
end
|
210
214
|
|
211
215
|
describe "when the content is different" do
|
212
216
|
it "should not be equal" do
|
213
|
-
Prosody.new(:content => "Hello").should_not == Prosody.new(:content => "Hello there")
|
217
|
+
Prosody.new(doc, :content => "Hello").should_not == Prosody.new(doc, :content => "Hello there")
|
214
218
|
end
|
215
219
|
end
|
216
220
|
|
217
221
|
describe "when the pitch is different" do
|
218
222
|
it "should not be equal" do
|
219
|
-
Prosody.new(:pitch => :medium).should_not == Prosody.new(:pitch => :high)
|
223
|
+
Prosody.new(doc, :pitch => :medium).should_not == Prosody.new(doc, :pitch => :high)
|
220
224
|
end
|
221
225
|
end
|
222
226
|
|
223
227
|
describe "when the contour is different" do
|
224
228
|
it "should not be equal" do
|
225
|
-
Prosody.new(:contour => 'foo').should_not == Prosody.new(:contour => 'bar')
|
229
|
+
Prosody.new(doc, :contour => 'foo').should_not == Prosody.new(doc, :contour => 'bar')
|
226
230
|
end
|
227
231
|
end
|
228
232
|
|
229
233
|
describe "when the range is different" do
|
230
234
|
it "should not be equal" do
|
231
|
-
Prosody.new(:range => '20Hz').should_not == Prosody.new(:range => '30Hz')
|
235
|
+
Prosody.new(doc, :range => '20Hz').should_not == Prosody.new(doc, :range => '30Hz')
|
232
236
|
end
|
233
237
|
end
|
234
238
|
|
235
239
|
describe "when the rate is different" do
|
236
240
|
it "should not be equal" do
|
237
|
-
Prosody.new(:rate => 2).should_not == Prosody.new(:rate => 3)
|
241
|
+
Prosody.new(doc, :rate => 2).should_not == Prosody.new(doc, :rate => 3)
|
238
242
|
end
|
239
243
|
end
|
240
244
|
|
241
245
|
describe "when the duration is different" do
|
242
246
|
it "should not be equal" do
|
243
|
-
Prosody.new(:duration => 10
|
247
|
+
Prosody.new(doc, :duration => 10).should_not == Prosody.new(doc, :duration => 20)
|
244
248
|
end
|
245
249
|
end
|
246
250
|
|
247
251
|
describe "when the volume is different" do
|
248
252
|
it "should not be equal" do
|
249
|
-
Prosody.new(:volume => :loud).should_not == Prosody.new(:volume => :soft)
|
253
|
+
Prosody.new(doc, :volume => :loud).should_not == Prosody.new(doc, :volume => :soft)
|
250
254
|
end
|
251
255
|
end
|
252
256
|
end
|
@@ -257,47 +261,47 @@ module RubySpeech
|
|
257
261
|
end
|
258
262
|
|
259
263
|
it "should accept Audio" do
|
260
|
-
lambda { subject << Audio.new }.should_not raise_error
|
264
|
+
lambda { subject << Audio.new(doc) }.should_not raise_error
|
261
265
|
end
|
262
266
|
|
263
267
|
it "should accept Break" do
|
264
|
-
lambda { subject << Break.new }.should_not raise_error
|
268
|
+
lambda { subject << Break.new(doc) }.should_not raise_error
|
265
269
|
end
|
266
270
|
|
267
271
|
it "should accept Emphasis" do
|
268
|
-
lambda { subject << Emphasis.new }.should_not raise_error
|
272
|
+
lambda { subject << Emphasis.new(doc) }.should_not raise_error
|
269
273
|
end
|
270
274
|
|
271
275
|
it "should accept Mark" do
|
272
|
-
lambda { subject << Mark.new }.should_not raise_error
|
276
|
+
lambda { subject << Mark.new(doc) }.should_not raise_error
|
273
277
|
end
|
274
278
|
|
275
279
|
it "should accept P" do
|
276
|
-
lambda { subject << P.new }.should_not raise_error
|
280
|
+
lambda { subject << P.new(doc) }.should_not raise_error
|
277
281
|
end
|
278
282
|
|
279
283
|
it "should accept Phoneme" do
|
280
|
-
lambda { subject << Phoneme.new }.should_not raise_error
|
284
|
+
lambda { subject << Phoneme.new(doc) }.should_not raise_error
|
281
285
|
end
|
282
286
|
|
283
287
|
it "should accept Prosody" do
|
284
|
-
lambda { subject << Prosody.new }.should_not raise_error
|
288
|
+
lambda { subject << Prosody.new(doc) }.should_not raise_error
|
285
289
|
end
|
286
290
|
|
287
291
|
it "should accept S" do
|
288
|
-
lambda { subject << S.new }.should_not raise_error
|
292
|
+
lambda { subject << S.new(doc) }.should_not raise_error
|
289
293
|
end
|
290
294
|
|
291
295
|
it "should accept SayAs" do
|
292
|
-
lambda { subject << SayAs.new(:interpret_as => :foo) }.should_not raise_error
|
296
|
+
lambda { subject << SayAs.new(doc, :interpret_as => :foo) }.should_not raise_error
|
293
297
|
end
|
294
298
|
|
295
299
|
it "should accept Sub" do
|
296
|
-
lambda { subject << Sub.new }.should_not raise_error
|
300
|
+
lambda { subject << Sub.new(doc) }.should_not raise_error
|
297
301
|
end
|
298
302
|
|
299
303
|
it "should accept Voice" do
|
300
|
-
lambda { subject << Voice.new }.should_not raise_error
|
304
|
+
lambda { subject << Voice.new(doc) }.should_not raise_error
|
301
305
|
end
|
302
306
|
|
303
307
|
it "should raise InvalidChildError with non-acceptable objects" do
|
@@ -3,10 +3,14 @@ require 'spec_helper'
|
|
3
3
|
module RubySpeech
|
4
4
|
module SSML
|
5
5
|
describe S do
|
6
|
+
let(:doc) { Nokogiri::XML::Document.new }
|
7
|
+
|
8
|
+
subject { described_class.new doc }
|
9
|
+
|
6
10
|
its(:name) { should == 's' }
|
7
11
|
|
8
12
|
describe "setting options in initializers" do
|
9
|
-
subject { S.new :language => 'jp' }
|
13
|
+
subject { S.new doc, :language => 'jp' }
|
10
14
|
|
11
15
|
its(:language) { should == 'jp' }
|
12
16
|
end
|
@@ -26,18 +30,18 @@ module RubySpeech
|
|
26
30
|
|
27
31
|
describe "comparing objects" do
|
28
32
|
it "should be equal if the content and language are the same" do
|
29
|
-
S.new(:language => 'jp', :content => "Hello there").should == S.new(:language => 'jp', :content => "Hello there")
|
33
|
+
S.new(doc, :language => 'jp', :content => "Hello there").should == S.new(doc, :language => 'jp', :content => "Hello there")
|
30
34
|
end
|
31
35
|
|
32
36
|
describe "when the content is different" do
|
33
37
|
it "should not be equal" do
|
34
|
-
S.new(:content => "Hello").should_not == S.new(:content => "Hello there")
|
38
|
+
S.new(doc, :content => "Hello").should_not == S.new(doc, :content => "Hello there")
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
38
42
|
describe "when the language is different" do
|
39
43
|
it "should not be equal" do
|
40
|
-
S.new(:language => 'jp').should_not == S.new(:language => 'en')
|
44
|
+
S.new(doc, :language => 'jp').should_not == S.new(doc, :language => 'en')
|
41
45
|
end
|
42
46
|
end
|
43
47
|
end
|
@@ -48,39 +52,39 @@ module RubySpeech
|
|
48
52
|
end
|
49
53
|
|
50
54
|
it "should accept Audio" do
|
51
|
-
lambda { subject << Audio.new }.should_not raise_error
|
55
|
+
lambda { subject << Audio.new(doc) }.should_not raise_error
|
52
56
|
end
|
53
57
|
|
54
58
|
it "should accept Break" do
|
55
|
-
lambda { subject << Break.new }.should_not raise_error
|
59
|
+
lambda { subject << Break.new(doc) }.should_not raise_error
|
56
60
|
end
|
57
61
|
|
58
62
|
it "should accept Emphasis" do
|
59
|
-
lambda { subject << Emphasis.new }.should_not raise_error
|
63
|
+
lambda { subject << Emphasis.new(doc) }.should_not raise_error
|
60
64
|
end
|
61
65
|
|
62
66
|
it "should accept Mark" do
|
63
|
-
lambda { subject << Mark.new }.should_not raise_error
|
67
|
+
lambda { subject << Mark.new(doc) }.should_not raise_error
|
64
68
|
end
|
65
69
|
|
66
70
|
it "should accept Phoneme" do
|
67
|
-
lambda { subject << Phoneme.new }.should_not raise_error
|
71
|
+
lambda { subject << Phoneme.new(doc) }.should_not raise_error
|
68
72
|
end
|
69
73
|
|
70
74
|
it "should accept Prosody" do
|
71
|
-
lambda { subject << Prosody.new }.should_not raise_error
|
75
|
+
lambda { subject << Prosody.new(doc) }.should_not raise_error
|
72
76
|
end
|
73
77
|
|
74
78
|
it "should accept SayAs" do
|
75
|
-
lambda { subject << SayAs.new(:interpret_as => :foo) }.should_not raise_error
|
79
|
+
lambda { subject << SayAs.new(doc, :interpret_as => :foo) }.should_not raise_error
|
76
80
|
end
|
77
81
|
|
78
82
|
it "should accept Sub" do
|
79
|
-
lambda { subject << Sub.new }.should_not raise_error
|
83
|
+
lambda { subject << Sub.new(doc) }.should_not raise_error
|
80
84
|
end
|
81
85
|
|
82
86
|
it "should accept Voice" do
|
83
|
-
lambda { subject << Voice.new }.should_not raise_error
|
87
|
+
lambda { subject << Voice.new(doc) }.should_not raise_error
|
84
88
|
end
|
85
89
|
|
86
90
|
it "should raise InvalidChildError with non-acceptable objects" do
|
@@ -3,7 +3,11 @@ require 'spec_helper'
|
|
3
3
|
module RubySpeech
|
4
4
|
module SSML
|
5
5
|
describe SayAs do
|
6
|
-
|
6
|
+
let(:doc) { Nokogiri::XML::Document.new }
|
7
|
+
|
8
|
+
subject { described_class.new doc }
|
9
|
+
|
10
|
+
subject { SayAs.new doc, :interpret_as => 'one', :format => 'two', :detail => 'three' }
|
7
11
|
|
8
12
|
its(:name) { should == 'say-as' }
|
9
13
|
|
@@ -29,30 +33,30 @@ module RubySpeech
|
|
29
33
|
|
30
34
|
describe "comparing objects" do
|
31
35
|
it "should be equal if the content, interpret_as, format, age, variant, name are the same" do
|
32
|
-
SayAs.new(:interpret_as => 'jp', :format => 'foo', :detail => 'bar', :content => "hello").should == SayAs.new(:interpret_as => 'jp', :format => 'foo', :detail => 'bar', :content => "hello")
|
36
|
+
SayAs.new(doc, :interpret_as => 'jp', :format => 'foo', :detail => 'bar', :content => "hello").should == SayAs.new(doc, :interpret_as => 'jp', :format => 'foo', :detail => 'bar', :content => "hello")
|
33
37
|
end
|
34
38
|
|
35
39
|
describe "when the content is different" do
|
36
40
|
it "should not be equal" do
|
37
|
-
SayAs.new(:interpret_as => 'jp', :content => "Hello").should_not == SayAs.new(:interpret_as => 'jp', :content => "Hello there")
|
41
|
+
SayAs.new(doc, :interpret_as => 'jp', :content => "Hello").should_not == SayAs.new(doc, :interpret_as => 'jp', :content => "Hello there")
|
38
42
|
end
|
39
43
|
end
|
40
44
|
|
41
45
|
describe "when the interpret_as is different" do
|
42
46
|
it "should not be equal" do
|
43
|
-
SayAs.new(:interpret_as => "Hello").should_not == SayAs.new(:interpret_as => "Hello there")
|
47
|
+
SayAs.new(doc, :interpret_as => "Hello").should_not == SayAs.new(doc, :interpret_as => "Hello there")
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
47
51
|
describe "when the format is different" do
|
48
52
|
it "should not be equal" do
|
49
|
-
SayAs.new(:interpret_as => 'jp', :format => 'foo').should_not == SayAs.new(:interpret_as => 'jp', :format => 'bar')
|
53
|
+
SayAs.new(doc, :interpret_as => 'jp', :format => 'foo').should_not == SayAs.new(doc, :interpret_as => 'jp', :format => 'bar')
|
50
54
|
end
|
51
55
|
end
|
52
56
|
|
53
57
|
describe "when the detail is different" do
|
54
58
|
it "should not be equal" do
|
55
|
-
SayAs.new(:interpret_as => 'jp', :detail => 'foo').should_not == SayAs.new(:interpret_as => 'jp', :detail => 'bar')
|
59
|
+
SayAs.new(doc, :interpret_as => 'jp', :detail => 'foo').should_not == SayAs.new(doc, :interpret_as => 'jp', :detail => 'bar')
|
56
60
|
end
|
57
61
|
end
|
58
62
|
end
|
@@ -63,7 +67,7 @@ module RubySpeech
|
|
63
67
|
end
|
64
68
|
|
65
69
|
it "should raise InvalidChildError with non-acceptable objects" do
|
66
|
-
lambda { subject << Voice.new }.should raise_error(InvalidChildError, "A SayAs can only accept Strings as children")
|
70
|
+
lambda { subject << Voice.new(doc) }.should raise_error(InvalidChildError, "A SayAs can only accept Strings as children")
|
67
71
|
end
|
68
72
|
end
|
69
73
|
end # SayAs
|
@@ -3,13 +3,17 @@ require 'spec_helper'
|
|
3
3
|
module RubySpeech
|
4
4
|
module SSML
|
5
5
|
describe Speak do
|
6
|
+
let(:doc) { Nokogiri::XML::Document.new }
|
7
|
+
|
8
|
+
subject { described_class.new doc }
|
9
|
+
|
6
10
|
it { should be_a_valid_ssml_document }
|
7
11
|
|
8
12
|
its(:name) { should == 'speak' }
|
9
13
|
its(:language) { should == 'en-US' }
|
10
14
|
|
11
15
|
describe "setting options in initializers" do
|
12
|
-
subject { Speak.new :language => 'jp', :base_uri => 'blah' }
|
16
|
+
subject { Speak.new doc, :language => 'jp', :base_uri => 'blah' }
|
13
17
|
|
14
18
|
its(:language) { should == 'jp' }
|
15
19
|
its(:base_uri) { should == 'blah' }
|
@@ -44,33 +48,33 @@ module RubySpeech
|
|
44
48
|
|
45
49
|
describe "comparing objects" do
|
46
50
|
it "should be equal if the content, language and base uri are the same" do
|
47
|
-
Speak.new(:language => 'en-GB', :base_uri => 'blah', :content => "Hello there").should == Speak.new(:language => 'en-GB', :base_uri => 'blah', :content => "Hello there")
|
51
|
+
Speak.new(doc, :language => 'en-GB', :base_uri => 'blah', :content => "Hello there").should == Speak.new(doc, :language => 'en-GB', :base_uri => 'blah', :content => "Hello there")
|
48
52
|
end
|
49
53
|
|
50
54
|
describe "when the content is different" do
|
51
55
|
it "should not be equal" do
|
52
|
-
Speak.new(:content => "Hello").should_not == Speak.new(:content => "Hello there")
|
56
|
+
Speak.new(doc, :content => "Hello").should_not == Speak.new(doc, :content => "Hello there")
|
53
57
|
end
|
54
58
|
end
|
55
59
|
|
56
60
|
describe "when the language is different" do
|
57
61
|
it "should not be equal" do
|
58
|
-
Speak.new(:language => 'en-US').should_not == Speak.new(:language => 'en-GB')
|
62
|
+
Speak.new(doc, :language => 'en-US').should_not == Speak.new(doc, :language => 'en-GB')
|
59
63
|
end
|
60
64
|
end
|
61
65
|
|
62
66
|
describe "when the base URI is different" do
|
63
67
|
it "should not be equal" do
|
64
|
-
Speak.new(:base_uri => 'foo').should_not == Speak.new(:base_uri => 'bar')
|
68
|
+
Speak.new(doc, :base_uri => 'foo').should_not == Speak.new(doc, :base_uri => 'bar')
|
65
69
|
end
|
66
70
|
end
|
67
71
|
|
68
72
|
describe "when the children are different" do
|
69
73
|
it "should not be equal" do
|
70
|
-
s1 = Speak.new
|
71
|
-
s1 << SayAs.new(:interpret_as => 'date')
|
72
|
-
s2 = Speak.new
|
73
|
-
s2 << SayAs.new(:interpret_as => 'time')
|
74
|
+
s1 = Speak.new doc
|
75
|
+
s1 << SayAs.new(doc, :interpret_as => 'date')
|
76
|
+
s2 = Speak.new doc
|
77
|
+
s2 << SayAs.new(doc, :interpret_as => 'time')
|
74
78
|
|
75
79
|
s1.should_not == s2
|
76
80
|
end
|
@@ -78,10 +82,10 @@ module RubySpeech
|
|
78
82
|
end
|
79
83
|
|
80
84
|
it "should allow creating child SSML elements" do
|
81
|
-
s = Speak.new
|
85
|
+
s = Speak.new doc
|
82
86
|
s.voice :gender => :male, :content => 'Hello'
|
83
|
-
expected_s = Speak.new
|
84
|
-
expected_s << Voice.new(:gender => :male, :content => 'Hello')
|
87
|
+
expected_s = Speak.new doc
|
88
|
+
expected_s << Voice.new(doc, :gender => :male, :content => 'Hello')
|
85
89
|
s.should == expected_s
|
86
90
|
end
|
87
91
|
|
@@ -91,47 +95,47 @@ module RubySpeech
|
|
91
95
|
end
|
92
96
|
|
93
97
|
it "should accept Audio" do
|
94
|
-
lambda { subject << Audio.new }.should_not raise_error
|
98
|
+
lambda { subject << Audio.new(doc) }.should_not raise_error
|
95
99
|
end
|
96
100
|
|
97
101
|
it "should accept Break" do
|
98
|
-
lambda { subject << Break.new }.should_not raise_error
|
102
|
+
lambda { subject << Break.new(doc) }.should_not raise_error
|
99
103
|
end
|
100
104
|
|
101
105
|
it "should accept Emphasis" do
|
102
|
-
lambda { subject << Emphasis.new }.should_not raise_error
|
106
|
+
lambda { subject << Emphasis.new(doc) }.should_not raise_error
|
103
107
|
end
|
104
108
|
|
105
109
|
it "should accept Mark" do
|
106
|
-
lambda { subject << Mark.new }.should_not raise_error
|
110
|
+
lambda { subject << Mark.new(doc) }.should_not raise_error
|
107
111
|
end
|
108
112
|
|
109
113
|
it "should accept P" do
|
110
|
-
lambda { subject << P.new }.should_not raise_error
|
114
|
+
lambda { subject << P.new(doc) }.should_not raise_error
|
111
115
|
end
|
112
116
|
|
113
117
|
it "should accept Phoneme" do
|
114
|
-
lambda { subject << Phoneme.new }.should_not raise_error
|
118
|
+
lambda { subject << Phoneme.new(doc) }.should_not raise_error
|
115
119
|
end
|
116
120
|
|
117
121
|
it "should accept Prosody" do
|
118
|
-
lambda { subject << Prosody.new }.should_not raise_error
|
122
|
+
lambda { subject << Prosody.new(doc) }.should_not raise_error
|
119
123
|
end
|
120
124
|
|
121
125
|
it "should accept SayAs" do
|
122
|
-
lambda { subject << SayAs.new(:interpret_as => :foo) }.should_not raise_error
|
126
|
+
lambda { subject << SayAs.new(doc, :interpret_as => :foo) }.should_not raise_error
|
123
127
|
end
|
124
128
|
|
125
129
|
it "should accept Sub" do
|
126
|
-
lambda { subject << Sub.new }.should_not raise_error
|
130
|
+
lambda { subject << Sub.new(doc) }.should_not raise_error
|
127
131
|
end
|
128
132
|
|
129
133
|
it "should accept S" do
|
130
|
-
lambda { subject << S.new }.should_not raise_error
|
134
|
+
lambda { subject << S.new(doc) }.should_not raise_error
|
131
135
|
end
|
132
136
|
|
133
137
|
it "should accept Voice" do
|
134
|
-
lambda { subject << Voice.new }.should_not raise_error
|
138
|
+
lambda { subject << Voice.new(doc) }.should_not raise_error
|
135
139
|
end
|
136
140
|
|
137
141
|
it "should raise InvalidChildError with non-acceptable objects" do
|
@@ -146,19 +150,31 @@ module RubySpeech
|
|
146
150
|
end
|
147
151
|
|
148
152
|
it "should allow concatenation" do
|
149
|
-
speak1 =
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
153
|
+
speak1 = SSML.draw do
|
154
|
+
voice :name => 'frank' do
|
155
|
+
"Hi, I'm Frank"
|
156
|
+
end
|
157
|
+
end
|
158
|
+
speak2 = SSML.draw do
|
159
|
+
string "Hello there"
|
160
|
+
voice :name => 'millie' do
|
161
|
+
"Hi, I'm Millie"
|
162
|
+
end
|
163
|
+
end
|
154
164
|
|
155
|
-
expected_concat =
|
156
|
-
|
157
|
-
|
158
|
-
|
165
|
+
expected_concat = SSML.draw do
|
166
|
+
voice :name => 'frank' do
|
167
|
+
"Hi, I'm Frank"
|
168
|
+
end
|
169
|
+
string "Hello there"
|
170
|
+
voice :name => 'millie' do
|
171
|
+
"Hi, I'm Millie"
|
172
|
+
end
|
173
|
+
end
|
159
174
|
|
160
175
|
concat = (speak1 + speak2)
|
161
176
|
concat.should == expected_concat
|
177
|
+
concat.document.root.should == concat
|
162
178
|
concat.to_s.should_not include('default')
|
163
179
|
end
|
164
180
|
end # Speak
|