chess_vwong 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/spec/pawn_spec.rb ADDED
@@ -0,0 +1,112 @@
1
+ require "spec_helper"
2
+
3
+ module ChessVwong
4
+ describe Pawn do
5
+ let (:current_space) { [1,1]}
6
+ let (:board) { Board.new}
7
+ let (:node) { Node.new}
8
+ let (:pawn) { Pawn.new(current_space,"w")}
9
+ let (:pawn_2) { Pawn.new(current_space,"b")}
10
+ context "#initialize" do
11
+ it "should return Piece attributes: color" do
12
+ expect(pawn.color).to eq "w"
13
+ end
14
+
15
+ it "should return Piece attributes: current_space" do
16
+ expect(pawn.current_space).to eq current_space
17
+ end
18
+ end
19
+
20
+ context "#character" do
21
+ it "should return a white pawn character" do
22
+ expect(pawn.character).to eq "\u{265F}"
23
+ end
24
+
25
+ it "should return a black pawn character" do
26
+ expect(pawn_2.character).to eq "\u{2659}"
27
+ end
28
+ end
29
+
30
+ context "#generate_neighbours" do
31
+ it "should return only 0 neighbour when [1,1] and White" do
32
+ pawn.generate_neighbours(current_space, node, node)
33
+ expect(pawn.neighbours.count).to eq 0
34
+ end
35
+
36
+ it "should return only 4 neighbours if First move and white" do
37
+ current_space = [7,7]
38
+ pawn.generate_neighbours(current_space, node, node)
39
+ expect(pawn.neighbours.count).to eq 2
40
+ end
41
+
42
+ it "should return 4 moves if First move and Black" do
43
+ current_space = [2,2]
44
+ pawn.generate_neighbours(current_space, node, node)
45
+ pawn_2.generate_neighbours(current_space, node, node)
46
+ expect(pawn_2.neighbours.count).to eq 2
47
+ end
48
+
49
+ it "should return only 2 neighbour when [8,8] and Black" do
50
+ current_space = [8,8]
51
+ pawn_2.generate_neighbours(current_space, node, node)
52
+ expect(pawn_2.neighbours.count).to eq 0
53
+ end
54
+
55
+ it "should return only 3 neighbour when in the middle" do
56
+ current_space = [3,3]
57
+ pawn.generate_neighbours(current_space, node, node)
58
+ expect(pawn.neighbours.count).to eq 1
59
+ end
60
+ end
61
+
62
+ context "kill_move" do
63
+ it "should return Kill Moves for Black Pawn" do
64
+ current_space = [2,2]
65
+ enemy_node1 = board.grid[3][3]
66
+ enemy_node1.occupied << pawn
67
+ enemy_node2 = board.grid[3][1]
68
+ enemy_node2.occupied << pawn
69
+ expect(pawn_2.generate_neighbours(current_space, enemy_node1, enemy_node2).count).to eq 4
70
+ end
71
+
72
+ it "should not return Kill Moves for Black Pawn if empty" do
73
+ current_space = [2,2]
74
+ expect(pawn_2.generate_neighbours(current_space, node, node).count).to eq 2
75
+ end
76
+
77
+ it "should not return Kill Moves for Black Pawn if blocked by same color" do
78
+ current_space = [2,2]
79
+ enemy_node1 = board.grid[3][3]
80
+ enemy_node1.occupied << pawn_2
81
+ enemy_node2 = board.grid[3][1]
82
+ enemy_node2.occupied << pawn_2
83
+ expect(pawn_2.generate_neighbours(current_space, enemy_node1, enemy_node2).count).to eq 2
84
+ end
85
+
86
+ it "should return Kill Moves for White Pawn" do
87
+ current_space = [7,7]
88
+ enemy_node1 = board.grid[6][6]
89
+ enemy_node1.occupied << pawn_2
90
+ enemy_node2 = board.grid[6][8]
91
+ enemy_node2.occupied << pawn_2
92
+ expect(pawn.generate_neighbours(current_space, enemy_node1, enemy_node2).count).to eq 4
93
+ end
94
+
95
+ it "should not return Kill Moves for White Pawn if empty" do
96
+ current_space = [7,7]
97
+ expect(pawn.generate_neighbours(current_space, node, node).count).to eq 2
98
+
99
+ end
100
+
101
+ it "should not return Kill Moves for White Pawn if blocked by same color" do
102
+ current_space = [7,7]
103
+ enemy_node1 = board.grid[6][6]
104
+ enemy_node1.occupied << pawn
105
+ enemy_node2 = board.grid[6][8]
106
+ enemy_node2.occupied << pawn
107
+ expect(pawn.generate_neighbours(current_space, enemy_node1, enemy_node2).count).to eq 2
108
+ end
109
+ end
110
+
111
+ end
112
+ end
@@ -0,0 +1,53 @@
1
+ require "spec_helper"
2
+
3
+ module ChessVwong
4
+ describe Piece do
5
+ let (:current_space) {[1,1]}
6
+ let (:piece) { Piece.new(current_space, "w")}
7
+
8
+ context "#initialize" do
9
+ it "should initialize with current_space" do
10
+ expect(piece.current_space).to eq current_space
11
+ end
12
+
13
+ it "should initialize with current_space" do
14
+ expect(piece.color).to eq "w"
15
+ end
16
+ end
17
+
18
+ context "#neighbours" do
19
+ it "should contain neighouring spaces" do
20
+ neighouring_space = [4,4]
21
+ piece.neighbours << neighouring_space
22
+ expect(piece.neighbours).to eq [[4,4]]
23
+ end
24
+ end
25
+
26
+ context "#valid_space?" do
27
+ it "should return true if valid" do
28
+ valid_space = [5,5]
29
+ expect(piece.valid_space?(valid_space)).to eq true
30
+ end
31
+
32
+ it "should return nil if x < 0" do
33
+ invalid_space = [-1, 5]
34
+ expect(piece.valid_space?(invalid_space)).to eq nil
35
+ end
36
+
37
+ it "should return nil if x > 9" do
38
+ invalid_space = [9,5]
39
+ expect(piece.valid_space?(invalid_space)).to eq nil
40
+ end
41
+
42
+ it "should return nil if y < 0" do
43
+ invalid_space = [5,-1]
44
+ expect(piece.valid_space?(invalid_space)).to eq nil
45
+ end
46
+
47
+ it "should return nil if y > 9" do
48
+ invalid_space = [5,9]
49
+ expect(piece.valid_space?(invalid_space)).to eq nil
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ module ChessVwong
4
+ describe Player do
5
+
6
+ context "#color" do
7
+ it "returns color" do
8
+ player = Player.new("Van Damme", "w")
9
+ expect(player.color).to eq "w"
10
+ end
11
+ end
12
+
13
+ context "#name" do
14
+ it "returns name" do
15
+ player = Player.new("Van Damme", "w")
16
+ expect(player.name).to eq "Van Damme"
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,50 @@
1
+ require "spec_helper"
2
+
3
+ module ChessVwong
4
+ describe Queen do
5
+ let (:current_space) { [1,1]}
6
+ let (:queen) { Queen.new(current_space,"w")}
7
+ context "#initialize" do
8
+ it "should return Piece attributes: color" do
9
+ expect(queen.color).to eq "w"
10
+ end
11
+
12
+ it "should return Piece attributes: current_space" do
13
+ expect(queen.current_space).to eq current_space
14
+ end
15
+ end
16
+
17
+ context "#character" do
18
+ it "should return a white queen character" do
19
+ expect(queen.character).to eq "\u{265B}"
20
+ end
21
+
22
+ it "should return a black queen character" do
23
+ queen_2 = Queen.new(current_space,"b")
24
+ expect(queen_2.character).to eq "\u{2655}"
25
+ end
26
+ end
27
+
28
+ context "#generate_neighbours" do
29
+ it "should return only 21 neighbour when [1,1]" do
30
+ queen.generate_neighbours(current_space)
31
+ expect(queen.neighbours.count).to eq 21
32
+ end
33
+
34
+ it "should return only 21 neighbour when [8,8]" do
35
+ current_space = [8,8]
36
+ queen.generate_neighbours(current_space)
37
+ expect(queen.neighbours.count).to eq 21
38
+ end
39
+
40
+ it "should return only 14 neighbour when in the middle" do
41
+ current_space = [4,4]
42
+ queen.generate_neighbours(current_space)
43
+ expect(queen.neighbours.count).to eq 27
44
+ end
45
+
46
+ end
47
+
48
+
49
+ end
50
+ end
data/spec/rook_spec.rb ADDED
@@ -0,0 +1,50 @@
1
+ require "spec_helper"
2
+
3
+ module ChessVwong
4
+ describe Rook do
5
+ let (:current_space) { [1,1]}
6
+ let (:rook) { Rook.new(current_space,"w")}
7
+ context "#initialize" do
8
+ it "should return Piece attributes: color" do
9
+ expect(rook.color).to eq "w"
10
+ end
11
+
12
+ it "should return Piece attributes: current_space" do
13
+ expect(rook.current_space).to eq current_space
14
+ end
15
+ end
16
+
17
+ context "#character" do
18
+ it "should return a white rook character" do
19
+ expect(rook.character).to eq "\u{265C}"
20
+ end
21
+
22
+ it "should return a black rook character" do
23
+ rook_2 = Rook.new(current_space,"b")
24
+ expect(rook_2.character).to eq "\u{2656}"
25
+ end
26
+ end
27
+
28
+ context "#generate_neighbours" do
29
+ it "should return only 14 neighbour when [1,1]" do
30
+ rook.generate_neighbours(current_space)
31
+ expect(rook.neighbours.count).to eq 14
32
+ end
33
+
34
+ it "should return only 14 neighbour when [8,8]" do
35
+ current_space = [8,8]
36
+ rook.generate_neighbours(current_space)
37
+ expect(rook.neighbours.count).to eq 14
38
+ end
39
+
40
+ it "should return only 14 neighbour when in the middle" do
41
+ current_space = [4,4]
42
+ rook.generate_neighbours(current_space)
43
+ expect(rook.neighbours.count).to eq 14
44
+ end
45
+
46
+ end
47
+
48
+
49
+ end
50
+ end
@@ -0,0 +1 @@
1
+ require_relative "../lib/chess_vwong.rb"
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chess_vwong
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Vincent Wong
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: 2-player CLI Chess
56
+ email:
57
+ - wingyu64@gmail.com
58
+ executables:
59
+ - chess_vwong
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - ".gitignore"
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - bin/chess_vwong
69
+ - chess_vwong.gemspec
70
+ - example/example_game.rb
71
+ - lib/chess_vwong.rb
72
+ - lib/chess_vwong/bishop.rb
73
+ - lib/chess_vwong/board.rb
74
+ - lib/chess_vwong/game.rb
75
+ - lib/chess_vwong/king.rb
76
+ - lib/chess_vwong/knight.rb
77
+ - lib/chess_vwong/node.rb
78
+ - lib/chess_vwong/pawn.rb
79
+ - lib/chess_vwong/piece.rb
80
+ - lib/chess_vwong/player.rb
81
+ - lib/chess_vwong/preload.rb
82
+ - lib/chess_vwong/queen.rb
83
+ - lib/chess_vwong/rook.rb
84
+ - lib/chess_vwong/version.rb
85
+ - spec/bishop_spec.rb
86
+ - spec/board_spec.rb
87
+ - spec/game_spec.rb
88
+ - spec/king_spec.rb
89
+ - spec/knight_spec.rb
90
+ - spec/node_spec.rb
91
+ - spec/pawn_spec.rb
92
+ - spec/piece_spec.rb
93
+ - spec/player_spec.rb
94
+ - spec/queen_spec.rb
95
+ - spec/rook_spec.rb
96
+ - spec/spec_helper.rb
97
+ homepage: ''
98
+ licenses:
99
+ - MIT
100
+ metadata: {}
101
+ post_install_message:
102
+ rdoc_options: []
103
+ require_paths:
104
+ - lib
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ requirements: []
116
+ rubyforge_project:
117
+ rubygems_version: 2.4.3
118
+ signing_key:
119
+ specification_version: 4
120
+ summary: 2-player CLI Chess
121
+ test_files:
122
+ - spec/bishop_spec.rb
123
+ - spec/board_spec.rb
124
+ - spec/game_spec.rb
125
+ - spec/king_spec.rb
126
+ - spec/knight_spec.rb
127
+ - spec/node_spec.rb
128
+ - spec/pawn_spec.rb
129
+ - spec/piece_spec.rb
130
+ - spec/player_spec.rb
131
+ - spec/queen_spec.rb
132
+ - spec/rook_spec.rb
133
+ - spec/spec_helper.rb