eulers_day_off 0.1.0

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.
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe EulersDayOff do
4
+ it "can generate a random list of 25 letters" do
5
+ letters = EulersDayOff.random_letters
6
+
7
+ letters.size.should == 25
8
+ letters.each do |letter|
9
+ letter.should match(/\A[a-z]{1}\z/)
10
+ end
11
+ end
12
+
13
+ it "can score a 5 x 5 board, ignoring pluals" do
14
+ board = [ %w(c a t b y),
15
+ %w(n r e u k),
16
+ %w(m t a m s),
17
+ %w(b t m s q),
18
+ %w(i y s v w) ]
19
+
20
+ EulersDayOff.score(board).should == 3 + # cat
21
+ 3 + # tam
22
+ 3 + # art
23
+ 4 + # team
24
+ 3 # bum
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe EulersDayOff::LetterGenerator do
4
+ let(:generator) { EulersDayOff::LetterGenerator.new }
5
+
6
+ before do
7
+ @mock = double()
8
+ generator.letters = @mock
9
+ end
10
+
11
+ it "generates 25 letters" do
12
+ @mock.should_receive(:sample).exactly(25).times.and_return('a')
13
+
14
+ random_letters = generator.generate
15
+
16
+ random_letters.size.should == 25
17
+ random_letters.each { |letter| letter.should == 'a' }
18
+ end
19
+
20
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe EulersDayOff::Scorer do
4
+
5
+ let(:scorer) { EulersDayOff::Scorer.new(stub(:include? => true)) }
6
+
7
+ it "gives a score of 0 for empty boards" do
8
+ scorer.score(Array.new(5) { Array.new(5) }).should == 0
9
+ end
10
+
11
+ it "can score a coloum that starts with a word" do
12
+ board = [ ["c", "a", "t", nil, nil], Array.new(5), Array.new(5), Array.new(5), Array.new(5) ]
13
+
14
+ scorer.score(board).should == 3
15
+ end
16
+
17
+ it "can score a coloum that ends with a word" do
18
+ board = [ [nil, nil, "c", "a", "t"], Array.new(5), Array.new(5), Array.new(5), Array.new(5) ]
19
+
20
+ scorer.score(board).should == 3
21
+ end
22
+
23
+ it "can score a row that starts with a word" do
24
+ board = [ ["c", nil, nil, nil, nil], ["a", nil, nil, nil, nil], ["t", nil, nil, nil, nil], Array.new(5), Array.new(5) ]
25
+
26
+ scorer.score(board).should == 3
27
+ end
28
+
29
+ it "can score a row that ends with a word" do
30
+ board = [ Array.new(5), Array.new(5), ["c", nil, nil, nil, nil], ["a", nil, nil, nil, nil], ["t", nil, nil, nil, nil] ]
31
+
32
+ scorer.score(board).should == 3
33
+ end
34
+
35
+ end
@@ -0,0 +1,2 @@
1
+ require 'rspec'
2
+ require 'eulers_day_off'
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe EulersDayOff::WordList do
4
+ let(:filter) { EulersDayOff::WordList.new }
5
+
6
+ it "#insert" do
7
+ filter.insert("blah")
8
+ filter.should include("blah")
9
+ end
10
+
11
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe EulersDayOff::WordLoader do
4
+ let(:loader) { EulersDayOff::WordLoader.new("FAKE_PATH") }
5
+
6
+ before do
7
+ @file_mock = double("file")
8
+ loader.file = @file_mock
9
+ end
10
+
11
+ it "creates a bloom filter from the word list" do
12
+ @file_mock.should_receive(:each_line).and_yield("cat\n").and_yield("dog")
13
+
14
+ bloom_filter_mock = double("bloom filter")
15
+ bloom_filter_mock.should_receive(:insert).with('cat')
16
+ bloom_filter_mock.should_receive(:insert).with('dog')
17
+
18
+ word_list = loader.populate_word_list(bloom_filter_mock)
19
+
20
+ word_list.should be(bloom_filter_mock)
21
+ end
22
+
23
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eulers_day_off
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Eric Koslow
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2013-01-23 00:00:00 -06:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rake
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :development
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: rspec
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :development
43
+ version_requirements: *id002
44
+ description: Scores Euler's Day Off boards
45
+ email:
46
+ - ekoslow+eulersdayoff@gmail.com
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files: []
52
+
53
+ files:
54
+ - .gitignore
55
+ - Gemfile
56
+ - LICENSE.txt
57
+ - README.md
58
+ - Rakefile
59
+ - eulers_day_off.gemspec
60
+ - lib/eulers_day_off.rb
61
+ - lib/eulers_day_off/letter_generator.rb
62
+ - lib/eulers_day_off/scorer.rb
63
+ - lib/eulers_day_off/word_list.rb
64
+ - lib/eulers_day_off/word_loader.rb
65
+ - lib/version.rb
66
+ - lib/word_list.txt
67
+ - spec/eulers_day_off_spec.rb
68
+ - spec/letter_generator_spec.rb
69
+ - spec/scorer_spec.rb
70
+ - spec/spec_helper.rb
71
+ - spec/word_list_spec.rb
72
+ - spec/word_loader_spec.rb
73
+ has_rdoc: true
74
+ homepage: https://github.com/ekosz/eulers_day_off
75
+ licenses: []
76
+
77
+ post_install_message:
78
+ rdoc_options: []
79
+
80
+ require_paths:
81
+ - lib
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ requirements: []
97
+
98
+ rubyforge_project:
99
+ rubygems_version: 1.3.6
100
+ signing_key:
101
+ specification_version: 3
102
+ summary: Scores Euler's Day Off boards
103
+ test_files:
104
+ - spec/eulers_day_off_spec.rb
105
+ - spec/letter_generator_spec.rb
106
+ - spec/scorer_spec.rb
107
+ - spec/spec_helper.rb
108
+ - spec/word_list_spec.rb
109
+ - spec/word_loader_spec.rb