ruby_speech 2.3.1-java → 3.0.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) 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/ruby_speech.jar +0 -0
  19. data/lib/ruby_speech/ssml/break.rb +1 -2
  20. data/lib/ruby_speech/ssml/element.rb +13 -1
  21. data/lib/ruby_speech/ssml/mark.rb +0 -1
  22. data/lib/ruby_speech/ssml/prosody.rb +8 -5
  23. data/lib/ruby_speech/version.rb +1 -1
  24. data/ruby_speech.gemspec +13 -8
  25. data/spec/ruby_speech/grxml/builtins_spec.rb +80 -71
  26. data/spec/ruby_speech/grxml/grammar_spec.rb +168 -34
  27. data/spec/ruby_speech/grxml/item_spec.rb +33 -33
  28. data/spec/ruby_speech/grxml/match_spec.rb +1 -1
  29. data/spec/ruby_speech/grxml/matcher_spec.rb +103 -59
  30. data/spec/ruby_speech/grxml/max_match_spec.rb +2 -2
  31. data/spec/ruby_speech/grxml/no_match_spec.rb +2 -2
  32. data/spec/ruby_speech/grxml/one_of_spec.rb +6 -6
  33. data/spec/ruby_speech/grxml/potential_match_spec.rb +2 -2
  34. data/spec/ruby_speech/grxml/rule_spec.rb +17 -17
  35. data/spec/ruby_speech/grxml/ruleref_spec.rb +10 -10
  36. data/spec/ruby_speech/grxml/tag_spec.rb +5 -5
  37. data/spec/ruby_speech/grxml/token_spec.rb +7 -7
  38. data/spec/ruby_speech/grxml_spec.rb +25 -25
  39. data/spec/ruby_speech/nlsml_spec.rb +58 -10
  40. data/spec/ruby_speech/ssml/audio_spec.rb +19 -19
  41. data/spec/ruby_speech/ssml/break_spec.rb +42 -22
  42. data/spec/ruby_speech/ssml/desc_spec.rb +7 -7
  43. data/spec/ruby_speech/ssml/emphasis_spec.rb +21 -21
  44. data/spec/ruby_speech/ssml/mark_spec.rb +5 -5
  45. data/spec/ruby_speech/ssml/p_spec.rb +17 -17
  46. data/spec/ruby_speech/ssml/phoneme_spec.rb +8 -8
  47. data/spec/ruby_speech/ssml/prosody_spec.rb +82 -64
  48. data/spec/ruby_speech/ssml/s_spec.rb +16 -16
  49. data/spec/ruby_speech/ssml/say_as_spec.rb +9 -9
  50. data/spec/ruby_speech/ssml/speak_spec.rb +29 -29
  51. data/spec/ruby_speech/ssml/sub_spec.rb +7 -7
  52. data/spec/ruby_speech/ssml/voice_spec.rb +31 -31
  53. data/spec/ruby_speech/ssml_spec.rb +41 -17
  54. data/spec/ruby_speech_spec.rb +3 -3
  55. data/spec/spec_helper.rb +8 -3
  56. data/spec/support/dtmf_helper.rb +14 -0
  57. data/spec/support/grammar_matchers.rb +6 -6
  58. data/spec/support/match_examples.rb +5 -5
  59. data/spec/support/matchers.rb +1 -1
  60. metadata +109 -80
@@ -7,7 +7,7 @@ module RubySpeech
7
7
 
8
8
  subject { described_class.new doc }
9
9
 
10
- it { should be_a_valid_ssml_document }
10
+ it { is_expected.to be_a_valid_ssml_document }
11
11
 
12
12
  its(:name) { should == 'speak' }
13
13
  its(:language) { should == 'en-US' }
@@ -20,7 +20,7 @@ module RubySpeech
20
20
  end
21
21
 
22
22
  it 'registers itself' do
23
- Element.class_from_registration(:speak).should == Speak
23
+ expect(Element.class_from_registration(:speak)).to eq(Speak)
24
24
  end
25
25
 
26
26
  describe "from a document" do
