ruby_speech 2.3.1-java → 3.0.1-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.
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