tic_tac_toes 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18a1a5f19c58b04046be154ce6371a79b5c613f2
4
- data.tar.gz: d856bf4e9b49e86407f173c5a303c0d920202938
3
+ metadata.gz: eba6ff9bd4e9e32b11a8d56fec6a495e8c3b6f4c
4
+ data.tar.gz: 3b3a75a1cce99eaeb7a7f98c816f5b48cc348244
5
5
  SHA512:
6
- metadata.gz: 0424458bf16942f7728584c4b4ec040164ce468f8c7a5fb31a0c671c871de601b2d945d46912cce466ab646afce7503dd0ad1d43350e427aa33a0fd4b0fba158
7
- data.tar.gz: ce07f69665def752ea0f74c959764bab06fdf683bcbe984d4971693df77ad8ce741b48651d728ce3be3382cc1a0a78f13a1433e12accf5c1d41d4f7ce8a54ee6
6
+ metadata.gz: 28447b247bb23d735ccf63dbccacb1a65a5179e382a54fc50ed25ff005d6354552db44b548af93fd26253a2a0055910bcec8798151265a05a177f294483a04f7
7
+ data.tar.gz: 9c276bb9a57b910eb7e8a6fac87f5f1036551923c7e682ec19532010fa5cb1fbc6eb68a7001d21b97a3390e7779be9a5f6a519c4967461d86e0b66cb49c77217
data/.gitignore CHANGED
@@ -4,7 +4,6 @@
4
4
  .DS_Store
5
5
  .config
6
6
  .yardoc
7
- Gemfile.lock
8
7
  InstalledFiles
9
8
  _yardoc
10
9
  coverage
data/Gemfile.lock ADDED
@@ -0,0 +1,33 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ tic_tac_toes (0.0.1)
5
+ pg
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.2.5)
11
+ pg (0.17.1)
12
+ rake (10.3.2)
13
+ rspec (3.0.0)
14
+ rspec-core (~> 3.0.0)
15
+ rspec-expectations (~> 3.0.0)
16
+ rspec-mocks (~> 3.0.0)
17
+ rspec-core (3.0.1)
18
+ rspec-support (~> 3.0.0)
19
+ rspec-expectations (3.0.1)
20
+ diff-lcs (>= 1.2.0, < 2.0)
21
+ rspec-support (~> 3.0.0)
22
+ rspec-mocks (3.0.1)
23
+ rspec-support (~> 3.0.0)
24
+ rspec-support (3.0.0)
25
+
26
+ PLATFORMS
27
+ ruby
28
+
29
+ DEPENDENCIES
30
+ bundler
31
+ rake
32
+ rspec
33
+ tic_tac_toes!
data/README.md CHANGED
@@ -4,5 +4,10 @@ The game Tic-tac-toe, featuring an unbeatable AI.
4
4
 
5
5
  ## Usage
6
6
 
7
- 1. Install the gem: `gem install tic_tac_toes`
8
- 2. Launch the game: `tic_tac_toes`
7
+ 1. Install [PostgreSQL][]
8
+ 2. Install the gem: `gem install tic_tac_toes`
9
+ 3. Create the databases: `set_up_ttt_databases`
10
+ * To drop the databases: `destroy_ttt_databases`
11
+ 4. Launch the game: `tic_tac_toes`
12
+
13
+ [PostgreSQL]: http://www.postgresql.org
data/Rakefile CHANGED
@@ -1,25 +1,4 @@
1
- require "bundler/gem_tasks"
2
- require 'pg'
1
+ require 'bundler/gem_tasks'
3
2
 
4
- task :create_tables do
5
- connection = establish_connection
6
- connection.exec("CREATE TABLE games (
7
- id serial primary key,
8
- board_size integer,
9
- winner varchar)")
10
- connection.exec("CREATE TABLE moves (
11
- game integer REFERENCES games (id),
12
- number integer,
13
- token varchar,
14
- space integer)")
15
- end
16
-
17
- task :destroy_tables do
18
- connection = establish_connection
19
- connection.exec("DROP TABLE moves")
20
- connection.exec("DROP TABLE games")
21
- end
22
-
23
- def establish_connection
24
- PG.connect(dbname: "tic_tac_toes")
25
- end
3
+ load './lib/tic_tac_toes/tasks/set_up_databases.rake'
4
+ load './lib/tic_tac_toes/tasks/destroy_databases.rake'
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rake'
4
+
5
+ gem_directory = File.expand_path('..', File.dirname(__FILE__))
6
+ Dir.chdir(gem_directory)
7
+
8
+ Rake.application.init
9
+ Rake.application.load_rakefile
10
+ Rake.application['destroy_databases'].invoke
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rake'
4
+
5
+ gem_directory = File.expand_path('..', File.dirname(__FILE__))
6
+ Dir.chdir(gem_directory)
7
+
8
+ Rake.application.init
9
+ Rake.application.load_rakefile
10
+ Rake.application['set_up_databases'].invoke
@@ -0,0 +1,9 @@
1
+ require 'pg'
2
+
3
+ desc 'Drop tic_tac_toes databases'
4
+ task :destroy_databases do
5
+ connection = PG.connect(dbname: "postgres")
6
+
7
+ connection.exec("DROP DATABASE tic_tac_toes")
8
+ connection.exec("DROP DATABASE tic_tac_toes_test")
9
+ end
@@ -0,0 +1,41 @@
1
+ require 'pg'
2
+
3
+ PRODUCTION_DATABASE = 'tic_tac_toes'
4
+ TEST_DATABASE = 'tic_tac_toes_test'
5
+
6
+ desc 'Set up tic_tac_toes databases'
7
+ task :set_up_databases do
8
+ create_databases_if_not_exist
9
+ create_production_tables_if_not_exist
10
+ end
11
+
12
+ def create_databases_if_not_exist
13
+ connection = PG.connect(dbname: "postgres")
14
+
15
+ connection.exec("CREATE DATABASE #{PRODUCTION_DATABASE}") unless already_exists?(PRODUCTION_DATABASE, connection)
16
+ connection.exec("CREATE DATABASE #{TEST_DATABASE}") unless already_exists?(TEST_DATABASE, connection)
17
+ end
18
+
19
+ def already_exists?(database, connection)
20
+ existing_ttt_database_result = connection.exec("SELECT COUNT(*) FROM pg_database WHERE datname = '#{database}'")
21
+ number_of_existing_ttt_databases = existing_ttt_database_result.getvalue(0,0).to_i
22
+
23
+ number_of_existing_ttt_databases == 1 ? true : false
24
+ end
25
+
26
+ def create_production_tables_if_not_exist
27
+ connection = PG.connect(dbname: "#{PRODUCTION_DATABASE}")
28
+
29
+ # Suppress "already exist" notices
30
+ connection.exec("set client_min_messages=warning")
31
+
32
+ connection.exec("CREATE TABLE IF NOT EXISTS games (
33
+ id serial primary key,
34
+ board_size integer,
35
+ winner varchar)")
36
+ connection.exec("CREATE TABLE IF NOT EXISTS moves (
37
+ game integer REFERENCES games (id),
38
+ number integer,
39
+ token varchar,
40
+ space integer)")
41
+ end
@@ -1,3 +1,3 @@
1
1
  module TicTacToes
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,10 +1,10 @@
1
1
  require 'database/pg_wrapper'
