cw 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.cw_config +18 -0
  3. data/.gitignore +10 -1
  4. data/LICENSE +2 -1
  5. data/README.md +212 -96
  6. data/Rakefile +15 -2
  7. data/VERSION +1 -1
  8. data/Vagrantfile +45 -0
  9. data/cw.gemspec +6 -1
  10. data/data/text/book_to_read.txt +4 -0
  11. data/data/text/english.txt +10000 -0
  12. data/example.rb +172 -106
  13. data/lib/cw.rb +10 -126
  14. data/lib/cw/alphabet.rb +53 -46
  15. data/lib/cw/audio_player.rb +83 -72
  16. data/lib/cw/book.rb +160 -185
  17. data/lib/cw/book_details.rb +38 -49
  18. data/lib/cw/cl.rb +101 -95
  19. data/lib/cw/common_words.rb +76 -0
  20. data/lib/cw/config.rb +50 -0
  21. data/lib/cw/current_word.rb +23 -24
  22. data/lib/cw/cw_dsl.rb +264 -131
  23. data/lib/cw/cw_encoding.rb +63 -69
  24. data/lib/cw/cw_stream.rb +86 -82
  25. data/lib/cw/cw_threads.rb +132 -22
  26. data/lib/cw/element.rb +60 -54
  27. data/lib/cw/file_details.rb +26 -11
  28. data/lib/cw/key_input.rb +53 -35
  29. data/lib/cw/numbers.rb +26 -19
  30. data/lib/cw/os.rb +13 -0
  31. data/lib/cw/play.rb +92 -0
  32. data/lib/cw/print.rb +102 -100
  33. data/lib/cw/process.rb +3 -0
  34. data/lib/cw/progress.rb +20 -17
  35. data/lib/cw/randomize.rb +56 -52
  36. data/lib/cw/repeat_word.rb +59 -66
  37. data/lib/cw/reveal.rb +32 -31
  38. data/lib/cw/rss.rb +52 -48
  39. data/lib/cw/sentence.rb +83 -76
  40. data/lib/cw/speak.rb +8 -4
  41. data/lib/cw/spoken.rb +8 -4
  42. data/lib/cw/str.rb +62 -30
  43. data/lib/cw/test_letters.rb +20 -28
  44. data/lib/cw/test_words.rb +25 -31
  45. data/lib/cw/tester.rb +219 -226
  46. data/lib/cw/text_helpers.rb +19 -15
  47. data/lib/cw/timing.rb +63 -67
  48. data/lib/cw/tone_generator.rb +176 -153
  49. data/lib/cw/tone_helpers.rb +15 -23
  50. data/lib/cw/voice.rb +12 -8
  51. data/lib/cw/words.rb +136 -106
  52. data/run_script_tests.rb +165 -0
  53. data/test/my_words.txt +1 -0
  54. data/test/test_common_words.rb +71 -0
  55. data/test/test_config.rb +98 -0
  56. data/test/test_current_word.rb +62 -0
  57. data/test/test_cw.rb +87 -120
  58. data/test/test_cw_threads.rb +123 -0
  59. data/test/test_filtering.rb +439 -0
  60. data/test/test_params.rb +28 -0
  61. data/test/test_play.rb +51 -0
  62. data/test/test_stream.rb +83 -83
  63. data/test/test_tester.rb +9 -27
  64. data/test/test_timing.rb +212 -0
  65. metadata +94 -12
  66. data/lib/cw/config_file.rb +0 -69
  67. data/lib/cw/monitor_keys.rb +0 -37
  68. data/lib/cw/params.rb +0 -104
