Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Error with Random.state on 1.9.x #2

Merged
merged 4 commits into from almost 2 years ago

2 participants

Jason Rogers Tom Harris
Jason Rogers

Random.state raises a private method error when run on 1.9.x because the core Random class has a private state method (which means something very different, obviously). So, I added a RandomData::Locations#state_code method and deprecated the RandomData::Locations#state method.

Jason Rogers

I have also added Names.company_name

Tom Harris tomharris merged commit 2fb4d0d into from
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Showing 4 unique commits by 1 author.

Sep 30, 2011
Jason Rogers rename Random#state to Random#state_code for 1.9 compatibility 1dc0480
Jason Rogers deprecated RandomData::Locations#state d48d88b
Dec 13, 2011
Jason Rogers added company_name 8fdebe2
Jason Rogers improve randomization of company names 2ca6bdf
This page is out of date. Refresh to see the latest.
7 Gemfile
... ... @@ -0,0 +1,7 @@
  1 +source 'http://rubygems.org'
  2 +
  3 +group :development do
  4 + gem 'mocha'
  5 + gem 'rake'
  6 + gem 'rdoc'
  7 +end
20 Gemfile.lock
... ... @@ -0,0 +1,20 @@
  1 +GEM
  2 + remote: http://rubygems.org/
  3 + specs:
  4 + json (1.6.3)
  5 + json (1.6.3-java)
  6 + metaclass (0.0.1)
  7 + mocha (0.10.0)
  8 + metaclass (~> 0.0.1)
  9 + rake (0.9.2)
  10 + rdoc (3.11)
  11 + json (~> 1.4)
  12 +
  13 +PLATFORMS
  14 + java
  15 + ruby
  16 +
  17 +DEPENDENCIES
  18 + mocha
  19 + rake
  20 + rdoc
16 Rakefile
... ... @@ -1,6 +1,10 @@
1   -require 'rake'
2   -require 'rake/testtask'
3   -require 'rake/rdoctask'
4   -
5   -# TODO - want other tests/tasks run by default? Add them to the list
6   -# task :default => [:spec, :features]
  1 +require 'rake'
  2 +require 'rake/testtask'
  3 +require 'rdoc/task'
  4 +
  5 +RDoc::Task.new do |rdoc|
  6 +end
  7 +
  8 +# TODO - want other tests/tasks run by default? Add them to the list
  9 +# task :default => [:spec, :features]
  10 +task :default => :test
10 lib/random_data/locations.rb
@@ -80,10 +80,18 @@ def uk_post_code
80 80 # Returns a state 2-character abbreviation
81 81 # Random.state = "IL"
82 82
83   - def state
  83 + def state_code
84 84 @@us_states.rand[1]
85 85 end
86 86
  87 + # This method is deprecated, and will not
  88 + # work in 1.9.x because Random already defines
  89 + # state as a private method. Use state_code
  90 + # instead.
  91 + def state
  92 + state_code
  93 + end
  94 +
87 95 # Returns a full state name
88 96 #Random.state_full = "Texas"
89 97
27 lib/random_data/names.rb
@@ -14,7 +14,34 @@ def initial
14 14 KIRBY KIRK LAKE LEE LEWIS MARTIN MARTINEZ MAJOR MILLER MOORE OATES PETERS PETERSON ROBERTSON
15 15 ROBINSON RODRIGUEZ SMITH SMYTHE STEVENS TAYLOR THATCHER THOMAS THOMPSON WALKER WASHINGTON WHITE
16 16 WILLIAMS WILSON YORKE)
  17 + @@incorporation_types = %w{LLC Inc Inc. Ltd. LP LLP Corp. PLLC}
  18 + @@company_types = %w{Clothier Publishing Computing Consulting Engineering Industries Marketing Manufacturing}
17 19
  20 + # Returns a random company name
  21 + #
  22 + # >> Random.company_name
  23 + #
  24 + # "Harris & Thomas"
  25 +
  26 + def companyname
  27 + num = rand(5)
  28 + if num == 0
  29 + num = 1
  30 + end
  31 + final = num.times.collect { @@lastnames.rand.capitalize }
  32 +
  33 + if final.count == 1
  34 + "#{final.first} #{@@company_types.rand}, #{@@incorporation_types.rand}"
  35 + else
  36 + incorporation_type = rand(17) % 2 == 0 ? @@incorporation_types.rand : nil
  37 + company_type = rand(17) % 2 == 0 ? @@company_types.rand : nil
  38 + trailer = company_type.nil? ? "" : " #{company_type}"
  39 + trailer << ", #{incorporation_type}" unless incorporation_type.nil?
  40 + "#{final[0..-1].join(', ')} & #{final.last}#{trailer}"
  41 + end
  42 + end
  43 +
  44 + alias company_name companyname