2
2
  require 'pg'
3
- require 'tic_tac_toes/history'
4
3
  require 'tic_tac_toes/spec_helper'
5
4
 
6
5
  describe Database::PGWrapper do
7
- database = "test"
6
+ database = "tic_tac_toes_test"
7
+
8
8
  let(:pg_wrapper) { Database::PGWrapper.new(database) }
9
9
  let(:history1) { double("history 1",
10
10
  :board_size => 9,
@@ -44,7 +44,7 @@ describe Database::PGWrapper do
44
44
  pg_wrapper.record_game_history(history1)
45
45
  pg_wrapper.record_game_history(history2)
46
46
  histories_from_database = pg_wrapper.read_game_histories
47
- expect(histories_from_database).to have(2).histories
47
+ expect(histories_from_database.size).to eq(2)
48
48
  end
49
49
  end
50
50
 
@@ -48,7 +48,7 @@ describe TicTacToes::Board do
48
48
  board = generate_board(structure)
49
49
  first_row = [:X, :X, :X, :X]
50
50
 
51
- expect(board.rows).to have(4).rows
51
+ expect(board.rows.size).to eq(4)
52
52
  expect(board.rows.first).to eql(first_row)
53
53
  end
54
54
  end
@@ -63,7 +63,7 @@ describe TicTacToes::Board do
63
63
  board = generate_board(structure)
64
64
  first_column = [:X, :X, :X, :X]
65
65
 
66
- expect(board.columns).to have(4).columns
66
+ expect(board.columns.size).to eq(4)
67
67
  expect(board.columns.first).to eql(first_column)
68
68
  end
69
69
  end
@@ -79,7 +79,7 @@ describe TicTacToes::Board do
79
79
  back_diagonal = [:X, :X, :X, :X]
80
80
  front_diagonal = [:O, :O, :O, :O]
81
81
 
82
- expect(board.diagonals).to have(2).diagonals
82
+ expect(board.diagonals.size).to eq(2)
83
83
  expect(board.diagonals.first).to eql(back_diagonal)
84
84
  expect(board.diagonals.last).to eql(front_diagonal)
85
85
  end
data/tic_tac_toes.gemspec CHANGED
@@ -13,11 +13,11 @@ Gem::Specification.new do |spec|
13
13
  spec.license = "MIT"
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0")
16
- spec.executables = ["tic_tac_toes"]
16
+ spec.executables = ["tic_tac_toes", "set_up_ttt_databases", "destroy_ttt_databases"]
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.6"
20
+ spec.add_development_dependency "bundler"
21
21
  spec.add_development_dependency "rake"
22
22
  spec.add_development_dependency "rspec"
23
23
  spec.add_dependency "pg"
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tic_tac_toes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Spatafora
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-16 00:00:00.000000000 Z
11
+ date: 2014-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -71,14 +71,19 @@ email:
71
71
  - benjamin.spatafora@gmail.com
72
72
  executables:
73
73
  - tic_tac_toes
74
+ - set_up_ttt_databases
75
+ - destroy_ttt_databases
74
76
  extensions: []
75
77
  extra_rdoc_files: []
76
78
  files:
77
79
  - ".gitignore"
78
80
  - Gemfile
81
+ - Gemfile.lock
79
82
  - LICENSE.txt
80
83
  - README.md
81
84
  - Rakefile
85
+ - bin/destroy_ttt_databases
86
+ - bin/set_up_ttt_databases
82
87
  - bin/tic_tac_toes
83
88
  - lib/command_line/io.rb
84
89
  - lib/command_line/menu.rb
@@ -94,6 +99,8 @@ files:
94
99
  - lib/tic_tac_toes/player_factory.rb
95
100
  - lib/tic_tac_toes/rules.rb
96
101
  - lib/tic_tac_toes/strings.rb
102
+ - lib/tic_tac_toes/tasks/destroy_databases.rake
103
+ - lib/tic_tac_toes/tasks/set_up_databases.rake
97
104
  - lib/tic_tac_toes/version.rb
98
105
  - spec/command_line/menu_spec.rb
99
106
  - spec/command_line/runner_spec.rb