Skip to content

Commit 9026270

Browse files
committed
Add templates for exercises batch 13
1 parent 4474bb9 commit 9026270

File tree

12 files changed

+385
-205
lines changed

12 files changed

+385
-205
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
require 'minitest/autorun'
2+
require_relative 'connect'
3+
4+
class ConnectTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
expected = '<%= cases["expected"] %>'
9+
board = [
10+
'<%= cases["input"]["board"].join("', \n'") %>'
11+
].map { |row| row.gsub(/^ */, '') }
12+
actual = Board.new(board).winner
13+
assert_equal expected, actual, '<%= cases["description"] %>'
14+
end
15+
<% end %>
16+
end

exercises/practice/connect/connect_test.rb

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,114 +4,124 @@
44
class ConnectTest < Minitest::Test
55
def test_an_empty_board_has_no_winner
66
# skip
7+
expected = ''
78
board = [
89
'. . . . .',
910
' . . . . .',
1011
' . . . . .',
1112
' . . . . .',
1213
' . . . . .'
1314
].map { |row| row.gsub(/^ */, '') }
14-
game = Board.new(board)
15-
assert_equal '', game.winner, 'an empty board has no winner'
15+
actual = Board.new(board).winner
16+
assert_equal expected, actual, 'an empty board has no winner'
1617
end
1718

1819
def test_x_can_win_on_a_1x1_board
1920
skip
21+
expected = 'X'
2022
board = [
2123
'X'
2224
].map { |row| row.gsub(/^ */, '') }
23-
game = Board.new(board)
24-
assert_equal 'X', game.winner, 'X can win on a 1x1 board'
25+
actual = Board.new(board).winner
26+
assert_equal expected, actual, 'X can win on a 1x1 board'
2527
end
2628

2729
def test_o_can_win_on_a_1x1_board
2830
skip
31+
expected = 'O'
2932
board = [
3033
'O'
3134
].map { |row| row.gsub(/^ */, '') }
32-
game = Board.new(board)
33-
assert_equal 'O', game.winner, 'O can win on a 1x1 board'
35+
actual = Board.new(board).winner
36+
assert_equal expected, actual, 'O can win on a 1x1 board'
3437
end
3538

3639
def test_only_edges_does_not_make_a_winner
3740
skip
41+
expected = ''
3842
board = [
3943
'O O O X',
4044
' X . . X',
4145
' X . . X',
4246
' X O O O'
4347
].map { |row| row.gsub(/^ */, '') }
44-
game = Board.new(board)
45-
assert_equal '', game.winner, 'only edges does not make a winner'
48+
actual = Board.new(board).winner
49+
assert_equal expected, actual, 'only edges does not make a winner'
4650
end
4751

4852
def test_illegal_diagonal_does_not_make_a_winner
4953
skip
54+
expected = ''
5055
board = [
5156
'X O . .',
5257
' O X X X',
5358
' O X O .',
5459
' . O X .',
5560
' X X O O'
5661
].map { |row| row.gsub(/^ */, '') }
57-
game = Board.new(board)
58-
assert_equal '', game.winner, 'illegal diagonal does not make a winner'
62+
actual = Board.new(board).winner
63+
assert_equal expected, actual, 'illegal diagonal does not make a winner'
5964
end
6065

6166
def test_nobody_wins_crossing_adjacent_angles
6267
skip
68+
expected = ''
6369
board = [
6470
'X . . .',
6571
' . X O .',
6672
' O . X O',
6773
' . O . X',
6874
' . . O .'
6975
].map { |row| row.gsub(/^ */, '') }
70-
game = Board.new(board)
71-
assert_equal '', game.winner, 'nobody wins crossing adjacent angles'
76+
actual = Board.new(board).winner
77+
assert_equal expected, actual, 'nobody wins crossing adjacent angles'
7278
end
7379

7480
def test_x_wins_crossing_from_left_to_right
7581
skip
82+
expected = 'X'
7683
board = [
7784
'. O . .',
7885
' O X X X',
7986
' O X O .',
8087
' X X O X',
8188
' . O X .'
8289
].map { |row| row.gsub(/^ */, '') }
83-
game = Board.new(board)
84-
assert_equal 'X', game.winner, 'X wins crossing from left to right'
90+
actual = Board.new(board).winner
91+
assert_equal expected, actual, 'X wins crossing from left to right'
8592
end
8693

8794
def test_o_wins_crossing_from_top_to_bottom
8895
skip
96+
expected = 'O'
8997
board = [
9098
'. O . .',
9199
' O X X X',
92100
' O O O .',
93101
' X X O X',
94102
' . O X .'
95103
].map { |row| row.gsub(/^ */, '') }
96-
game = Board.new(board)
97-
assert_equal 'O', game.winner, 'O wins crossing from top to bottom'
104+
actual = Board.new(board).winner
105+
assert_equal expected, actual, 'O wins crossing from top to bottom'
98106
end
99107

100108
def test_x_wins_using_a_convoluted_path
101109
skip
110+
expected = 'X'
102111
board = [
103112
'. X X . .',
104113
' X . X . X',
105114
' . X . X .',
106115
' . X X . .',
107116
' O O O O O'
108117
].map { |row| row.gsub(/^ */, '') }
109-
game = Board.new(board)
110-
assert_equal 'X', game.winner, 'X wins using a convoluted path'
118+
actual = Board.new(board).winner
119+
assert_equal expected, actual, 'X wins using a convoluted path'
111120
end
112121