@@ -0,0 +1 @@
1
+ one two three four five six seven eignt nine ten
@@ -0,0 +1,71 @@
1
+ require 'simplecov'
2
+ $VERBOSE = nil #FIXME
3
+ SimpleCov.start
4
+
5
+ require 'minitest/autorun'
6
+ require 'minitest/pride'
7
+ require_relative '../lib/cw'
8
+
9
+ class TestCommonWords < MiniTest::Test
10
+
11
+ ROOT = File.expand_path File.dirname(__FILE__) + '/../'
12
+
13
+ def setup
14
+ @words = CWG::CommonWords.new
15
+ end
16
+
17
+ def teardown
18
+ @words = nil
19
+ end
20
+
21
+ def test_parse_quantity_for_1
22
+ assert_equal [0], @words.parse_quantity(1)
23
+ end
24
+
25
+ def test_parse_quantity_for_2
26
+ assert_equal [0,1], @words.parse_quantity(2)
27
+ end
28
+
29
+ def test_parse_quantity_for_range_1_2
30
+ assert_equal [0,1], @words.parse_quantity(1..2)
31
+ end
32
+
33
+ def test_parse_quantity_for_range_2_3
34
+ assert_equal [1,2], @words.parse_quantity(2..3)
35
+ end
36
+
37
+ def test_parse_quantity_for_no_argument
38
+ assert_equal [0, 999], @words.parse_quantity()
39
+ end
40
+
41
+ def test_read_returns_the_with_argument_1
42
+ assert_equal ['the'], @words.read(1)
43
+ end
44
+
45
+ def test_read_returns_the_with_argument_2
46
+ assert_equal ['the','of'], @words.read(2)
47
+ end
48
+
49
+ def test_read_returns_the_with_range_2_3
50
+ assert_equal ['of','and'], @words.read(2..3)
51
+ end
52
+
53
+ def test_read_returns_100_words_for_no_argument
54
+ assert_equal 1000, @words.read().size
55
+ end
56
+
57
+ def test_read_returns_500_words_for_range_100_to_1600
58
+ words = @words.read(100...1600)
59
+ assert_equal 1500, words.size
60
+ assert_equal 'find',words[0]
61
+ assert_equal 'phentermine',words[-1]
62
+ end
63
+
64
+ def test_all_returns_all_words
65
+ words = @words.read(:all)
66
+ assert_equal 10000, words.size
67
+ assert_equal 'the',words[0]
68
+ assert_equal 'poison',words[-1]
69
+ end
70
+
71
+ end
@@ -0,0 +1,98 @@
1
+ require 'simplecov'
2
+ $VERBOSE = nil #FIXME
3
+ SimpleCov.start
4
+
5
+ require 'minitest/autorun'
6
+ require 'minitest/pride'
7
+ require_relative '../lib/cw/config'
8
+
9
+ class TestConfig < MiniTest::Test
10
+
11
+ CONFIG_METHODS = [
12
+ :name,:wpm,:effective_wpm,:frequency,:audio_filename,:audio_dir,
13
+ :book_name,:book_dir,:play_command,:size,:run_default,:word_spacing,
14
+ :command_line,:author,:title,:quality,:ebook2cw_path,:noise,:no_noise,
15
+ :tone,:word_count,:volume,:list_colour,:success_colour,:fail_colour,
16
+ :no_run,:run,:print_letters,:no_print,:use_ebook2cw,:use_ruby_tone,
17
+ :dictionary,:containing,:begin,:end,:including,:word_filename,:max,:min,
18
+ :exit
19
+ ]
20
+
21
+ def setup
22
+ CWG::Cfg.reset
23
+ end
24
+
25
+ def test_params_rewrite
26
+ CWG::Cfg::CONFIG_METHODS.each_with_index do |label,idx|
27
+ CWG::Cfg.config.params[label] = idx
28
+ end
29
+ 0.upto CWG::Cfg::CONFIG_METHODS.size - 1 do |idx|
30
+ assert_equal(idx, CWG::Cfg.config.params[CWG::Cfg::CONFIG_METHODS[idx]])
31
+ end
32
+ end
33
+
34
+ def test_wpm_default
35
+ assert_equal "25", CWG::Cfg.config["wpm"]
36
+ end
37
+
38
+ def test_book_name_default
39
+ assert_equal "book.txt", CWG::Cfg.config["book_name"]
40
+ end
41
+
42
+ def test_book_dir_default
43
+ assert_equal "data/text/", CWG::Cfg.config["book_dir"]
44
+ end
45
+
46
+ # def test_play_command_default
47
+ # assert_equal "/usr/bin/afplay", CWG::Cfg.config["play_command"]
48
+ # end
49
+
50
+ def test_success_colour_default
51
+ assert_equal "green", CWG::Cfg.config["success_colour"]
52
+ end
53
+
54
+ def test_fail_colour_default
55
+ assert_equal "red", CWG::Cfg.config["fail_colour"]
56
+ end
57
+
58
+ def test_list_colour_default
59
+ assert_equal "default", CWG::Cfg.config["list_colour"]
60
+ end
61
+
62
+ def test_ebook2cw_path_default
63
+ assert_equal "/usr/bin/ebook2cw", CWG::Cfg.config["ebook2cw_path"]
64
+ end
65
+
66
+ def test_run_default_default
67
+ assert_equal "test_letters", CWG::Cfg.config["run_default"]
68
+ end
69
+
70
+ def test_dictionary_dir_default
71
+ assert_equal "data/text/", CWG::Cfg.config["dictionary_dir"]
72
+ end
73
+
74
+ def test_dictionary_name_default
75
+ assert_equal "english.txt", CWG::Cfg.config["dictionary_name"]
76
+ end
77
+
78
+ def test_accessing_unknown_method_returns_nil
79
+ refute CWG::Cfg.config["unknown"]
80
+ end
81
+
82
+ def test_setting_unknown_method_returns_nil
83
+ CWG::Cfg.config.params["unknown"] = "something"
84
+ assert_equal "something", CWG::Cfg.config["unknown"]
85
+ end
86
+
87
+ def test_an_existing_setting_works
88
+ refute CWG::Cfg.config["exit"]
89
+ CWG::Cfg.config.params["exit"] = true
90
+ assert CWG::Cfg.config["exit"]
91
+ end
92
+
93
+ def test_frequency
94
+ CWG::Cfg.config.params["frequency"] = 400
95
+ assert_equal 400, CWG::Cfg.config["frequency"]
96
+ end
97
+ end
98
+
@@ -0,0 +1,62 @@
1
+ require 'simplecov'
2
+ $VERBOSE = nil #FIXME
3
+ SimpleCov.start
4
+
5
+ require 'minitest/autorun'
6
+ require 'minitest/pride'
7
+ require_relative '../lib/cw'
8
+
9
+ class TestCurrentWord < MiniTest::Test
10
+
11
+ ROOT = File.expand_path File.dirname(__FILE__) + '/../'
12
+
13
+ def setup
14
+ @word = CWG::CurrentWord.new
15
+ end
16
+
17
+ def teardown
18
+ @word = nil
19
+ end
20
+
21
+ def test_initialize
22
+ assert_equal '', @word.to_s
23
+ end
24
+
25
+ def test_current_word
26
+ end
27
+
28
+ def test_push_letter
29
+ @word.push_letter 'a'
30
+ assert_equal 'a', @word.to_s
31
+ @word.push_letter '0'
32
+ assert_equal 'a0', @word.to_s
33
+ end
34
+
35
+ def test_to_s
36
+ @word.push_letter '-'
37
+ assert_equal '-', @word.to_s
38
+ end
39
+
40
+ def test_clear
41
+ @word.push_letter '.'
42
+ assert_equal '.', @word.to_s
43
+ @word.clear
44
+ assert_equal '', @word.to_s
45
+ end
46
+
47
+ def test_strip
48
+ @word.push_letter ' a '
49
+ assert_equal ' a ', @word.to_s
50
+ @word.strip
51
+ assert_equal 'a', @word.to_s
52
+ end
53
+
54
+ def test_process_letter
55
+ @word.process_letter 'A'
56
+ assert_equal 'a', @word.to_s
57
+ @word.process_letter 'z'
58
+ assert_equal 'az', @word.to_s
59
+ @word.process_letter ','
60
+ assert_equal 'az,', @word.to_s
61
+ end
62
+ end
@@ -12,7 +12,7 @@ class TestCW < MiniTest::Test
12
12
 