18 45 # Returns a random lastname
19 46 #
20 47 # >> Random.lastname
606 test/test_random_data.rb
... ... @@ -1,298 +1,308 @@
1   -require File.dirname(__FILE__) + '/test_helper.rb'
2   -
3   -class TestRandomData < Test::Unit::TestCase
4   -
5   - def setup
6   - # to make random numbers deterministic for testing purposes
7   - srand(100)
8   - end
9   -
10   - def test_should_return_random_phone_number
11   - assert_equal "620-892-9039", Random.phone
12   - end
13   -
14   - def test_should_return_random_international_phone
15   - assert_equal "011-9-34-9039", Random.international_phone
16   - end
17   -
18   - def test_should_return_random_email
19   - assert_equal "ijones@webmail.com", Random.email
20   - end
21   -
22   - def test_should_return_random_date
23   - Date.expects(:today).returns(Date.civil(2007,9,15))
24   - assert_equal "2007-09-13", Random.date.to_s
25   - end
26   -
27   - def test_should_return_random_date_with_range
28   - Date.expects(:today).returns(Date.civil(2007,9,15))
29   - assert_equal "2007-10-29", Random.date(1500).to_s
30   - end
31   -
32   - def test_should_return_random_address_line_1
33   - assert_equal "38408 Highland Blvd", Random.address_line_1
34   - end
35   -
36   - def test_should_return_random_address_line_2
37   - assert_equal "Lot 792", Random.address_line_2
38   - end
39   -
40   - def test_should_return_random_zipcode
41   - assert_equal "38408", Random.zipcode
42   - end
43   -
44   - def test_should_return_random_uk_post_code
45   - assert_equal "BM8 24DB", Random.uk_post_code
46   - end
47   -
48   - def test_should_return_random_state
49   - assert_equal "DE", Random.state
50   - end
51   -
52   - def test_should_return_random_state_full
53   - assert_equal "Delaware", Random.state_full
54   - end
55   -
56   - def test_should_return_random_country
57   - assert_equal "Armenia", Random.country
58   - end
59   -
60   - def test_should_return_random_city
61   - assert_equal "Georgetown", Random.city
62   - end
63   -
64   - def test_should_return_random_firstname
65   - assert_equal "Donald", Random.firstname
66   - end
67   -
68   - def test_should_return_random_first_name
69   - assert_equal "Donald", Random.first_name
70   - end
71   -
72   -
73   - def test_should_return_random_firstnamemale
74   - assert_equal "Donald", Random.firstname_male
75   - end
76   -
77   - def test_should_return_random_first_name_male
78   - assert_equal "Donald", Random.first_name_male
79   - end
80   -
81   - def test_should_return_random_firstnamefemale
82   - assert_equal "Charlotte", Random.firstname_female
83   - end
84   -
85   - def test_should_return_random_first_name_female
86   - assert_equal "Charlotte", Random.first_name_female
87   - end
88   -
89   - def test_should_return_random_initial
90   - assert_equal "I", Random.initial
91   - end
92   -
93   - def test_should_return_random_lastname
94   - assert_equal "Clarke", Random.lastname
95   - end
96   -
97   - def test_should_return_random_last_name
98   - assert_equal "Clarke", Random.last_name
99   - end
100   -
101   - def test_should_return_random_full_name
102   - assert_equal "Donald Jones", Random.full_name
103   - end
104   -
105   - def test_should_return_random_alphanumeric
106   - assert_equal "8O3dNFmAUqYr2YEY", Random.alphanumeric
107   - end
108   -
109   - def test_should_return_random_alphanumeric_with_range
110   - assert_equal "8O3dNFm", Random.alphanumeric(7)
111   - end
112   -
113   - def test_should_return_random_paragraphs
114   - assert_equal 2, Random.paragraphs(2).scan(/\n\n/).size
115   - end
116   -
117   - def test_should_return_random_paragraphs_with_limit
118   - num_paragraphs = 5
119   - assert_equal num_paragraphs, Random.paragraphs(num_paragraphs).scan(/\n\n/).size
120   - end
121   -
122   - def test_initial_should_not_return_nil
123   - srand(11) #This would force the nil case in the old implementation
124   - assert_not_nil Random.initial
125   - end
126   -
127   - def test_should_return_random_date_using_range
128   - Date.expects(:today).returns(Date.civil(2007,9,15))
129   - assert_equal '1998-03-30', Random.date(-5000..-1000).to_s
130   - end
131   -
132   - def test_should_return_random_date_between_using_range_of_dates
133   - min = Date.parse('1966-11-15')
134   - max = Date.parse('1990-01-01')
135   - assert_equal '1982-04-25', Random.date_between(min..max).to_s
136   - end
137   -
138   - def test_should_return_random_date_between_using_range_of_strings
139   - assert_equal '1982-04-25', Random.date_between('1966-11-15'..'1990-01-01').to_s
140   - end
141   -
142   - def test_should_return_random_boolean_true
143   - srand(99)
144   - assert_equal true, Random.boolean
145   - end
146   -
147   - def test_should_return_random_boolean_false
148   - assert_equal false, Random.boolean
149   - end
150   -
151   - def test_should_return_random_number_less_than_10
152   - assert_equal 8, Random.number(9)
153   - end
154   -
155   - def test_should_return_random_bit
156   - assert_equal 0, Random.bit
157   - end
158   -
159   - def test_should_return_random_bits
160   - assert_equal 10, Random.bits(10).size
161   - assert_equal [0, 1, 0, 0, 0, 0, 1, 0, 0, 1], Random.bits(10)
162   - end
163   -
164   - def test_should_return_random_number_within_range
165   - assert_equal 13, Random.number(5..15)
166   - end
167   -
168   - def test_should_return_random_grammatical_construct
169   - assert_equal "Bob bites Rex",
170   - Random::grammatical_construct({:story => [:man, " bites ", :dog],
171   - :man => { :bob => "Bob"},
172   - :dog => {:a =>"Rex", :b =>"Rover"}},
173   - :story)
174   - end
175   -
176   - def test_roulette_wheel_with_positive_weights
177   - weights=[10,5,1,1];
178   - results = []
179   - 17.times do
180   - results << weights.roulette
181   - end
182   - assert_equal([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0],
183   - results);
184   - results = []
185   - weights.roulette(17) do |i|
186   - results << i
187   - end
188   - assert_equal([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
189   - results);
190   - end
191   -
192   - def test_roulette_wheel_with_zero_weights
193   - weights=[0,0,0];
194   - assert_raise RuntimeError do
195   - weights.roulette
196   - end
197   - assert_raise RuntimeError do
198   - x=0
199   - weights.roulette(1){|i| x=i}
200   - end
201   - end
202   -
203   - def test_roulette_wheel_with_negative_weights
204   - weights=[2,-1,2];
205   - assert_raise RuntimeError do
206   - weights.roulette
207   - end
208   - assert_raise RuntimeError do
209   - x=0
210   - weights.roulette(1){|i| x=i}
211   - end
212   - end
213   -end
214   -
215   -class TestRandomDataMethodMissing < Test::Unit::TestCase
216   -
217   - def sports
218   - @sports ||= %w(hockey basketball water\ polo five-a-side football judo pole\ vault steeple\ chase)
219   - end
220   -
221   - def lines
222   - @lines ||= sports.join("\r\n")
223   - end
224   -
225   - def path
226   - @path ||= File.join("lib","sport.dat")
227   - end
228   -
229   - def setup
230   - @file = stub('file', :read => lines)
231   - $:.stubs(:each).yields("lib")
232   - File.stubs(:exist?).returns(true)
233   - File.stubs(:open).yields(@file)
234   - end
235   -
236   - def test_should_search_load_path_for_file
237   - $:.expects(:each).yields("lib")
238   - Random.sport
239   - end
240   -
241   - def test_should_join_path_with_methodname_dot_dat
242   - File.expects(:join).with("lib","sport.dat").returns("lib/sport.dat")
243   - Random.sport
244   - end
245   -
246   - def test_should_test_for_existence_of_filename_matching_method_missing_call
247   - File.expects(:exist?).with(path).returns(true)
248   - Random.sport
249   - end
250   -
251   - def test_should_call_super_if_unable_to_find_file
252   - # can't test super call directly, so we test whether MethodMissing gets raised properly
253   - File.stubs(:exist?).returns(false)
254   - assert_raise(NoMethodError) { Random.horse }
255   - end
256   -
257   - def test_should_open_file_matching_method_missing_call
258   - File.expects(:open).with(path,"r").yields(@file)
259   - Random.sport
260   - end
261   -
262   - def test_should_read_lines_from_file
263   - @file.expects(:read).returns(@lines)
264   - Random.sport
265   - end
266   -
267   - def test_should_return_random_line_from_a_file
268   - srand(101)
269   - assert_equal 'steeple chase', Random.sport
270   - assert_equal 'five-a-side', Random.sport
271   - end
272   -
273   -end
274   -
275   -class TestRandomDataMarkovGenerator < Test::Unit::TestCase
276   - def test_markov_generator
277   - markov_machine = RandomData::MarkovGenerator.new(3)
278   - text = IO.read "#{File.dirname(__FILE__)}/henry_v_prolog.txt"
279   - text.split(/\s+/).each do |word|
280   - markov_machine.insert(word)
281   - end
282   - assert_equal(["PROLOGUE", "Enter", "CHORUS",
283   - "CHORUS.", "O", "for", "a", "Muse",
284   - "of", "fire,", "that", "would", "ascend",
285   - "The", "brightest", "heaven", "of",
286   - "invention,", "A", "kingdom"],
287   - markov_machine.generate(20));
288   - markov_machine = RandomData::MarkovGenerator.new(3)
289   - text.scan(/\S{2}|\s+/).each do |word|
290   - markov_machine.insert(word)
291   - end
292   - assert_equal(["PR", "OL", "OG", "UE", "\n\n", "En",
293   - "te", " ", "CH", "OR", "US", "\n\n",
294   - "CH", "OR", "US", "\n\n", "CH", "OR",
295   - "US", "\n\n"],
296   - markov_machine.generate(20));
297   - end
298   -end
  1 +require File.dirname(__FILE__) + '/test_helper.rb'
  2 +
  3 +class TestRandomData < Test::Unit::TestCase
  4 +
  5 + def setup
  6 + # to make random numbers deterministic for testing purposes
  7 + srand(100)
  8 + end
  9 +
  10 + def test_should_return_random_phone_number
  11 + assert_equal "620-892-9039", Random.phone
  12 + end
  13 +
  14 + def test_should_return_random_international_phone
  15 + assert_equal "011-9-34-9039", Random.international_phone
  16 + end
  17 +
  18 + def test_should_return_random_email
  19 + assert_equal "ijones@webmail.com", Random.email
  20 + end
  21 +
  22 + def test_should_return_random_date
  23 + Date.expects(:today).returns(Date.civil(2007,9,15))
  24 + assert_equal "2007-09-13", Random.date.to_s
  25 + end
  26 +
  27 + def test_should_return_random_date_with_range
  28 + Date.expects(:today).returns(Date.civil(2007,9,15))
  29 + assert_equal "2007-10-29", Random.date(1500).to_s
  30 + end
  31 +
  32 + def test_should_return_random_address_line_1
  33 + assert_equal "38408 Highland Blvd", Random.address_line_1
  34 + end
  35 +
  36 + def test_should_return_random_address_line_2
  37 + assert_equal "Lot 792", Random.address_line_2
  38 + end
  39 +
  40 + def test_should_return_random_zipcode
  41 + assert_equal "38408", Random.zipcode
  42 + end
  43 +
  44 + def test_should_return_random_uk_post_code
  45 + assert_equal "BM8 24DB", Random.uk_post_code
  46 + end
  47 +
  48 + def test_should_return_random_state
  49 + assert_equal "DE", Random.state_code
  50 + end
  51 +
  52 + def test_should_return_random_state_full
  53 + assert_equal "Delaware", Random.state_full
  54 + end
  55 +
  56 + def test_should_return_random_country
  57 + assert_equal "Armenia", Random.country
  58 + end
  59 +
  60 + def test_should_return_random_city
  61 + assert_equal "Georgetown", Random.city
  62 + end
  63 +
  64 + def test_should_return_random_firstname
  65 + assert_equal "Donald", Random.firstname
  66 + end
  67 +
  68 + def test_should_return_random_first_name
  69 + assert_equal "Donald", Random.first_name
  70 + end
  71 +
  72 +
  73 + def test_should_return_random_firstnamemale
  74 + assert_equal "Donald", Random.firstname_male
  75 + end
  76 +
  77 + def test_should_return_random_first_name_male
  78 + assert_equal "Donald", Random.first_name_male
  79 + end
  80 +
  81 + def test_should_return_random_firstnamefemale
  82 + assert_equal "Charlotte", Random.firstname_female
  83 + end
  84 +
  85 + def test_should_return_random_first_name_female
  86 + assert_equal "Charlotte", Random.first_name_female
  87 + end
  88 +
  89 + def test_should_return_random_initial
  90 + assert_equal "I", Random.initial
  91 + end
  92 +
  93 + def test_should_return_random_lastname
  94 + assert_equal "Clarke", Random.lastname
  95 + end
  96 +
  97 + def test_should_return_random_last_name
  98 + assert_equal "Clarke", Random.last_name
  99 + end
  100 +
  101 + def test_should_return_random_full_name
  102 + assert_equal "Donald Jones", Random.full_name
  103 + end
  104 +
  105 + def test_should_return_random_companyname
  106 + srand(17)
  107 + assert_equal "Garcia Marketing, Corp.", Random.companyname
  108 + end
  109 +
  110 + def test_should_return_random_company_name
  111 + srand(9999999999)
  112 + assert_equal "Anthony, Edwards & Edwards Publishing", Random.company_name
  113 + end
  114 +
  115 + def test_should_return_random_alphanumeric
  116 + assert_equal "8O3dNFmAUqYr2YEY", Random.alphanumeric
  117 + end
  118 +
  119 + def test_should_return_random_alphanumeric_with_range
  120 + assert_equal "8O3dNFm", Random.alphanumeric(7)
  121 + end
  122 +
  123 + def test_should_return_random_paragraphs
  124 + assert_equal 2, Random.paragraphs(2).scan(/\n\n/).size
  125 + end
  126 +
  127 + def test_should_return_random_paragraphs_with_limit
  128 + num_paragraphs = 5
  129 + assert_equal num_paragraphs, Random.paragraphs(num_paragraphs).scan(/\n\n/).size
  130 + end
  131 +
  132 + def test_initial_should_not_return_nil
  133 + srand(11) #This would force the nil case in the old implementation
  134 + assert_not_nil Random.initial
  135 + end
  136 +
  137 + def test_should_return_random_date_using_range
  138 + Date.expects(:today).returns(Date.civil(2007,9,15))
  139 + assert_equal '1998-03-30', Random.date(-5000..-1000).to_s
  140 + end
  141 +
  142 + def test_should_return_random_date_between_using_range_of_dates
  143 + min = Date.parse('1966-11-15')
  144 + max = Date.parse('1990-01-01')
  145 + assert_equal '1982-04-25', Random.date_between(min..max).to_s
  146 + end
  147 +
  148 + def test_should_return_random_date_between_using_range_of_strings
  149 + assert_equal '1982-04-25', Random.date_between('1966-11-15'..'1990-01-01').to_s
  150 + end
  151 +
  152 + def test_should_return_random_boolean_true
  153 + srand(99)
  154 + assert_equal true, Random.boolean
  155 + end
  156 +
  157 + def test_should_return_random_boolean_false
  158 + assert_equal false, Random.boolean
  159 + end
  160 +
  161 + def test_should_return_random_number_less_than_10
  162 + assert_equal 8, Random.number(9)
  163 + end
  164 +
  165 + def test_should_return_random_bit
  166 + assert_equal 0, Random.bit
  167 + end
  168 +
  169 + def test_should_return_random_bits
  170 + assert_equal 10, Random.bits(10).size
  171 + assert_equal [0, 1, 0, 0, 0, 0, 1, 0, 0, 1], Random.bits(10)
  172 + end
  173 +
  174 + def test_should_return_random_number_within_range
  175 + assert_equal 13, Random.number(5..15)
  176 + end
  177 +
  178 + def test_should_return_random_grammatical_construct
  179 + assert_equal "Bob bites Rex",
  180 + Random::grammatical_construct({:story => [:man, " bites ", :dog],
  181 + :man => { :bob => "Bob"},
  182 + :dog => {:a =>"Rex", :b =>"Rover"}},
  183 + :story)
  184 + end
  185 +
  186 + def test_roulette_wheel_with_positive_weights
  187 + weights=[10,5,1,1];
  188 + results = []
  189 + 17.times do
  190 + results << weights.roulette
  191 + end
  192 + assert_equal([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0],
  193 + results);
  194 + results = []
  195 + weights.roulette(17) do |i|
  196 + results << i
  197 + end
  198 + assert_equal([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  199 + results);
  200 + end
  201 +
  202 + def test_roulette_wheel_with_zero_weights
  203 + weights=[0,0,0];
  204 + assert_raise RuntimeError do
  205 + weights.roulette
  206 + end
  207 + assert_raise RuntimeError do
  208 + x=0
  209 + weights.roulette(1){|i| x=i}
  210 + end
  211 + end
  212 +
  213 + def test_roulette_wheel_with_negative_weights
  214 + weights=[2,-1,2];
  215 + assert_raise RuntimeError do
  216 + weights.roulette
  217 + end
  218 + assert_raise RuntimeError do
  219 + x=0
  220 + weights.roulette(1){|i| x=i}
  221 + end
  222 + end
  223 +end
  224 +
  225 +class TestRandomDataMethodMissing < Test::Unit::TestCase
  226 +
  227 + def sports
  228 + @sports ||= %w(hockey basketball water\ polo five-a-side football judo pole\ vault steeple\ chase)
  229 + end
  230 +
  231 + def lines
  232 + @lines ||= sports.join("\r\n")
  233 + end
  234 +
  235 + def path
  236 + @path ||= File.join("lib","sport.dat")
  237 + end
  238 +
  239 + def setup
  240 + @file = stub('file', :read => lines)
  241 + $:.stubs(:each).yields("lib")
  242 + File.stubs(:exist?).returns(true)
  243 + File.stubs(:open).yields(@file)
  244 + end
  245 +
  246 + def test_should_search_load_path_for_file
  247 + $:.expects(:each).yields("lib")
  248 + Random.sport
  249 + end
  250 +
  251 + def test_should_join_path_with_methodname_dot_dat
  252 + File.expects(:join).with("lib","sport.dat").returns("lib/sport.dat")
  253 + Random.sport
  254 + end
  255 +
  256 + def test_should_test_for_existence_of_filename_matching_method_missing_call
  257 + File.expects(:exist?).with(path).returns(true)
  258 + Random.sport
  259 + end
  260 +
  261 + def test_should_call_super_if_unable_to_find_file
  262 + # can't test super call directly, so we test whether MethodMissing gets raised properly
  263 + File.stubs(:exist?).returns(false)
  264 + assert_raise(NoMethodError) { Random.horse }
  265 + end
  266 +
  267 + def test_should_open_file_matching_method_missing_call
  268 + File.expects(:open).with(path,"r").yields(@file)
  269 + Random.sport
  270 + end
  271 +
  272 + def test_should_read_lines_from_file
  273 + @file.expects(:read).returns(@lines)
  274 + Random.sport
  275 + end
  276 +
  277 + def test_should_return_random_line_from_a_file
  278 + srand(101)
  279 + assert_equal 'steeple chase', Random.sport
  280 + assert_equal 'five-a-side', Random.sport
  281 + end
  282 +
  283 +end
  284 +
  285 +class TestRandomDataMarkovGenerator < Test::Unit::TestCase
  286 + def test_markov_generator
  287 + markov_machine = RandomData::MarkovGenerator.new(3)
  288 + text = IO.read "#{File.dirname(__FILE__)}/henry_v_prolog.txt"
  289 + text.split(/\s+/).each do |word|
  290 + markov_machine.insert(word)
  291 + end
  292 + assert_equal(["PROLOGUE", "Enter", "CHORUS",
  293 + "CHORUS.", "O", "for", "a", "Muse",
  294 + "of", "fire,", "that", "would", "ascend",
  295 + "The", "brightest", "heaven", "of",
  296 + "invention,", "A", "kingdom"],
  297 + markov_machine.generate(20));
  298 + markov_machine = RandomData::MarkovGenerator.new(3)
  299 + text.scan(/\S{2}|\s+/).each do |word|
  300 + markov_machine.insert(word)
  301 + end
  302 + assert_equal(["PR", "OL", "OG", "UE", "\n\n", "En",
  303 + "te", " ", "CH", "OR", "US", "\n\n",
  304 + "CH", "OR", "US", "\n\n", "CH", "OR",
  305 + "US", "\n\n"],
  306 + markov_machine.generate(20));
  307 + end
  308 +end

Tip: You can add notes to lines in a file. Hover to the left of a line to make a note

Something went wrong with that request. Please try again.