Skip to content

Commit b18fbe9

Browse files
authored
Add test generators for clock collatz-conjecture crypto-square (#246)
1 parent f98ea41 commit b18fbe9

7 files changed

Lines changed: 139 additions & 60 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
DROP TABLE IF EXISTS tests;
2+
3+
CREATE TABLE IF NOT EXISTS tests (
4+
-- uuid and description are taken from the test.toml file
5+
uuid TEXT PRIMARY KEY,
6+
description TEXT NOT NULL,
7+
-- The following section is needed by the online test-runner
8+
status TEXT DEFAULT 'fail',
9+
message TEXT,
10+
output TEXT,
11+
test_code TEXT,
12+
task_id INTEGER DEFAULT NULL,
13+
-- Here are columns for the actual tests
14+
property TEXT NOT NULL,
15+
input TEXT NOT NULL, -- json object
16+
expected TEXT NOT NULL
17+
);
18+
19+
INSERT INTO
20+
tests (uuid, description, property, input, expected)
21+
VALUES
22+
{%- for case in cases %}
23+
(
24+
'{{ case["uuid"] }}',
25+
'{{ case["description"] }}',
26+
'{{ case["property"] }}',
27+
'{{ case["input"] | tojson }}',
28+
{%- if case["expected"] in ["true", "false"] %}
29+
{{ case["expected"] }}
30+
{%- else %}
31+
'{{ case["expected"] }}'
32+
{%- endif %}
33+
{%- if loop.last %}
34+
);
35+
{%- else %}
36+
),
37+
{%- endif %}
38+
{%- endfor %}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{%- for case in cases -%}
2+
{{ [case["property"], case["input"] | tojson] | tocsv }},""
3+
{% endfor %}