@@ -28,7 +28,7 @@ module RubySpeech
28
28
 
29
29
  subject { Element.import document }
30
30
 
31
- it { should be_instance_of Speak }
31
+ it { is_expected.to be_instance_of Speak }
32
32
 
33
33
  its(:language) { should == 'jp' }
34
34
  its(:base_uri) { should == 'blah' }
@@ -48,24 +48,24 @@ module RubySpeech
48
48
 
49
49
  describe "comparing objects" do
50
50
  it "should be equal if the content, language and base uri are the same" do
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")
51
+ expect(Speak.new(doc, :language => 'en-GB', :base_uri => 'blah', :content => "Hello there")).to eq(Speak.new(doc, :language => 'en-GB', :base_uri => 'blah', :content => "Hello there"))
52
52
  end
53
53
 
54
54
  describe "when the content is different" do
55
55
  it "should not be equal" do
56
- Speak.new(doc, :content => "Hello").should_not == Speak.new(doc, :content => "Hello there")
56
+ expect(Speak.new(doc, :content => "Hello")).not_to eq(Speak.new(doc, :content => "Hello there"))
57
57
  end
58
58
  end
59
59
 
60
60
  describe "when the language is different" do
61
61
  it "should not be equal" do
62
- Speak.new(doc, :language => 'en-US').should_not == Speak.new(doc, :language => 'en-GB')
62
+ expect(Speak.new(doc, :language => 'en-US')).not_to eq(Speak.new(doc, :language => 'en-GB'))
63
63
  end
64
64
  end
65
65
 
66
66
  describe "when the base URI is different" do
67
67
  it "should not be equal" do
68
- Speak.new(doc, :base_uri => 'foo').should_not == Speak.new(doc, :base_uri => 'bar')
68
+ expect(Speak.new(doc, :base_uri => 'foo')).not_to eq(Speak.new(doc, :base_uri => 'bar'))
69
69
  end
70
70
  end
71
71
 
@@ -76,7 +76,7 @@ module RubySpeech
76
76
  s2 = Speak.new doc
77
77
  s2 << SayAs.new(doc, :interpret_as => 'time')
78
78
 
79
- s1.should_not == s2
79
+ expect(s1).not_to eq(s2)
80
80
  end
81
81
  end
82
82
  end
@@ -86,66 +86,66 @@ module RubySpeech
86
86
  s.voice :gender => :male, :content => 'Hello'
87
87
  expected_s = Speak.new doc
88
88
  expected_s << Voice.new(doc, :gender => :male, :content => 'Hello')
89
- s.should == expected_s
89
+ expect(s).to eq(expected_s)
90
90
  end
91
91
 
92
92
  describe "<<" do
93
93
  it "should accept String" do
94
- lambda { subject << 'anything' }.should_not raise_error
94
+ expect { subject << 'anything' }.not_to raise_error
95
95
  end
96
96
 
97
97
  it "should accept Audio" do
98
- lambda { subject << Audio.new(doc) }.should_not raise_error
98
+ expect { subject << Audio.new(doc) }.not_to raise_error
99
99
  end
100
100
 
101
101
  it "should accept Break" do
102
- lambda { subject << Break.new(doc) }.should_not raise_error
102
+ expect { subject << Break.new(doc) }.not_to raise_error
103
103
  end
104
104
 
105
105
  it "should accept Emphasis" do
106
- lambda { subject << Emphasis.new(doc) }.should_not raise_error
106
+ expect { subject << Emphasis.new(doc) }.not_to raise_error
107
107
  end
108
108
 
109
109
  it "should accept Mark" do
110
- lambda { subject << Mark.new(doc) }.should_not raise_error
110
+ expect { subject << Mark.new(doc) }.not_to raise_error
111
111
  end
112
112
 
113
113
  it "should accept P" do
114
- lambda { subject << P.new(doc) }.should_not raise_error
114
+ expect { subject << P.new(doc) }.not_to raise_error
115
115
  end
116
116
 
117
117
  it "should accept Phoneme" do
