Skip to content

Commit 309f183

Browse files
authored
Auto-format .sql files using github.com/sql-formatter-org/sql-formatter - kindergarten-garden (#158)
[no important files changed]
1 parent e81c8a3 commit 309f183

File tree

5 files changed

+202
-83
lines changed

5 files changed

+202
-83
lines changed
Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
UPDATE "kindergarten-garden"
2-
SET result = (
3-
WITH plants(p) AS (
4-
VALUES (1), (2), (1 + instr(diagram, char(10))), (2 + instr(diagram, char(10)))
5-
)
6-
SELECT group_concat(
2+
SET
3+
result = (
4+
WITH
5+
plants (p) AS (
6+
VALUES
7+
(1),
8+
(2),
9+
(1 + instr(diagram, char(10))),
10+
(2 + instr(diagram, char(10)))
11+
)
12+
SELECT
13+
group_concat(
714
CASE SUBSTR(diagram, (unicode(student) - 65) * 2 + p, 1)
8-
WHEN 'G' THEN 'grass'
9-
WHEN 'V' THEN 'violets'
10-
WHEN 'C' THEN 'clover'
11-
WHEN 'R' THEN 'radishes'
15+
WHEN 'G' THEN 'grass'
16+
WHEN 'V' THEN 'violets'
17+
WHEN 'C' THEN 'clover'
18+
WHEN 'R' THEN 'radishes'
1219
END
13-
) FROM plants
14-
);
20+
)
21+
FROM
22+
plants
23+
);
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
DROP TABLE IF EXISTS "kindergarten-garden";
2-
CREATE TABLE "kindergarten-garden" (
3-
"diagram" TEXT,
4-
"student" TEXT,
5-
"result" TEXT
6-
);
2+
3+
CREATE TABLE "kindergarten-garden" ("diagram" TEXT, "student" TEXT, "result" TEXT);
74

85
.mode csv
96
.import ./data.csv kindergarten-garden
Lines changed: 135 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,144 @@
11
-- Setup test table and read in student solution:
22
.read ./test_setup.sql
3-
43
-- Test cases:
5-
INSERT INTO tests (name, uuid,
6-
diagram, student, expected)
7-
VALUES
8-
('garden with single student', '1fc316ed-17ab-4fba-88ef-3ae78296b692',
9-
'RC' || char(10) || 'GG', 'Alice', 'radishes,clover,grass,grass'),
10-
('different garden with single student', 'acd19dc1-2200-4317-bc2a-08f021276b40',
11-
'VC' || char(10) || 'RC', 'Alice', 'violets,clover,radishes,clover'),
12-
('garden with two students', 'c376fcc8-349c-446c-94b0-903947315757',
13-
'VVCG' || char(10) || 'VVRC', 'Bob', 'clover,grass,radishes,clover'),
14-
('second student''s garden', '2d620f45-9617-4924-9d27-751c80d17db9',
15-
'VVCCGG' || char(10) || 'VVCCGG', 'Bob', 'clover,clover,clover,clover'),
16-
('third student''s garden', '57712331-4896-4364-89f8-576421d69c44',
17-
'VVCCGG' || char(10) || 'VVCCGG', 'Charlie', 'grass,grass,grass,grass'),
18-
('for Alice, first student''s garden', '149b4290-58e1-40f2-8ae4-8b87c46e765b',
19-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Alice', 'violets,radishes,violets,radishes'),
20-
('for Bob, second student''s garden', 'ba25dbbc-10bd-4a37-b18e-f89ecd098a5e',
21-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Bob', 'clover,grass,clover,clover'),
22-
('for Charlie', '566b621b-f18e-4c5f-873e-be30544b838c',
23-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Charlie', 'violets,violets,clover,grass'),
24-
('for David', '3ad3df57-dd98-46fc-9269-1877abf612aa',
25-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'David', 'radishes,violets,clover,radishes'),
26-
('for Eve', '0f0a55d1-9710-46ed-a0eb-399ba8c72db2',
27-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Eve', 'clover,grass,radishes,grass'),
28-
('for Fred', 'a7e80c90-b140-4ea1-aee3-f4625365c9a4',
29-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Fred', 'grass,clover,violets,clover'),
30-
('for Ginny', '9d94b273-2933-471b-86e8-dba68694c615',
31-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Ginny', 'clover,grass,grass,clover'),
32-
('for Harriet', 'f55bc6c2-ade8-4844-87c4-87196f1b7258',
33-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Harriet', 'violets,radishes,radishes,violets'),
34-
('for Ileana', '759070a3-1bb1-4dd4-be2c-7cce1d7679ae',
35-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Ileana', 'grass,clover,violets,clover'),
36-
('for Joseph', '78578123-2755-4d4a-9c7d-e985b8dda1c6',
37-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Joseph', 'violets,clover,violets,grass'),
38-
('for Kincaid, second to last student''s garden', '6bb66df7-f433-41ab-aec2-3ead6e99f65b',
39-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Kincaid', 'grass,clover,clover,grass'),
40-
('for Larry, last student''s garden', 'd7edec11-6488-418a-94e6-ed509e0fa7eb',
41-
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV', 'Larry', 'grass,violets,clover,violets');
4+
INSERT INTO
5+
tests (name, uuid, diagram, student, expected)
6+
VALUES
7+
(
8+
'garden with single student',
9+
'1fc316ed-17ab-4fba-88ef-3ae78296b692',
10+
'RC' || char(10) || 'GG',
11+
'Alice',
12+
'radishes,clover,grass,grass'
13+
),
14+
(
15+
'different garden with single student',
16+
'acd19dc1-2200-4317-bc2a-08f021276b40',
17+
'VC' || char(10) || 'RC',
18+
'Alice',
19+
'violets,clover,radishes,clover'
20+
),
21+
(
22+
'garden with two students',
23+
'c376fcc8-349c-446c-94b0-903947315757',
24+
'VVCG' || char(10) || 'VVRC',
25+
'Bob',
26+
'clover,grass,radishes,clover'
27+
),
28+
(
29+
'second student''s garden',
30+
'2d620f45-9617-4924-9d27-751c80d17db9',
31+
'VVCCGG' || char(10) || 'VVCCGG',
32+
'Bob',
33+
'clover,clover,clover,clover'
34+
),
35+
(
36+
'third student''s garden',
37+
'57712331-4896-4364-89f8-576421d69c44',
38+
'VVCCGG' || char(10) || 'VVCCGG',
39+
'Charlie',
40+
'grass,grass,grass,grass'
41+
),
42+
(
43+
'for Alice, first student''s garden',
44+
'149b4290-58e1-40f2-8ae4-8b87c46e765b',
45+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
46+
'Alice',
47+
'violets,radishes,violets,radishes'
48+
),
49+
(
50+
'for Bob, second student''s garden',
51+
'ba25dbbc-10bd-4a37-b18e-f89ecd098a5e',
52+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
53+
'Bob',
54+
'clover,grass,clover,clover'
55+
),
56+
(
57+
'for Charlie',
58+
'566b621b-f18e-4c5f-873e-be30544b838c',
59+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
60+
'Charlie',
61+
'violets,violets,clover,grass'
62+
),
63+
(
64+
'for David',
65+
'3ad3df57-dd98-46fc-9269-1877abf612aa',
66+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
67+
'David',
68+
'radishes,violets,clover,radishes'
69+
),
70+
(
71+
'for Eve',
72+
'0f0a55d1-9710-46ed-a0eb-399ba8c72db2',
73+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
74+
'Eve',
75+
'clover,grass,radishes,grass'
76+
),
77+
(
78+
'for Fred',
79+
'a7e80c90-b140-4ea1-aee3-f4625365c9a4',
80+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
81+
'Fred',
82+
'grass,clover,violets,clover'
83+
),
84+
(
85+
'for Ginny',
86+
'9d94b273-2933-471b-86e8-dba68694c615',
87+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
88+
'Ginny',
89+
'clover,grass,grass,clover'
90+
),
91+
(
92+
'for Harriet',
93+
'f55bc6c2-ade8-4844-87c4-87196f1b7258',
94+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
95+
'Harriet',
96+
'violets,radishes,radishes,violets'
97+
),
98+
(
99+
'for Ileana',
100+
'759070a3-1bb1-4dd4-be2c-7cce1d7679ae',
101+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
102+
'Ileana',
103+
'grass,clover,violets,clover'
104+
),
105+
(
106+
'for Joseph',
107+
'78578123-2755-4d4a-9c7d-e985b8dda1c6',
108+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
109+
'Joseph',
110+
'violets,clover,violets,grass'
111+
),
112+
(
113+
'for Kincaid, second to last student''s garden',
114+
'6bb66df7-f433-41ab-aec2-3ead6e99f65b',
115+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
116+
'Kincaid',
117+
'grass,clover,clover,grass'
118+
),
119+
(
120+
'for Larry, last student''s garden',
121+
'd7edec11-6488-418a-94e6-ed509e0fa7eb',
122+
'VRCGVVRVCGGCCGVRGCVCGCGV' || char(10) || 'VRCCCGCRRGVCGCRVVCVGCGCV',
123+
'Larry',
124+
'grass,violets,clover,violets'
125+
);
42126

43127
-- Comparison of user input and the tests updates the status for each test:
44128
UPDATE tests
45-
SET status = 'pass'
46-
FROM (SELECT diagram, student, result FROM "kindergarten-garden") AS actual
47-
WHERE (actual.diagram, actual.student, actual.result) = (tests.diagram, tests.student, tests.expected);
129+
SET
130+
status = 'pass'
131+
FROM
132+
(
133+
SELECT
134+
diagram,
135+
student,
136+
result
137+
FROM
138+
"kindergarten-garden"
139+
) AS actual
140+
WHERE
141+
(actual.diagram, actual.student, actual.result) = (tests.diagram, tests.student, tests.expected);
48142

49143
-- Write results and debug info:
50144
.read ./test_reporter.sql
Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,40 @@
11
-- Update message for failed tests to give helpful information:
22
UPDATE tests
3-
SET message = (
4-
'Result for "' || tests.diagram || '" and "' || tests.student || '"'
5-
|| ' is <' || COALESCE(actual.result, 'NULL')
6-
|| '> but should be <' || tests.expected || '>'
7-
)
8-
FROM (SELECT diagram, student, result FROM 'kindergarten-garden') AS actual
9-
WHERE (actual.diagram, actual.student) = (tests.diagram, tests.student) AND tests.status = 'fail';
3+
SET
4+
message = (
5+
'Result for "' || tests.diagram || '" and "' || tests.student || '"' || ' is <' || COALESCE(actual.result, 'NULL') || '> but should be <' || tests.expected || '>'
6+
)
7+
FROM
8+
(
9+
SELECT
10+
diagram,
11+
student,
12+
result
13+
FROM
14+
'kindergarten-garden'
15+
) AS actual
16+
WHERE
17+
(actual.diagram, actual.student) = (tests.diagram, tests.student)
18+
AND tests.status = 'fail';
1019

1120
-- Save results to ./output.json (needed by the online test-runner)
1221
.mode json
1322
.once './output.json'
14-
SELECT name, status, message, output, test_code, task_id
15-
FROM tests;
23+
SELECT
24+
name,
25+
status,
26+
message,
27+
output,
28+
test_code,
29+
task_id
30+
FROM
31+
tests;
1632

1733
-- Display test results in readable form for the student:
1834
.mode table
19-
SELECT name, status, message
20-
FROM tests;
35+
SELECT
36+
name,
37+
status,
38+
message
39+
FROM
40+
tests;
Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
-- Create database:
22
.read ./create_fixture.sql
3-
43
-- Read user student solution and save any output as markdown in user_output.md:
54
.mode markdown
65
.output user_output.md
76
.read ./kindergarten-garden.sql
87
.output
9-
108
-- Create a clean testing environment:
119
DROP TABLE IF EXISTS tests;
10+
1211
CREATE TABLE IF NOT EXISTS tests (
13-
-- uuid and name (description) are taken from the test.toml file
14-
uuid TEXT PRIMARY KEY,
15-
name TEXT NOT NULL,
16-
-- The following section is needed by the online test-runner
17-
status TEXT DEFAULT 'fail',
18-
message TEXT,
19-
output TEXT,
20-
test_code TEXT,
21-
task_id INTEGER DEFAULT NULL,
22-
-- Here are columns for the actual tests
23-
diagram TEXT NOT NULL,
24-
student TEXT NOT NULL,
25-
expected TEXT NOT NULL
12+
-- uuid and name (description) are taken from the test.toml file
13+
uuid TEXT PRIMARY KEY,
14+
name TEXT NOT NULL,
15+
-- The following section is needed by the online test-runner
16+
status TEXT DEFAULT 'fail',
17+
message TEXT,
18+
output TEXT,
19+
test_code TEXT,
20+
task_id INTEGER DEFAULT NULL,
21+
-- Here are columns for the actual tests
22+
diagram TEXT NOT NULL,
23+
student TEXT NOT NULL,
24+
expected TEXT NOT NULL
2625
);

0 commit comments

Comments
 (0)