exercises/practice/clock/data.csv

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,52 @@
1-
"create","{""hour"":8,""minute"":0}",
2-
"create","{""hour"":11,""minute"":9}",
3-
"create","{""hour"":24,""minute"":0}",
4-
"create","{""hour"":25,""minute"":0}",
5-
"create","{""hour"":100,""minute"":0}",
6-
"create","{""hour"":1,""minute"":60}",
7-
"create","{""hour"":0,""minute"":160}",
8-
"create","{""hour"":0,""minute"":1723}",
9-
"create","{""hour"":25,""minute"":160}",
10-
"create","{""hour"":201,""minute"":3001}",
11-
"create","{""hour"":72,""minute"":8640}",
12-
"create","{""hour"":-1,""minute"":15}",
13-
"create","{""hour"":-25,""minute"":0}",
14-
"create","{""hour"":-91,""minute"":0}",
15-
"create","{""hour"":1,""minute"":-40}",
16-
"create","{""hour"":1,""minute"":-160}",
17-
"create","{""hour"":1,""minute"":-4820}",
18-
"create","{""hour"":2,""minute"":-60}",
19-
"create","{""hour"":-25,""minute"":-160}",
20-
"create","{""hour"":-121,""minute"":-5810}",
21-
"add","{""hour"":10,""minute"":0,""value"":3}",
22-
"add","{""hour"":6,""minute"":41,""value"":0}",
23-
"add","{""hour"":0,""minute"":45,""value"":40}",
24-
"add","{""hour"":10,""minute"":0,""value"":61}",
25-
"add","{""hour"":0,""minute"":45,""value"":160}",
26-
"add","{""hour"":23,""minute"":59,""value"":2}",
27-
"add","{""hour"":5,""minute"":32,""value"":1500}",
28-
"add","{""hour"":1,""minute"":1,""value"":3500}",
29-
"subtract","{""hour"":10,""minute"":3,""value"":3}",
30-
"subtract","{""hour"":10,""minute"":3,""value"":30}",
31-
"subtract","{""hour"":10,""minute"":3,""value"":70}",
32-
"subtract","{""hour"":0,""minute"":3,""value"":4}",
33-
"subtract","{""hour"":0,""minute"":0,""value"":160}",
34-
"subtract","{""hour"":6,""minute"":15,""value"":160}",
35-
"subtract","{""hour"":5,""minute"":32,""value"":1500}",
36-
"subtract","{""hour"":2,""minute"":20,""value"":3000}",
37-
"equal","{""clock1"":{""hour"":15,""minute"":37},""clock2"":{""hour"":15,""minute"":37}}",
38-
"equal","{""clock1"":{""hour"":15,""minute"":36},""clock2"":{""hour"":15,""minute"":37}}",
39-
"equal","{""clock1"":{""hour"":14,""minute"":37},""clock2"":{""hour"":15,""minute"":37}}",
40-
"equal","{""clock1"":{""hour"":10,""minute"":37},""clock2"":{""hour"":34,""minute"":37}}",
41-
"equal","{""clock1"":{""hour"":3,""minute"":11},""clock2"":{""hour"":99,""minute"":11}}",
42-
"equal","{""clock1"":{""hour"":22,""minute"":40},""clock2"":{""hour"":-2,""minute"":40}}",
43-
"equal","{""clock1"":{""hour"":17,""minute"":3},""clock2"":{""hour"":-31,""minute"":3}}",
44-
"equal","{""clock1"":{""hour"":13,""minute"":49},""clock2"":{""hour"":-83,""minute"":49}}",
45-
"equal","{""clock1"":{""hour"":0,""minute"":1},""clock2"":{""hour"":0,""minute"":1441}}",
46-
"equal","{""clock1"":{""hour"":2,""minute"":2},""clock2"":{""hour"":2,""minute"":4322}}",
47-
"equal","{""clock1"":{""hour"":2,""minute"":40},""clock2"":{""hour"":3,""minute"":-20}}",
48-
"equal","{""clock1"":{""hour"":4,""minute"":10},""clock2"":{""hour"":5,""minute"":-1490}}",
49-
"equal","{""clock1"":{""hour"":6,""minute"":15},""clock2"":{""hour"":6,""minute"":-4305}}",
50-
"equal","{""clock1"":{""hour"":7,""minute"":32},""clock2"":{""hour"":-12,""minute"":-268}}",
51-
"equal","{""clock1"":{""hour"":18,""minute"":7},""clock2"":{""hour"":-54,""minute"":-11513}}",
52-
"equal","{""clock1"":{""hour"":24,""minute"":0},""clock2"":{""hour"":0,""minute"":0}}",
1+
"create","{""hour"":8,""minute"":0}",""
2+
"create","{""hour"":11,""minute"":9}",""
3+
"create","{""hour"":24,""minute"":0}",""
4+
"create","{""hour"":25,""minute"":0}",""
5+
"create","{""hour"":100,""minute"":0}",""
6+
"create","{""hour"":1,""minute"":60}",""
7+
"create","{""hour"":0,""minute"":160}",""
8+
"create","{""hour"":0,""minute"":1723}",""
9+
"create","{""hour"":25,""minute"":160}",""
10+
"create","{""hour"":201,""minute"":3001}",""
11+
"create","{""hour"":72,""minute"":8640}",""
12+
"create","{""hour"":-1,""minute"":15}",""
13+
"create","{""hour"":-25,""minute"":0}",""
14+
"create","{""hour"":-91,""minute"":0}",""
15+
"create","{""hour"":1,""minute"":-40}",""
16+
"create","{""hour"":1,""minute"":-160}",""
17+
"create","{""hour"":1,""minute"":-4820}",""
18+
"create","{""hour"":2,""minute"":-60}",""
19+
"create","{""hour"":-25,""minute"":-160}",""
20+
"create","{""hour"":-121,""minute"":-5810}",""
21+
"add","{""hour"":10,""minute"":0,""value"":3}",""
22+
"add","{""hour"":6,""minute"":41,""value"":0}",""
23+
"add","{""hour"":0,""minute"":45,""value"":40}",""
24+
"add","{""hour"":10,""minute"":0,""value"":61}",""
25+
"add","{""hour"":0,""minute"":45,""value"":160}",""
26+
"add","{""hour"":23,""minute"":59,""value"":2}",""
27+
"add","{""hour"":5,""minute"":32,""value"":1500}",""
28+
"add","{""hour"":1,""minute"":1,""value"":3500}",""
29+
"subtract","{""hour"":10,""minute"":3,""value"":3}",""
30+
"subtract","{""hour"":10,""minute"":3,""value"":30}",""
31+
"subtract","{""hour"":10,""minute"":3,""value"":70}",""
32+
"subtract","{""hour"":0,""minute"":3,""value"":4}",""
33+
"subtract","{""hour"":0,""minute"":0,""value"":160}",""
34+
"subtract","{""hour"":6,""minute"":15,""value"":160}",""
35+
"subtract","{""hour"":5,""minute"":32,""value"":1500}",""
36+
"subtract","{""hour"":2,""minute"":20,""value"":3000}",""
37+
"equal","{""clock1"":{""hour"":15,""minute"":37},""clock2"":{""hour"":15,""minute"":37}}",""
38+
"equal","{""clock1"":{""hour"":15,""minute"":36},""clock2"":{""hour"":15,""minute"":37}}",""
39+
"equal","{""clock1"":{""hour"":14,""minute"":37},""clock2"":{""hour"":15,""minute"":37}}",""
40+
"equal","{""clock1"":{""hour"":10,""minute"":37},""clock2"":{""hour"":34,""minute"":37}}",""
41+
"equal","{""clock1"":{""hour"":3,""minute"":11},""clock2"":{""hour"":99,""minute"":11}}",""
42+
"equal","{""clock1"":{""hour"":22,""minute"":40},""clock2"":{""hour"":-2,""minute"":40}}",""
43+
"equal","{""clock1"":{""hour"":17,""minute"":3},""clock2"":{""hour"":-31,""minute"":3}}",""
44+
"equal","{""clock1"":{""hour"":13,""minute"":49},""clock2"":{""hour"":-83,""minute"":49}}",""
45+
"equal","{""clock1"":{""hour"":0,""minute"":1},""clock2"":{""hour"":0,""minute"":1441}}",""
46+
"equal","{""clock1"":{""hour"":2,""minute"":2},""clock2"":{""hour"":2,""minute"":4322}}",""
47+
"equal","{""clock1"":{""hour"":2,""minute"":40},""clock2"":{""hour"":3,""minute"":-20}}",""
48+
"equal","{""clock1"":{""hour"":4,""minute"":10},""clock2"":{""hour"":5,""minute"":-1490}}",""
49+
"equal","{""clock1"":{""hour"":6,""minute"":15},""clock2"":{""hour"":6,""minute"":-4305}}",""
50+
"equal","{""clock1"":{""hour"":7,""minute"":32},""clock2"":{""hour"":-12,""minute"":-268}}",""
51+
"equal","{""clock1"":{""hour"":18,""minute"":7},""clock2"":{""hour"":-54,""minute"":-11513}}",""
52+
"equal","{""clock1"":{""hour"":24,""minute"":0},""clock2"":{""hour"":0,""minute"":0}}",""
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{%- for case in cases -%}
2+
{{ [case["input"]["number"]] | tocsv }},""
3+
{% endfor %}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
DROP TABLE IF EXISTS tests;
2+
3+
CREATE TABLE IF NOT EXISTS tests (
4+
-- uuid and description are taken from the test.toml file
5+
uuid TEXT PRIMARY KEY,
6+
description TEXT NOT NULL,
7+
-- The following section is needed by the online test-runner
8+
status TEXT DEFAULT 'fail',
9+
message TEXT,
10+
output TEXT,
11+
test_code TEXT,
12+
task_id INTEGER DEFAULT NULL,
13+
-- Here are columns for the actual tests
14+
plaintext TEXT NOT NULL,
15+
expected TEXT NOT NULL
16+
);
17+
18+
INSERT INTO
19+
tests (uuid, description, plaintext, expected)
20+
VALUES
21+
{%- for case in cases %}
22+
(
23+
'{{ case["uuid"] }}',
24+
'{{ case["description"] }}',
25+
'{{ case["input"]["plaintext"] }}',
26+
'{{ case["expected"] }}'
27+
{%- if loop.last %}
28+
);
29+
{%- else %}
30+
),
31+
{%- endif %}
32+
{%- endfor %}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{%- for case in cases -%}
2+
{{ [case["input"]["plaintext"]] | tocsv }},""
3+
{% endfor %}
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
"",
2-
"... --- ...",
3-
"A",
4-
" b ",
5-
"@1,%!",
6-
"This is fun!",
7-
"Chill out.",
8-
"If man was meant to stay on the ground, god would have given us roots.",
1+
"",""
2+
"... --- ...",""
3+
"A",""
4+
" b ",""
5+
"@1,%!",""
6+
"This is fun!",""
7+
"Chill out.",""
8+
"If man was meant to stay on the ground, god would have given us roots.",""

0 commit comments

Comments
 (0)