118
- lambda { subject << Phoneme.new(doc) }.should_not raise_error
118
+ expect { subject << Phoneme.new(doc) }.not_to raise_error
119
119
  end
120
120
 
121
121
  it "should accept Prosody" do
122
- lambda { subject << Prosody.new(doc) }.should_not raise_error
122
+ expect { subject << Prosody.new(doc) }.not_to raise_error
123
123
  end
124
124
 
125
125
  it "should accept SayAs" do
126
- lambda { subject << SayAs.new(doc, :interpret_as => :foo) }.should_not raise_error
126
+ expect { subject << SayAs.new(doc, :interpret_as => :foo) }.not_to raise_error
127
127
  end
128
128
 
129
129
  it "should accept Sub" do
130
- lambda { subject << Sub.new(doc) }.should_not raise_error
130
+ expect { subject << Sub.new(doc) }.not_to raise_error
131
131
  end
132
132
 
133
133
  it "should accept S" do
134
- lambda { subject << S.new(doc) }.should_not raise_error
134
+ expect { subject << S.new(doc) }.not_to raise_error
135
135
  end
136
136
 
137
137
  it "should accept Voice" do
138
- lambda { subject << Voice.new(doc) }.should_not raise_error
138
+ expect { subject << Voice.new(doc) }.not_to raise_error
139
139
  end
140
140
 
141
141
  it "should raise InvalidChildError with non-acceptable objects" do
142
- lambda { subject << 1 }.should raise_error(InvalidChildError, "A Speak can only accept String, Audio, Break, Emphasis, Mark, P, Phoneme, Prosody, SayAs, Sub, S, Voice as children")
142
+ expect { subject << 1 }.to raise_error(InvalidChildError, "A Speak can only accept String, Audio, Break, Emphasis, Mark, P, Phoneme, Prosody, SayAs, Sub, S, Voice as children")
143
143
  end
144
144
  end
145
145
 
146
146
  describe "#to_doc" do
147
147
  it "should create an XML document from the grammar" do
148
- subject.to_doc.should == subject.document
148
+ expect(subject.to_doc).to eq(subject.document)
149
149
  end
150
150
  end
151
151
 
@@ -176,11 +176,11 @@ module RubySpeech
176
176
  end
177
177
 
178
178
  concat = (speak1 + speak2)
179
- speak1.to_s.should == speak1_string
180
- speak2.to_s.should == speak2_string
181
- concat.should == expected_concat
182
- concat.document.root.should == concat
183
- concat.to_s.should_not include('default')
179
+ expect(speak1.to_s).to eq(speak1_string)
180
+ expect(speak2.to_s).to eq(speak2_string)
181
+ expect(concat).to eq(expected_concat)
182
+ expect(concat.document.root).to eq(concat)
183
+ expect(concat.to_s).not_to include('default')
184
184
  end
185
185
 
186
186
  context "when concatenating" do
@@ -199,7 +199,7 @@ module RubySpeech
199
199
  end
200
200
 
201
201
  concat = (speak1 + speak2)
202
- concat.should == expected_concat
202
+ expect(concat).to eq(expected_concat)
203
203
  end
204
204
  end
205
205
  end
@@ -16,7 +16,7 @@ module RubySpeech
16
16
  end
17
17
 
18
18
  it 'registers itself' do
19
- Element.class_from_registration(:sub).should == Sub
19
+ expect(Element.class_from_registration(:sub)).to eq(Sub)
20
20
  end
21
21
 
22
22
  describe "from a document" do
@@ -24,36 +24,36 @@ module RubySpeech
24
24
 
25
25
  subject { Element.import document }
26
26
 
27
- it { should be_instance_of Sub }
27
+ it { is_expected.to be_instance_of Sub }
28
28
 
29
29
  its(:alias) { should == 'foo' }
30
30
  end
31
31
 
32
32
  describe "comparing objects" do
33
33
  it "should be equal if the content and alias are the same" do