13
13
  def setup
14
14
  @cw = CW.new
15
- @cw.pause
15
+ @cw.no_run
16
16
  end
17
17
 
18
18
  def teardown
@@ -23,12 +23,17 @@ class TestCW < MiniTest::Test
23
23
  assert true
24
24
  end
25
25
 
26
+ def test_os_play_command
27
+ obj = CWG::AudioPlayer.new
28
+ assert ('afplay' == obj.os_play_command) || ('ossplay' == obj.os_play_command)
29
+ end
30
+
26
31
  def test_cw_class
27
32
  assert_equal CW, @cw.class
28
33
  end
29
34
 
30
- def test_name_is_unnamed_if_unnamed
31
- assert_equal 'unnamed', @cw.name
35
+ def test_name_is_nil_if_unnamed
36
+ refute @cw.name
32
37
  end
33
38
 
34
39
  def test_name_can_be_set
@@ -37,41 +42,25 @@ class TestCW < MiniTest::Test
37
42
  end
38
43
 
39
44
  def test_loads_words_by_default
40
- assert_equal ["the", "of", "and", "a", "to"] , @cw.words.first(5)
41
- end
42
-
43
- def test_dictionary_defaults_to_COMMON_WORDS
44
- temp = nil
45
- CW.new {
46
- pause
47
- temp = Params.dictionary
48
- }
49
- assert_equal File.expand_path(ROOT + '/data/text/common_words.txt'), File.expand_path(temp)
45
+ assert_equal ["the", "of", "and", "to", "a"] , @cw.words.first(5)
50
46
  end