113122
def test_x_wins_using_a_spiral_path
114123
skip
124+
expected = 'X'
115125
board = [
116126
'O X X X X X X X X',
117127
' O X O O O O O O O',
@@ -123,7 +133,7 @@ def test_x_wins_using_a_spiral_path
123133
' O O O O O O O X O',
124134
' X X X X X X X X O'
125135
].map { |row| row.gsub(/^ */, '') }
126-
game = Board.new(board)
127-
assert_equal 'X', game.winner, 'X wins using a spiral path'
136+
actual = Board.new(board).winner
137+
assert_equal expected, actual, 'X wins using a spiral path'
128138
end
129139
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
require 'minitest/autorun'
2+
require_relative 'nucleotide_count'
3+
4+
class NucleotideTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
<%- if cases["expected"].is_a?(Hash) && cases["expected"].key?("error") -%>
9+
assert_raises ArgumentError do
10+
Nucleotide.from_dna('<%= cases["input"]["strand"] %>')
11+
end
12+
<%- else -%>
13+
expected = <%= cases["expected"] %>
14+
actual = Nucleotide.from_dna('<%= cases["input"]["strand"] %>').histogram
15+
assert_equal expected, actual
16+
<%- end -%>
17+
end
18+
<% end %>
19+
end

exercises/practice/nucleotide-count/nucleotide_count_test.rb

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,52 +2,38 @@
22
require_relative 'nucleotide_count'
33

44
class NucleotideTest < Minitest::Test
5-
def test_empty_dna_strand_has_no_adenosine
6-
assert_equal 0, Nucleotide.from_dna('').count('A')
5+
def test_empty_strand
6+
# skip
7+
expected = { "A" => 0, "C" => 0, "G" => 0, "T" => 0 }
8+
actual = Nucleotide.from_dna('').histogram
9+
assert_equal expected, actual
710
end
811

9-
def test_repetitive_cytidine_gets_counted
12+
def test_can_count_one_nucleotide_in_single_character_input
1013
skip
11-
assert_equal 5, Nucleotide.from_dna('CCCCC').count('C')
14+
expected = { "A" => 0, "C" => 0, "G" => 1, "T" => 0 }
15+
actual = Nucleotide.from_dna('G').histogram
16+
assert_equal expected, actual
1217
end
1318

14-
def test_counts_only_thymidine
19+
def test_strand_with_repeated_nucleotide
1520
skip
16-
assert_equal 1, Nucleotide.from_dna('GGGGGTAACCCGG').count('T')
21+
expected = { "A" => 0, "C" => 0, "G" => 7, "T" => 0 }
22+
actual = Nucleotide.from_dna('GGGGGGG').histogram
23+
assert_equal expected, actual
1724
end
1825

19-
def test_counts_a_nucleotide_only_once
26+
def test_strand_with_multiple_nucleotides
2027
skip
21-
dna = Nucleotide.from_dna('CGATTGGG')
22-
dna.count('T')
23-
dna.count('T')
24-
assert_equal 2, dna.count('T')
28+
expected = { "A" => 20, "C" => 12, "G" => 17, "T" => 21 }
29+
actual = Nucleotide.from_dna('AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC').histogram
30+
assert_equal expected, actual
2531
end
2632

27-
def test_empty_dna_strand_has_no_nucleotides
28-
skip
29-
expected = { 'A' => 0, 'T' => 0, 'C' => 0, 'G' => 0 }
30-
assert_equal expected, Nucleotide.from_dna('').histogram
31-
end
32-
33-
def test_repetitive_sequence_has_only_guanosine
34-
skip
35-
expected = { 'A' => 0, 'T' => 0, 'C' => 0, 'G' => 8 }
36-
assert_equal expected, Nucleotide.from_dna('GGGGGGGG').histogram
37-
end
38-
39-
def test_counts_all_nucleotides
40-
skip
41-
s = 'AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
42-
dna = Nucleotide.from_dna(s)
43-
expected = { 'A' => 20, 'T' => 21, 'G' => 17, 'C' => 12 }
44-
assert_equal expected, dna.histogram
45-
end
46-
47-
def test_validates_dna
33+
def test_strand_with_invalid_nucleotides
4834
skip
4935
assert_raises ArgumentError do
50-
Nucleotide.from_dna('JOHNNYAPPLESEED')
36+
Nucleotide.from_dna('AGXXACT')
5137
end
5238
end
5339
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
require 'minitest/autorun'
2+
require_relative 'nucleotide_count'
3+
4+
class NucleotideTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
input = ['<%= cases["input"]["rows"].join("', \n'") %>'].join("\n")
9+
<%- if cases["expected"].is_a?(Hash) && cases["expected"].key?("error") -%>
10+
assert_raises(ArgumentError) do
11+
OcrNumbers.convert(input)
12+
end
13+
<%- else -%>
14+
expected = '<%= cases["expected"] %>'
15+
actual = OcrNumbers.convert(input)
16+
assert_equal expected, actual
17+
<%- end -%>
18+
end
19+
<% end %>
20+
end

0 commit comments

Comments
 (0)