34
- Sub.new(doc, :alias => 'jp', :content => "Hello there").should == Sub.new(doc, :alias => 'jp', :content => "Hello there")
34
+ expect(Sub.new(doc, :alias => 'jp', :content => "Hello there")).to eq(Sub.new(doc, :alias => 'jp', :content => "Hello there"))
35
35
  end
36
36
 
37
37
  describe "when the content is different" do
38
38
  it "should not be equal" do
39
- Sub.new(doc, :content => "Hello").should_not == Sub.new(doc, :content => "Hello there")
39
+ expect(Sub.new(doc, :content => "Hello")).not_to eq(Sub.new(doc, :content => "Hello there"))
40
40
  end
41
41
  end
42
42
 
43
43
  describe "when the alias is different" do
44
44
  it "should not be equal" do
45
- Sub.new(doc, :alias => 'jp').should_not == Sub.new(doc, :alias => 'en')
45
+ expect(Sub.new(doc, :alias => 'jp')).not_to eq(Sub.new(doc, :alias => 'en'))
46
46
  end
47
47
  end
48
48
  end
49
49
 
50
50
  describe "<<" do
51
51
  it "should accept String" do
52
- lambda { subject << 'anything' }.should_not raise_error
52
+ expect { subject << 'anything' }.not_to raise_error
53
53
  end
54
54
 
55
55
  it "should raise InvalidChildError with non-acceptable objects" do
56
- lambda { subject << Voice.new(doc) }.should raise_error(InvalidChildError, "A Sub can only accept Strings as children")
56
+ expect { subject << Voice.new(doc) }.to raise_error(InvalidChildError, "A Sub can only accept Strings as children")
57
57
  end
58
58
  end
59
59
  end # Desc
@@ -21,7 +21,7 @@ module RubySpeech
21
21
  end
22
22
 
23
23
  it 'registers itself' do
24
- Element.class_from_registration(:voice).should == Voice
24
+ expect(Element.class_from_registration(:voice)).to eq(Voice)
25
25
  end
26
26
 
27
27
  describe "from a document" do
@@ -29,7 +29,7 @@ module RubySpeech
29
29
 
30
30
  subject { Element.import document }
31
31
 
32
- it { should be_instance_of Voice }
32
+ it { is_expected.to be_instance_of Voice }
33
33
 
34
34
  its(:language) { should == 'jp' }
35
35
  its(:gender) { should == :male }
@@ -50,13 +50,13 @@ module RubySpeech
50
50
  its(:gender) { should == :male }
51
51
 
52
52
  it "with a valid gender" do
53
- lambda { subject.gender = :male }.should_not raise_error
54
- lambda { subject.gender = :female }.should_not raise_error
55
- lambda { subject.gender = :neutral }.should_not raise_error
53
+ expect { subject.gender = :male }.not_to raise_error
54
+ expect { subject.gender = :female }.not_to raise_error
55
+ expect { subject.gender = :neutral }.not_to raise_error
56
56
  end
57
57
 
58
58
  it "with an invalid gender" do
59
- lambda { subject.gender = :something }.should raise_error(ArgumentError, "You must specify a valid gender (:male, :female, :neutral)")
59
+ expect { subject.gender = :something }.to raise_error(ArgumentError, "You must specify a valid gender (:male, :female, :neutral)")
60
60
  end
61
61
  end
62
62
 
@@ -66,15 +66,15 @@ module RubySpeech
66
66
  its(:age) { should == 12 }
67
67
 
68
68
  it "with an integer of 0" do
69
- lambda { subject.age = 0 }.should_not raise_error
69
+ expect { subject.age = 0 }.not_to raise_error
70
70
  end
71
71
 
72
72
  it "with an integer less than 0" do
73
- lambda { subject.age = -1 }.should raise_error(ArgumentError, "You must specify a valid age (non-negative integer)")
73
+ expect { subject.age = -1 }.to raise_error(ArgumentError, "You must specify a valid age (non-negative integer)")
74
74
  end
75
75
 
76
76
  it "with something other than an integer" do