51
47
 
52
48
  def test_CW_takes_a_block
53
49
  CW.new {
54
- pause
50
+ no_run
55
51
  }
56
52
  end
57
53
 
58
- def test_dont_load_common_words_if_passed_in_block
54
+ def test_words_loads_words
59
55
  cw = CW.new {
60
- pause
56
+ no_run
61
57
  }
58
+ assert_equal 1000, cw.words.size
62
59
  cw.words = ["some", "words"]
63
60
  assert_equal ["some", "words"], cw.words
64
61
  end
65
62
 
66
- def test_word_filename_defaults_to_words
67
- cw = CW.new {
68
- pause
69
- }
70
- cw.words = ["some", "words"]
71
- assert_equal ["some","words"], cw.words
72
- end
73
-
74
- def test_no_run_aliases_pause
63
+ def test_no_run_aliases_no_run
75
64
  time = Time.now
76
65
  cw = CW.new {
77
66
  no_run
@@ -80,70 +69,44 @@ class TestCW < MiniTest::Test
80
69
  assert (Time.now - time) < 1
81
70
  end
82
71
 
83
- def test_reload_reloads_dictionary
84
- cw = CW.new {
85
- pause
86
- }
87
- cw.words = ["some", "words"]
88
- assert_equal ["some", "words"], cw.words
89
- cw.reload
90
- assert_equal ["the", "of", "and", "a", "to"] , cw.words.first(5)
91
- end
92
-
93
72
  def test_load_common_words_loads_common_words
94
73
  cw = CW.new {
95
- pause
74
+ no_run
96
75
  }
97
76
  cw.words = ["some", "words"]
98
77
  assert_equal ["some", "words"], cw.words
99
78
  cw.load_common_words
100
- assert_equal ["the", "of", "and", "a", "to"] , cw.words.first(5)
79
+ assert_equal ["the", "of", "and", "to", "a"] , cw.words.first(5)
101
80
  end
102
81
 
103
82
  def test_load_words_loads_passed_filename
104
83
  temp = Tempfile.new("words.tmp")
105
84
  temp << "some words"
106
85
  temp.close
107
- @cw.load_words(temp)
86
+ @cw.load_text temp
108
87
  assert_equal ["some", "words"], @cw.words
109
88
  end
110
89
 
111
- def test_reload_reuploads_new_words_ie_dictionary_updated
112
- temp = Tempfile.new("words.tmp")
113
- temp << "some more words"
114
- temp.close
115
- @cw.load_words(temp)
116
- assert_equal ["some", "more", "words"], @cw.words
117
- @cw.words = ''
118
- @cw.reload
119
- assert_equal ["some", "more", "words"], @cw.words
120
- @cw.load_common_words
121
- assert_equal ["the", "of", "and", "a", "to"] , @cw.words.first(5)
122
- end
123
-
124
- def test_to_s_outputs_test_run_header_if_paused
90
+ def test_to_s_outputs_test_run_header_if_no_run
125
91
  temp =
126
- %q(unnamed
127
- =======
92
+ %q(========
128
93
  WPM: 25
129
- =======
94
+ Word count: 16
95
+ ========
130
96
  )
131
97
  assert_equal temp, @cw.to_s
132
98
  end
133
99
 
134
100
  def test_to_s_outputs_relevant_params_if_set
135
101
  temp =
136
- %q(unnamed
137
- =======
102
+ %q(========
138
103
  WPM: 25
139
- Shuffle: yes
140
104
  Word count: 2
141
105
  Word size: 3
142
106
  Beginning: l
143
107
  Ending: x
144
- =======
108
+ ========
145
109
  )
146
- @cw.shuffle
147
110
  @cw.word_count 2
148
111
  @cw.word_size 3
149
112
  @cw.ending_with('x')
@@ -167,51 +130,48 @@ Ending: x
167
130
 
168
131
  def test_effective_wpm_is_settable
169
132
  effective_wpm = rand(50)
170
- @cw.effective_wpm effective_wpm
171
- assert_equal effective_wpm, @cw.effective_wpm
133
+ @cw.effective_wpm(effective_wpm)
134
+ assert_equal(effective_wpm, @cw.effective_wpm)
172
135
  end
173
136
 
174
- def test_word_spacing_is_settable_and_readable
175
- word_spacing = rand(50)
176
- @cw.word_spacing word_spacing
177
- assert_equal word_spacing, @cw.word_spacing
178
- end
137
+ #todo def test_word_spacing_is_settable_and_readable
138
+ # word_spacing = rand(50)
139
+ # @cw.word_spacing(word_spacing)
140
+ # assert_equal(word_spacing, @cw.word_spacing)
141
+ # end
179
142
 
180
143
  def test_shuffle_shuffles_words
181
144
  @cw.shuffle
182
- refute_equal ["the", "of", "and", "a", "to"] , @cw.words.first(5)
183
- end
184
-
185
- def test_no_shuffle_doesnt_shuffle
186
- @cw.no_shuffle
187
- assert_equal ["the", "of", "and", "a", "to"] , @cw.words.first(5)
145
+ refute_equal ["the", "of", "and", "to", "a"], @cw.words.first(5)
188
146
  end
189
147
 
190
148
  def test_word_size_returns_words_of_such_size
191
149
  @cw.word_size 2
192
- assert_equal ["of", "to", "in", "is", "it"] , @cw.words.first(5)
150
+ assert_equal ["of", "to", "in", "is", "on"] , @cw.words.first(5)
193
151
  end
194
152
 
195
153
  def test_beginning_with_returns_words_beginning_with_letter
196
154
  @cw.beginning_with 'l'
197
- assert_equal ["like", "look", "long", "little", "large"] , @cw.words.first(5)
155
+ assert_equal ["like", "list", "last", "links", "life"], @cw.words.first(5)
198
156
  end
199
157
 
200
158
  def test_beginning_with_will_take_two_letters
201
- @cw.beginning_with 'q','b'
202
- assert_equal ["question", "quickly", "quite", "quiet", "be", "by"] ,
159
+ @cw.load_words(1500)
160
+ @cw.beginning_with 'x','q'
161
+ assert_equal ["x", "xml", "quality", "questions", "q", "quote"],
203
162
  @cw.words.first(6)
204
163
  end
205
164
 
206
165
  def test_ending_with_returns_words_ending_with_letter
207
166
  @cw.ending_with 'l'
208
- assert_equal ["all", "will", "call", "oil", "well"] , @cw.words.first(5)
167
+ assert_equal ["all", "will", "email", "well", "school"], @cw.words.first(5)
209
168
  end
210
169
 
211
170
  def test_ending_with_will_take_two_letters
171
+ @cw.load_words 200
212
172
  @cw.ending_with 'x', 'a'
213
- assert_equal ["box", "six", "suffix", "a", "America", "sea"] ,
214
- @cw.words.first(6)
173
+ assert_equal ["x", "sex", "a", "data"],
174
+ @cw.words
215
175
  end
216
176
 
217
177
  def test_word_count_returns_x_words
@@ -221,22 +181,23 @@ Ending: x
221
181
 
222
182
  def test_including_returns_words_including_letter
223
183
  @cw.including 'l'
224
- assert_equal ["all", "will", "would", "like", "look"] , @cw.words.first(5)
184
+ assert_equal ["all", "will", "only", "also", "help"], @cw.words.first(5)
225
185
  end
226
186
 
227
187
  def test_including_will_take_two_letters
228
- @cw.including 'q', 'a'
229
- assert_equal ["question", "quickly", "equation", "square", "quite", "quiet", "equal", "and"] ,@cw.words.first(8)
188
+ @cw.load_words(100)
189
+ @cw.including 'p','b'
190
+ assert_equal ["page", "up", "help", "pm", "by", "be", "about", "but"],@cw.words.first(8)
230
191
  end
231
192
 
232
193
  def test_no_longer_than_will_return_words_no_longer_than_x
233
194
  @cw.no_longer_than 4
234
- assert_equal ["the", "of", "and", "a", "to"] , @cw.words.first(5)
195
+ assert_equal ["the", "of", "and", "to", "a"] , @cw.words.first(5)
235
196
  end
236
197
 
237
198
  def test_no_shorter_than_will_return_words_no_shorter_than_x
238
199
  @cw.no_shorter_than 4
239
- assert_equal ["that", "with", "they", "this", "have"] , @cw.words.first(5)
200
+ assert_equal ["that", "this", "with", "from", "your"], @cw.words.first(5)
240
201
  end
241
202
 
242
203
  def test_words_fn_adds_words
@@ -356,7 +317,7 @@ Ending: x
356
317
  assert_equal 567, @cw.frequency(567)
357
318
  @cw.frequency 456
358
319
  assert_equal 456, @cw.frequency
359
- end
320
+ end
360
321
 
361
322
  def test_play_command_returns_play_command
362
323
  assert_equal 567, @cw.play_command(567)
@@ -392,111 +353,117 @@ Ending: x
392
353
  assert @cw.method(:words_no_shorter_than), @cw.method(:no_shorter_than)
393
354
  assert @cw.method(:random_alphanumeric), @cw.method(:random_letters_numbers)
394
355
  assert @cw.method(:comment), @cw.method(:name)
395
- assert @cw.method(:no_run), @cw.method(:pause)
396
356
  end
397
357
 
398
358
  def test_set_wpm_param
399
- @cw.wpm 33
400
- assert @cw.cl.cl_wpm == '-w 33 ', 'wpm param invalid'
359
+ @cw.wpm 35
360
+ assert_equal 35, @cw.wpm
361
+ assert @cw.instance_variable_get('@cl').cl_wpm == '-w 35 ', 'wpm param invalid'
401
362
  end
402
363
 
403
364
  def test_set_ewpm_param
404
365
  @cw.effective_wpm 33
405
- assert @cw.cl.cl_effective_wpm == '-e 33 ', 'effective_wpm param invalid'
366
+ assert @cw.instance_variable_get('@cl').cl_effective_wpm == '-e 33 ', 'effective_wpm param invalid'
406
367
  end
407
368
 
408
369
  def test_set_word_spacing_W_param
409
370
  @cw.word_spacing 2
410
- assert @cw.cl.cl_word_spacing == '-W 2 ', 'word_spacing param invalid'
371
+ assert @cw.instance_variable_get('@cl').cl_word_spacing == '-W 2 ', 'word_spacing param invalid'
411
372
  end
412
373
 
413
374
  def test_set_freq_f_param
414
375
  @cw.frequency 800
415
- assert @cw.cl.cl_frequency == '-f 800 ', 'frequency param invalid'
376
+ assert @cw.instance_variable_get('@cl').cl_frequency == '-f 800 ', 'frequency param invalid'
416
377
  end
417
378
 
418
- def test_set_squarewave_param
419
- @cw.set_tone_type :squarewave
420
- assert @cw.cl.cl_squarewave == '-T 2 ', 'squarewave param invalid'
379
+ def test_tone_squarewave_param
380
+ @cw.tone :squarewave
381
+ assert @cw.instance_variable_get('@cl').cl_squarewave == '-T 2 ', 'squarewave param invalid'
421
382
  end
422
383
 
423
- def test_set_sawtooth_param
424
- @cw.set_tone_type :sawtooth
425
- assert @cw.cl.cl_sawtooth == '-T 1 ', 'sawtooth param invalid'
384
+ def test_tone_sawtooth_param
385
+ @cw.tone :sawtooth
386
+ assert @cw.instance_variable_get('@cl').cl_sawtooth == '-T 1 ', 'sawtooth param invalid'
426
387
  end
427
388
 
428
- def test_set_sinewave_param
429
- @cw.set_tone_type :sinewave
430
- assert @cw.cl.cl_sinewave == '-T 0 ', 'sinewave param invalid'
389
+ def test_tone_sinewave_param
390
+ @cw.tone :sinewave
391
+ assert @cw.instance_variable_get('@cl').cl_sinewave == '-T 0 ', 'sinewave param invalid'
431
392
  end
432
393
 
433
394
  def test_build_build_cl_ignores_invalid_tone_type
434
- @cw.set_tone_type :sinewave
435
- @cw.set_tone_type :invalid
436
- assert @cw.cl.cl_sinewave == '-T 0 ', 'not ignoring invalid tone type'
395
+ @cw.tone :invalid
396
+ assert @cw.instance_variable_get('@cl').cl_sinewave == '', 'not ignoring invalid tone type'
437
397
  end
438
398
 
439
399
  def test_set_author_param
440
400
  @cw.author 'some author'
441
- assert @cw.cl.cl_author == '-a "some author" ', 'author param invalid'
401
+ assert @cw.instance_variable_get('@cl').cl_author == '-a "some author" ', 'author param invalid'
442
402
  end
443
403
 
444
404
  def test_set_title_param
445
405
  @cw.title 'some title'
446
- assert @cw.cl.cl_title == '-t "some title" ', 'title param invalid'
406
+ assert @cw.instance_variable_get('@cl').cl_title == '-t "some title" ', 'title param invalid'
447
407
  end
448
408
 
449
409
  def test_set_N_param_in_noise_mode
450
410
  @cw.noise
451
- assert @cw.cl.cl_noise.include?('-N 5 '), 'noise N param invalid'
411
+ assert @cw.instance_variable_get('@cl').cl_noise.include?('-N 5 '), 'noise N param invalid'
452
412
  end
453
413
 
454
414
  def test_set_B_param_in_noise_mode
455
415
  @cw.noise
456
- assert @cw.cl.cl_noise.include?('-B 1000 '), 'noise B param invalid'
416
+ assert @cw.instance_variable_get('@cl').cl_noise.include?('-B 1000 '), 'noise B param invalid'
457
417
  end
458
418
 
459
419
  def test_set_default_filename
460
- assert @cw.cl.cl_audio_filename.include?('audio_output'), 'default audio output filename invalid'
420
+ assert @cw.instance_variable_get('@cl').cl_audio_filename.
421
+ include?('audio_output'), 'default audio output filename invalid'
461
422
  end
462
423
 
463
424
  def test_set_audio_filename_to_given_name
464
425
  @cw.audio_filename('some name')
465
- assert @cw.cl.cl_audio_filename.include?("some name"), 'default audio filename invalid'
426
+ assert @cw.instance_variable_get('@cl').cl_audio_filename.
427
+ include?("some name"), 'default audio filename invalid'
466
428
  end
467
429
 
468
430
  def test_set_q_param_when_numeric_quality
469
431
  @cw.quality 5
470
- assert @cw.cl.cl_quality.include?('-q 5 '), 'audio quality invalid'
432
+ assert @cw.instance_variable_get('@cl').cl_quality.
433
+ include?('-q 5 '), 'audio quality invalid'
471
434
  end
472
435
 
473
436
  def test_set_low_quality
474
437
  @cw.quality :low
475
- assert @cw.cl.cl_quality.include?('-q 9 '), 'audio low quality invalid'
438
+ assert @cw.instance_variable_get('@cl').cl_quality.
439
+ include?('-q 9 '), 'audio low quality invalid'
476
440
  end
477
441
 
478
442
  def test_set_medium_quality
479
443
  @cw.quality :medium
480
- assert @cw.cl.cl_quality.include?('-q 5 '), 'audio medium quality invalid'
444
+ assert @cw.instance_variable_get('@cl').cl_quality.
445
+ include?('-q 5 '), 'audio medium quality invalid'
481
446
  end
482
447
 
483
448
  def test_set_high_quality
484
449
  @cw.quality :high
485
- assert @cw.cl.cl_quality.include?('-q 1 '), 'audio high quality invalid'
450
+ assert @cw.instance_variable_get('@cl').cl_quality.
451
+ include?('-q 1 '), 'audio high quality invalid'
486
452
  end
487
453
 
488
454
  def test_build_command_includes_custom_commands_via_build_cl
489
455
  @cw.command_line '-x "some custom command"'
490
- assert @cw.cl.cl_command_line.include?( '-x "some custom command"'), 'custom command invalid'
456
+ assert @cw.instance_variable_get('@cl').cl_command_line.
457
+ include?( '-x "some custom command"'), 'custom command invalid'
491
458
  end
492
459
 
493
460
  def test_cl_echo_returns_correct_string
494
461
  str = ''
495
462
  CW.new do
496
463
  str = @cl.cl_echo('some words')
497
- pause
464
+ no_run
498
465
  end
499
- assert str.include?('echo some words | ebook2cw -w 25')
466
+ assert str.include?('some words')
500
467
  end
501
468
 
502
469
  def test_words_exist
@@ -504,19 +471,19 @@ Ending: x
504
471
  CW.new do
505
472
  words = 'some words added here'
506
473
  temp = words
507
- pause
474
+ no_run
508
475
  end
509
476
  assert_equal(4, temp.split.size)
510
477
  CW.new do
511
478
  @words.add 'a couple of words'
512
479
  temp = words
513
- pause
480
+ no_run
514
481
  end
515
482
  assert_equal(4, temp.split.size)
516
483
  CW.new do
517
484
  @words.add nil
518
485
  temp = words
519
- pause
486
+ no_run
520
487
  end
521
488
  assert_nil(temp)
522
489
  end