Skip to content

Commit 4656993

Browse files
authored
Add templates for exercises batch 5 (#1785)
1 parent 80cf594 commit 4656993

File tree

13 files changed

+344
-206
lines changed

13 files changed

+344
-206
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
require 'minitest/autorun'
2+
require_relative 'grade_school'
3+
4+
class GradeSchoolTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
school = School.new
9+
<%- if cases["property"] == "roster" -%>
10+
<%- cases["input"]["students"].each do |student| -%>
11+
school.add('<%= student[0] %>', <%= student[1] %>)
12+
<%- end -%>
13+
assert_equal <%= cases["expected"] %>, school.roster
14+
<%- elsif cases["property"] == "add" -%>
15+
results = []
16+
<%- cases["input"]["students"].each do |student| -%>
17+
results << school.add('<%= student[0] %>', <%= student[1] %>)
18+
<%- end -%>
19+
assert_equal <%= cases["expected"] %>, results
20+
<%- elsif cases["property"] == "grade" -%>
21+
<%- cases["input"]["students"].each do |student| -%>
22+
school.add('<%= student[0] %>', <%= student[1] %>)
23+
<%- end -%>
24+
assert_equal <%= cases["expected"] %>, school.grade(<%= cases["input"]["desiredGrade"] %>)
25+
<%- end -%>
26+
end
27+
<% end %>
28+
end

exercises/practice/grade-school/grade_school_test.rb

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -5,185 +5,185 @@ class GradeSchoolTest < Minitest::Test
55
def test_roster_is_empty_when_no_student_is_added
66
# skip
77
school = School.new
8-
assert_empty [], school.roster
8+
assert_empty school.roster
99
end
1010

1111
def test_add_a_student
1212
skip
1313
school = School.new
1414
results = []
15-
results << school.add("Aimee", 2)
15+
results << school.add('Aimee', 2)
1616
assert_equal [true], results
1717
end
1818

1919
def test_student_is_added_to_the_roster
2020
skip
2121
school = School.new
22-
school.add("Aimee", 2)
22+
school.add('Aimee', 2)
2323
assert_equal ["Aimee"], school.roster
2424
end
2525

2626
def test_adding_multiple_students_in_the_same_grade_in_the_roster
2727
skip
2828
school = School.new
2929
results = []
30-
results << school.add("Blair", 2)
31-
results << school.add("James", 2)
32-
results << school.add("Paul", 2)
30+
results << school.add('Blair', 2)
31+
results << school.add('James', 2)
32+
results << school.add('Paul', 2)
3333
assert_equal [true, true, true], results
3434
end
3535

3636
def test_multiple_students_in_the_same_grade_are_added_to_the_roster
3737
skip
3838
school = School.new
39-
school.add("Blair", 2)
40-
school.add("James", 2)
41-
school.add("Paul", 2)
39+
school.add('Blair', 2)
40+
school.add('James', 2)
41+
school.add('Paul', 2)
4242
assert_equal %w[Blair James Paul], school.roster
4343
end
4444

4545
def test_cannot_add_student_to_same_grade_in_the_roster_more_than_once
4646
skip
4747
school = School.new
4848
results = []
49-
results << school.add("Blair", 2)
50-
results << school.add("James", 2)
51-
results << school.add("James", 2)
52-
results << school.add("Paul", 2)
49+
results << school.add('Blair', 2)
50+
results << school.add('James', 2)
51+
results << school.add('James', 2)
52+
results << school.add('Paul', 2)
5353
assert_equal [true, true, false, true], results
5454
end
5555

5656
def test_student_not_added_to_same_grade_in_the_roster_more_than_once
5757
skip
5858
school = School.new
59-
school.add("Blair", 2)
60-
school.add("James", 2)
61-
school.add("James", 2)
62-
school.add("Paul", 2)
59+
school.add('Blair', 2)
60+
school.add('James', 2)
61+
school.add('James', 2)
62+
school.add('Paul', 2)
6363
assert_equal %w[Blair James Paul], school.roster
6464
end
6565

6666
def test_adding_students_in_multiple_grades
6767
skip
6868
school = School.new
6969
results = []
70-
results << school.add("Chelsea", 3)
71-
results << school.add("Logan", 7)
70+
results << school.add('Chelsea', 3)
71+
results << school.add('Logan', 7)
7272
assert_equal [true, true], results
7373
end
7474

7575
def test_students_in_multiple_grades_are_added_to_the_roster
7676
skip
7777
school = School.new
78-
school.add("Chelsea", 3)
79-
school.add("Logan", 7)
78+
school.add('Chelsea', 3)
79+
school.add('Logan', 7)
8080
assert_equal %w[Chelsea Logan], school.roster
8181
end
8282

8383
def test_cannot_add_same_student_to_multiple_grades_in_the_roster
8484
skip
8585
school = School.new
8686
results = []
87-
results << school.add("Blair", 2)
88-
results << school.add("James", 2)
89-
results << school.add("James", 3)
90-
results << school.add("Paul", 3)
87+
results << school.add('Blair', 2)
88+
results << school.add('James', 2)
89+
results << school.add('James', 3)
90+
results << school.add('Paul', 3)
9191
assert_equal [true, true, false, true], results
9292
end
9393

9494
def test_student_not_added_to_multiple_grades_in_the_roster
9595
skip
9696
school = School.new
97-
school.add("Blair", 2)
98-
school.add("James", 2)
99-
school.add("James", 3)
100-
school.add("Paul", 3)
97+
school.add('Blair', 2)
98+
school.add('James', 2)
99+
school.add('James', 3)
100+
school.add('Paul', 3)
101101
assert_equal %w[Blair James Paul], school.roster
102102
end
103103

104104
def test_students_are_sorted_by_grades_in_the_roster
105105
skip
106106
school = School.new
107-
school.add("Jim", 3)
108-
school.add("Peter", 2)
109-
school.add("Anna", 1)
107+
school.add('Jim', 3)
108+
school.add('Peter', 2)
109+
school.add('Anna', 1)
110110
assert_equal %w[Anna Peter Jim], school.roster
111111
end
112112

113113
def test_students_are_sorted_by_name_in_the_roster
114114
skip
115115
school = School.new
116-
school.add("Peter", 2)
117-
school.add("Zoe", 2)
118-
school.add("Alex", 2)
116+
school.add('Peter', 2)
117+
school.add('Zoe', 2)
118+
school.add('Alex', 2)
119119
assert_equal %w[Alex Peter Zoe], school.roster
120120
end
121121

122122
def test_students_are_sorted_by_grades_and_then_by_name_in_the_roster
123123
skip
124124
school = School.new
125-
school.add("Peter", 2)
126-
school.add("Anna", 1)
127-
school.add("Barb", 1)
128-
school.add("Zoe", 2)
129-
school.add("Alex", 2)
130-
school.add("Jim", 3)
131-
school.add("Charlie", 1)
125+
school.add('Peter', 2)
126+
school.add('Anna', 1)
127+
school.add('Barb', 1)
128+
school.add('Zoe', 2)
129+
school.add('Alex', 2)
130+
school.add('Jim', 3)
131+
school.add('Charlie', 1)
132132
assert_equal %w[Anna Barb Charlie Alex Peter Zoe Jim], school.roster
133133
end
134134

135135
def test_grade_is_empty_if_no_students_in_the_roster
136136
skip
137137
school = School.new
138-
assert_empty [], school.grade(1)
138+
assert_empty school.grade(1)
139139
end
140140

141141
def test_grade_is_empty_if_no_students_in_that_grade
142142
skip
143143
school = School.new
144-
school.add("Peter", 2)
145-
school.add("Zoe", 2)
146-
school.add("Alex", 2)
147-
school.add("Jim", 3)
144+
school.add('Peter', 2)
145+
school.add('Zoe', 2)
146+
school.add('Alex', 2)
147+
school.add('Jim', 3)
148148
assert_empty school.grade(1)
149149
end
150150

151151
def test_student_not_added_to_same_grade_more_than_once
152152
skip
153153
school = School.new
154-
school.add("Blair", 2)
155-
school.add("James", 2)
156-
school.add("James", 2)
157-
school.add("Paul", 2)
154+
school.add('Blair', 2)
155+
school.add('James', 2)
156+
school.add('James', 2)
157+
school.add('Paul', 2)
158158
assert_equal %w[Blair James Paul], school.grade(2)
159159
end
160160

161161
def test_student_not_added_to_multiple_grades
162162
skip
163163
school = School.new
164-
school.add("Blair", 2)
165-
school.add("James", 2)
166-
school.add("James", 3)
167-
school.add("Paul", 3)
164+
school.add('Blair', 2)
165+
school.add('James', 2)
166+
school.add('James', 3)
167+
school.add('Paul', 3)
168168
assert_equal %w[Blair James], school.grade(2)
169169
end
170170

171171
def test_student_not_added_to_other_grade_for_multiple_grades
172172
skip
173173
school = School.new
174-
school.add("Blair", 2)
175-
school.add("James", 2)
176-
school.add("James", 3)
177-
school.add("Paul", 3)
174+
school.add('Blair', 2)
175+
school.add('James', 2)
176+
school.add('James', 3)
177+
school.add('Paul', 3)
178178
assert_equal ["Paul"], school.grade(3)
179179
end
180180

181181
def test_students_are_sorted_by_name_in_a_grade
182182
skip
183183
school = School.new
184-
school.add("Franklin", 5)
185-
school.add("Bradley", 5)
186-
school.add("Jeff", 1)
184+
school.add('Franklin', 5)
185+
school.add('Bradley', 5)
186+
school.add('Jeff', 1)
187187
assert_equal %w[Bradley Franklin], school.grade(5)
188188
end
189189
end
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
require 'minitest/autorun'
2+
require_relative 'hamming'
3+
4+
class HammingTest < 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+
Hamming.compute('<%= cases["input"]["strand1"] %>', '<%= cases["input"]["strand2"] %>')
11+
end
12+
<%- else -%>
13+
assert_equal <%= cases["expected"] %>, Hamming.compute('<%= cases["input"]["strand1"] %>', '<%= cases["input"]["strand2"] %>')
14+
<%- end -%>
15+
end
16+
<% end %>
17+
end

exercises/practice/hamming/hamming_test.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,54 +4,54 @@
44
class HammingTest < Minitest::Test
55
def test_empty_strands
66
# skip
7-
assert_equal 0, Hamming.compute("", "")
7+
assert_equal 0, Hamming.compute('', '')
88
end
99

1010
def test_single_letter_identical_strands
1111
skip
12-
assert_equal 0, Hamming.compute("A", "A")
12+
assert_equal 0, Hamming.compute('A', 'A')
1313
end
1414

1515
def test_single_letter_different_strands
1616
skip
17-
assert_equal 1, Hamming.compute("G", "T")
17+
assert_equal 1, Hamming.compute('G', 'T')
1818
end
1919

2020
def test_long_identical_strands
2121
skip
22-
assert_equal 0, Hamming.compute("GGACTGAAATCTG", "GGACTGAAATCTG")
22+
assert_equal 0, Hamming.compute('GGACTGAAATCTG', 'GGACTGAAATCTG')
2323
end
2424

2525
def test_long_different_strands
2626
skip
27-
assert_equal 9, Hamming.compute("GGACGGATTCTG", "AGGACGGATTCT")
27+
assert_equal 9, Hamming.compute('GGACGGATTCTG', 'AGGACGGATTCT')
2828
end
2929

3030
def test_disallow_first_strand_longer
3131
skip
3232
assert_raises(ArgumentError) do
33-
Hamming.compute("AATG", "AAA")
33+
Hamming.compute('AATG', 'AAA')
3434
end
3535
end
3636

3737
def test_disallow_second_strand_longer
3838
skip
3939
assert_raises(ArgumentError) do
40-
Hamming.compute("ATA", "AGTG")
40+
Hamming.compute('ATA', 'AGTG')
4141
end
4242
end
4343

4444
def test_disallow_empty_first_strand
4545
skip
4646
assert_raises(ArgumentError) do
47-
Hamming.compute("", "G")
47+
Hamming.compute('', 'G')
4848
end
4949
end
5050

5151
def test_disallow_empty_second_strand
5252
skip
5353
assert_raises(ArgumentError) do
54-
Hamming.compute("G", "")
54+
Hamming.compute('G', '')
5555
end
5656
end
5757
end

exercises/practice/house/.meta/example.rb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
class House
2-
def self.recite
3-
new.recite
2+
def self.recite(start_verse, end_verse)
3+
new.recite(start_verse, end_verse)
44
end
55

6-
def recite
7-
(1..pieces.length).map { |i| line(i) }.join("\n")
6+
def recite(start_verse, end_verse)
7+
(start_verse..end_verse).map { |i| line(i) }.join
88
end
99

1010
def line(i)
11-
"This is %s.\n" % pieces.last(i).map { |s| s.join("\n") }.join(' ')
11+
"This is %s.\n" % pieces.last(i).join(' ')
1212
end
1313

1414
private
15-
1615
def pieces
1716
[
1817
['the horse and the hound and the horn', 'that belonged to'],
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
require 'minitest/autorun'
2+
require_relative 'house'
3+
4+
class HouseTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
expected = <<~RHYME
9+
<%= cases["expected"].join("\n") %>
10+
RHYME
11+
assert_equal expected, House.recite(<%= cases["input"]["startVerse"] %>, <%= cases["input"]["endVerse"] %>)
12+
end
13+
<% end %>
14+
end

0 commit comments

Comments
 (0)