77
- lambda { subject.age = "bah" }.should raise_error(ArgumentError, "You must specify a valid age (non-negative integer)")
77
+ expect { subject.age = "bah" }.to raise_error(ArgumentError, "You must specify a valid age (non-negative integer)")
78
78
  end
79
79
  end
80
80
 
@@ -84,11 +84,11 @@ module RubySpeech
84
84
  its(:variant) { should == 12 }
85
85
 
86
86
  it "with an integer less than 1" do
87
- lambda { subject.variant = 0 }.should raise_error(ArgumentError, "You must specify a valid variant (positive integer)")
87
+ expect { subject.variant = 0 }.to raise_error(ArgumentError, "You must specify a valid variant (positive integer)")
88
88
  end
89
89
 
90
90
  it "with something other than an integer" do
91
- lambda { subject.variant = "bah" }.should raise_error(ArgumentError, "You must specify a valid variant (positive integer)")
91
+ expect { subject.variant = "bah" }.to raise_error(ArgumentError, "You must specify a valid variant (positive integer)")
92
92
  end
93
93
  end
94
94
 
@@ -106,97 +106,97 @@ module RubySpeech
106
106
 
107
107
  describe "comparing objects" do
108
108
  it "should be equal if the content, language, gender, age, variant, name are the same" do
109
- Voice.new(doc, :language => 'jp', :gender => :male, :age => 25, :variant => 2, :name => "paul", :content => "hello").should == Voice.new(doc, :language => 'jp', :gender => :male, :age => 25, :variant => 2, :name => "paul", :content => "hello")
109
+ expect(Voice.new(doc, :language => 'jp', :gender => :male, :age => 25, :variant => 2, :name => "paul", :content => "hello")).to eq(Voice.new(doc, :language => 'jp', :gender => :male, :age => 25, :variant => 2, :name => "paul", :content => "hello"))
110
110
  end
111
111
 
112
112
  describe "when the content is different" do
113
113
  it "should not be equal" do
114
- Voice.new(doc, :content => "Hello").should_not == Voice.new(doc, :content => "Hello there")
114
+ expect(Voice.new(doc, :content => "Hello")).not_to eq(Voice.new(doc, :content => "Hello there"))
115
115
  end
116
116
  end
117
117
 
118
118
  describe "when the language is different" do
119
119
  it "should not be equal" do
120
- Voice.new(doc, :language => "Hello").should_not == Voice.new(doc, :language => "Hello there")
120
+ expect(Voice.new(doc, :language => "Hello")).not_to eq(Voice.new(doc, :language => "Hello there"))
121
121
  end
122
122
  end
123
123
 
124
124
  describe "when the gender is different" do
125
125
  it "should not be equal" do
126
- Voice.new(doc, :gender => :male).should_not == Voice.new(doc, :gender => :female)
126
+ expect(Voice.new(doc, :gender => :male)).not_to eq(Voice.new(doc, :gender => :female))
127
127
  end
128
128
  end
129
129
 
130
130
  describe "when the age is different" do
131
131
  it "should not be equal" do
132
- Voice.new(doc, :age => 20).should_not == Voice.new(doc, :age => 30)
132
+ expect(Voice.new(doc, :age => 20)).not_to eq(Voice.new(doc, :age => 30))
133
133
  end
134
134
  end
135
135
 
136
136
  describe "when the variant is different" do
137
137
  it "should not be equal" do
138
- Voice.new(doc, :variant => 1).should_not == Voice.new(doc, :variant => 2)
138
+ expect(Voice.new(doc, :variant => 1)).not_to eq(Voice.new(doc, :variant => 2))
139
139
  end
140
140
  end
141
141
 
142
142
  describe "when the name is different" do
143
143
  it "should not be equal" do
144
- Voice.new(doc, :name => "Hello").should_not == Voice.new(doc, :name => "Hello there")
144
+ expect(Voice.new(doc, :name => "Hello")).not_to eq(Voice.new(doc, :name => "Hello there"))
145
145
  end
146
146
  end
147
147
  end
148
148
 
149
149
  describe "<<" do
150
150
  it "should accept String" do
151
- lambda { subject << 'anything' }.should_not raise_error
151
+ expect { subject << 'anything' }.not_to raise_error
152
152
  end
153
153
 
154
154
  it "should accept Audio" do
155
- lambda { subject << Audio.new(doc) }.should_not raise_error
155
+ expect { subject << Audio.new(doc) }.not_to raise_error
156
156
  end
157
157
 
158
158
  it "should accept Break" do
159
- lambda { subject << Break.new(doc) }.should_not raise_error
159
+ expect { subject << Break.new(doc) }.not_to raise_error
160
160
  end
161
161
 
162
162
  it "should accept Emphasis" do
163
- lambda { subject << Emphasis.new(doc) }.should_not raise_error
163
+ expect { subject << Emphasis.new(doc) }.not_to raise_error
164
164
  end
165
165
 
166
166
  it "should accept Mark" do
167
- lambda { subject << Mark.new(doc) }.should_not raise_error
167
+ expect { subject << Mark.new(doc) }.not_to raise_error
168
168
  end
169
169
 
170
170
  it "should accept P" do
171
- lambda { subject << P.new(doc) }.should_not raise_error
171
+ expect { subject << P.new(doc) }.not_to raise_error
172
172
  end
173
173
 
174
174
  it "should accept Phoneme" do
175
- lambda { subject << Phoneme.new(doc) }.should_not raise_error
175
+ expect { subject << Phoneme.new(doc) }.not_to raise_error
176
176
  end
177
177
 
178
178
  it "should accept Prosody" do
179
- lambda { subject << Prosody.new(doc) }.should_not raise_error
179
+ expect { subject << Prosody.new(doc) }.not_to raise_error
180
180
  end
181
181
 
182
182
  it "should accept SayAs" do
183
- lambda { subject << SayAs.new(doc, :interpret_as => :foo) }.should_not raise_error
183
+ expect { subject << SayAs.new(doc, :interpret_as => :foo) }.not_to raise_error
184
184
  end
185
185
 
186
186
  it "should accept Sub" do
187
- lambda { subject << Sub.new(doc) }.should_not raise_error
187
+ expect { subject << Sub.new(doc) }.not_to raise_error
188
188
  end
189
189
 
190
190
  it "should accept S" do
191
- lambda { subject << S.new(doc) }.should_not raise_error
191
+ expect { subject << S.new(doc) }.not_to raise_error
192
192
  end
193
193
 
194
194
  it "should accept Voice" do
195
- lambda { subject << Voice.new(doc) }.should_not raise_error
195
+ expect { subject << Voice.new(doc) }.not_to raise_error
196
196
  end
197
197
 
198
198
  it "should raise InvalidChildError with non-acceptable objects" do
199
- lambda { subject << 1 }.should raise_error(InvalidChildError, "A Voice can only accept String, Audio, Break, Emphasis, Mark, P, Phoneme, Prosody, SayAs, Sub, S, Voice as children")
199
+ expect { subject << 1 }.to raise_error(InvalidChildError, "A Voice can only accept String, Audio, Break, Emphasis, Mark, P, Phoneme, Prosody, SayAs, Sub, S, Voice as children")
200
200
  end
201
201
  end
202
202
  end # Voice
@@ -7,40 +7,40 @@ module RubySpeech
7
7
 
8
8
  it "should create an SSML document" do
9
9
  expected_doc = SSML::Speak.new doc
10
- SSML.draw.should == expected_doc
11
- SSML.draw.document.xpath('ns:speak', ns: 'http://www.w3.org/2001/10/synthesis').size.should == 1
10
+ expect(SSML.draw).to eq(expected_doc)
11
+ expect(SSML.draw.document.xpath('ns:speak', ns: 'http://www.w3.org/2001/10/synthesis').size).to eq(1)
12
12
  end
13
13
 
14
14
  it "can draw with a language" do
15
15
  expected_doc = SSML::Speak.new doc, language: 'pt-BR'
16
- SSML.draw(language: 'pt-BR').should == expected_doc
16
+ expect(SSML.draw(language: 'pt-BR')).to eq(expected_doc)
17
17
  end
18
18
 
19
19
  describe "when the return value of the block is a string" do
20
20
  it "should be inserted into the document" do
21
21
  expected_doc = SSML::Speak.new(doc, :content => "Hi, I'm Fred")
22
- SSML.draw { "Hi, I'm Fred" }.should == expected_doc
22
+ expect(SSML.draw { "Hi, I'm Fred" }).to eq(expected_doc)
23
23
  end
24
24
  end
25
25
 
26
26
  describe "when the return value of the block is not a string" do
27
27
  it "should not be inserted into the document" do
28
28
  expected_doc = SSML::Speak.new doc
29
- SSML.draw { :foo }.should == expected_doc
29
+ expect(SSML.draw { :foo }).to eq(expected_doc)
30
30
  end
31
31
  end
32
32
 
33
33
  describe "when inserting a string" do
34
34
  it "should work" do
35
35
  expected_doc = SSML::Speak.new(doc, :content => "Hi, I'm Fred")
36
- SSML.draw { string "Hi, I'm Fred" }.should == expected_doc
36
+ expect(SSML.draw { string "Hi, I'm Fred" }).to eq(expected_doc)
37
37
  end
38
38
  end
39
39
 
40
40
  it "should allow other SSML elements to be inserted in the document" do
41
41
  expected_doc = SSML::Speak.new doc
42
42
  expected_doc << SSML::Voice.new(doc, :gender => :male, :name => 'fred')
43
- SSML.draw { voice :gender => :male, :name => 'fred' }.should == expected_doc
43
+ expect(SSML.draw { voice :gender => :male, :name => 'fred' }).to eq(expected_doc)
44
44
  end
45
45
 
46
46
  it "should allow nested block return values" do
@@ -52,7 +52,7 @@ module RubySpeech
52
52
  "Hi, I'm Fred."
53
53
  end
54
54
  end
55
- doc.should == expected_doc
55
+ expect(doc).to eq(expected_doc)
56
56
  end
57
57
 
58
58
  it "should allow nested SSML elements" do
@@ -69,7 +69,7 @@ module RubySpeech
69
69
  voice << SSML::SayAs.new(doc, :interpret_as => 'date', :format => 'dmy', :content => "01/02/1960")
70
70
  expected_doc = SSML::Speak.new doc
71
71
  expected_doc << voice
72
- drawn_doc.should == expected_doc
72
+ expect(drawn_doc).to eq(expected_doc)
73
73
  end
74
74
 
75
75
  it "should allow accessing methods defined outside the block" do
@@ -78,7 +78,31 @@ module RubySpeech
78
78
  end
79
79
 
80
80
  expected_doc = SSML::Speak.new doc, :content => foo
81
- SSML.draw { string foo }.should == expected_doc
81
+ expect(SSML.draw { string foo }).to eq(expected_doc)
82
+ end
83
+
84
+ describe 'cloning' do
85
+ context 'SSML documents' do
86
+ let :original do
87
+ RubySpeech::SSML.draw do
88
+ string "Hi, I'm Fred."
89
+ end
90
+ end
91
+
92
+ subject { original.clone }
93
+
94
+ it 'should match the contents of the original document' do
95
+ expect(subject.to_s).to eq(original.to_s)
96
+ end
97
+
98
+ it 'should match the class of the original document' do
99
+ expect(subject.class).to eq(original.class)
100
+ end
101
+
102
+ it 'should be equal to the original document' do
103
+ expect(subject).to eq(original)
104
+ end
105
+ end
82
106
  end
83
107
 
84
108
  describe "embedding" do
@@ -105,7 +129,7 @@ module RubySpeech
105
129
  end
106
130
  end
107
131
 
108
- doc2.should == expected_doc
132
+ expect(doc2).to eq(expected_doc)
109
133
  end
110
134
 
111
135
  it "SSML elements" do
@@ -125,7 +149,7 @@ module RubySpeech
125
149
  end
126
150
  end
127
151
 
128
- doc.should == expected_doc
152
+ expect(doc).to eq(expected_doc)
129
153
  end
130
154
 
131
155
  it "strings" do
@@ -143,7 +167,7 @@ module RubySpeech
143
167
  end
144
168
  end
145
169
 
146
- doc.should == expected_doc
170
+ expect(doc).to eq(expected_doc)
147
171
  end
148
172
  end
149
173
 
@@ -156,7 +180,7 @@ module RubySpeech
156
180
  2.times do
157
181
  expected_doc << SSML::Voice.new(doc, :native_content => "I <3 nachos.")
158
182
  end
159
- drawn_doc.should == expected_doc
183
+ expect(drawn_doc).to eq(expected_doc)
160
184
  end
161
185
 
162
186
  it "should allow all permutations of possible nested SSML elements" do
@@ -246,7 +270,7 @@ module RubySpeech
246
270
  voice << SSML::Prosody.new(doc, :rate => :fast, :content => "And yet so spritely!")
247
271
  voice << SSML::Voice.new(doc, :age => 12, :content => "And I'm young Fred")
248
272
  expected_doc << voice
249
- drawn_doc.should == expected_doc
273
+ expect(drawn_doc).to eq(expected_doc)
250
274
  end
251
275
  end
252
276
 
@@ -269,10 +293,10 @@ module RubySpeech
269
293
  subject { import }
270
294
 
271
295
  it "should work" do
272
- lambda { subject }.should_not raise_error
296
+ expect { subject }.not_to raise_error
273
297
  end
274
298
 
275
- it { should be_a SSML::Speak }
299
+ it { is_expected.to be_a SSML::Speak }
276
300
 
277
301
  its(:children) { should == [voice] }
278
302
 
@@ -30,7 +30,7 @@ describe RubySpeech do
30
30
  '''
31
31
  end
32
32
 
33
- it { should be_a RubySpeech::SSML::Element }
33
+ it { is_expected.to be_a RubySpeech::SSML::Element }
34
34
  end
35
35
 
36
36
  context "with a GRXML document" do
@@ -91,7 +91,7 @@ describe RubySpeech do
91
91
  '''
92
92
  end
93
93
 
94
- it { should be_a RubySpeech::GRXML::Element }
94
+ it { is_expected.to be_a RubySpeech::GRXML::Element }
95
95
  end
96
96
 
97
97
  context "with an NLSML document" do
@@ -118,7 +118,7 @@ describe RubySpeech do
118
118
  '''
119
119
  end
120
120
 
121
- it { should be_a RubySpeech::NLSML::Document }
121
+ it { is_expected.to be_a RubySpeech::NLSML::Document }
122
122
  end
123
123
  end
124
124
  end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,14 @@
1
- require 'ruby_speech'
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
- require 'coveralls'
4
+ require "coveralls"
4
5
  Coveralls.wear!
5
6
 
7
+ %w{
8
+ rspec/its
9
+ ruby_speech
10
+ }.each { |f| require f }
11
+
6
12
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
7
13
 
8
14
  schema_file_path = File.expand_path File.join(__FILE__, '../../assets/synthesis.xsd')
@@ -18,5 +24,4 @@ puts "Finished loading schema."
18
24
  RSpec.configure do |config|
19
25
  config.filter_run :focus => true
20
26
  config.run_all_when_everything_filtered = true
21
- config.treat_symbols_as_metadata_keys_with_true_values = true
22
27
  end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # Convert a simple DTMF string from "1 star 2" to "dtmf-1 dtmf-star dtmf-2".
6
+ #
7
+ # @param [Array] sequence A set of DTMF keys, such as `%w(1 star 2)`.
8
+ #
9
+ # @return [String] A string with "dtmf-" prefixed for each DTMF element.
10
+ # Example: "dtmf-1 dtmf-star dtmf-2".
11
+ #
12
+ def dtmf_seq(sequence)
13
+ sequence.map { |d| "dtmf-#{d}" }.join ' '
14
+ end