Skip to content

Commit 07b7219

Browse files
authored
Auto-format .sql files using github.com/sql-formatter-org/sql-formatter - difference-of-squares (#148)
[no important files changed]
1 parent bbae7b7 commit 07b7219

File tree

5 files changed

+138
-64
lines changed

5 files changed

+138
-64
lines changed
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
UPDATE 'difference-of-squares'
2-
SET result = number * number * (number + 1) * (number + 1) / 4
3-
WHERE property = 'squareOfSum';
2+
SET
3+
result = number * number * (number + 1) * (number + 1) / 4
4+
WHERE
5+
property = 'squareOfSum';
46

57
UPDATE 'difference-of-squares'
6-
SET result = number * (number + 1) * (2 * number + 1) / 6
7-
WHERE property = 'sumOfSquares';
8+
SET
9+
result = number * (number + 1) * (2 * number + 1) / 6
10+
WHERE
11+
property = 'sumOfSquares';
812

913
UPDATE 'difference-of-squares'
10-
SET result = number * (number + 1) * (3 * number + 2) * (number - 1) / 12
11-
WHERE property = 'differenceOfSquares';
14+
SET
15+
result = number * (number + 1) * (3 * number + 2) * (number - 1) / 12
16+
WHERE
17+
property = 'differenceOfSquares';
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
DROP TABLE IF EXISTS "difference-of-squares";
2-
CREATE TABLE "difference-of-squares" (
3-
"number" INT,
4-
"property" TEXT,
5-
"result" INT
6-
);
72

8-
-- Note: the CSV file may contain literal tab, newline, carriage returns.
3+
CREATE TABLE "difference-of-squares" ("number" INT, "property" TEXT, "result" INT);
94

5+
-- Note: the CSV file may contain literal tab, newline, carriage returns.
106
.mode csv
117
.import ./data.csv difference-of-squares
Lines changed: 79 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,89 @@
11
-- Setup test table and read in student solution:
22
.read ./test_setup.sql
3-
43
-- Test cases:
54
-- Note: the strings below _may_ contain literal tab, newline, or carriage returns.
6-
7-
INSERT INTO tests (name, uuid,
8-
number, property, expected)
9-
VALUES
10-
('square of sum 1', 'e46c542b-31fc-4506-bcae-6b62b3268537',
11-
1, 'squareOfSum', 1),
12-
('square of sum 5', '9b3f96cb-638d-41ee-99b7-b4f9c0622948',
13-
5, 'squareOfSum', 225),
14-
('square of sum 100', '54ba043f-3c35-4d43-86ff-3a41625d5e86',
15-
100, 'squareOfSum', 25502500),
16-
('sum of squares 1', '01d84507-b03e-4238-9395-dd61d03074b5',
17-
1, 'sumOfSquares', 1),
18-
('sum of squares 5', 'c93900cd-8cc2-4ca4-917b-dd3027023499',
19-
5, 'sumOfSquares', 55),
20-
('sum of squares 100', '94807386-73e4-4d9e-8dec-69eb135b19e4',
21-
100, 'sumOfSquares', 338350),
22-
('difference of squares 1', '44f72ae6-31a7-437f-858d-2c0837adabb6',
23-
1, 'differenceOfSquares', 0),
24-
('difference of squares 5', '005cb2bf-a0c8-46f3-ae25-924029f8b00b',
25-
5, 'differenceOfSquares', 170),
26-
('difference of squares 100', 'b1bf19de-9a16-41c0-a62b-1f02ecc0b036',
27-
100, 'differenceOfSquares', 25164150);
5+
INSERT INTO
6+
tests (name, uuid, number, property, expected)
7+
VALUES
8+
(
9+
'square of sum 1',
10+
'e46c542b-31fc-4506-bcae-6b62b3268537',
11+
1,
12+
'squareOfSum',
13+
1
14+
),
15+
(
16+
'square of sum 5',
17+
'9b3f96cb-638d-41ee-99b7-b4f9c0622948',
18+
5,
19+
'squareOfSum',
20+
225
21+
),
22+
(
23+
'square of sum 100',
24+
'54ba043f-3c35-4d43-86ff-3a41625d5e86',
25+
100,
26+
'squareOfSum',
27+
25502500
28+
),
29+
(
30+
'sum of squares 1',
31+
'01d84507-b03e-4238-9395-dd61d03074b5',
32+
1,
33+
'sumOfSquares',
34+
1
35+
),
36+
(
37+
'sum of squares 5',
38+
'c93900cd-8cc2-4ca4-917b-dd3027023499',
39+
5,
40+
'sumOfSquares',
41+
55
42+
),
43+
(
44+
'sum of squares 100',
45+
'94807386-73e4-4d9e-8dec-69eb135b19e4',
46+
100,
47+
'sumOfSquares',
48+
338350
49+
),
50+
(
51+
'difference of squares 1',
52+
'44f72ae6-31a7-437f-858d-2c0837adabb6',
53+
1,
54+
'differenceOfSquares',
55+
0
56+
),
57+
(
58+
'difference of squares 5',
59+
'005cb2bf-a0c8-46f3-ae25-924029f8b00b',
60+
5,
61+
'differenceOfSquares',
62+
170
63+
),
64+
(
65+
'difference of squares 100',
66+
'b1bf19de-9a16-41c0-a62b-1f02ecc0b036',
67+
100,
68+
'differenceOfSquares',
69+
25164150
70+
);
2871

2972
-- Comparison of user input and the tests updates the status for each test:
3073
UPDATE tests
31-
SET status = 'pass'
32-
FROM (SELECT number, property, result FROM 'difference-of-squares') AS actual
33-
WHERE (actual.number, actual.property, actual.result) = (tests.number, tests.property, tests.expected);
74+
SET
75+
status = 'pass'
76+
FROM
77+
(
78+
SELECT
79+
number,
80+
property,
81+
result
82+
FROM
83+
'difference-of-squares'
84+
) AS actual
85+
WHERE
86+
(actual.number, actual.property, actual.result) = (tests.number, tests.property, tests.expected);
3487

3588
-- Write results and debug info:
3689
.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.number
5-
|| ' is <' || COALESCE(actual.result, 'NULL')
6-
|| '> but should be <' || tests.expected || '>'
7-
)
8-
FROM (SELECT number, property, result FROM 'difference-of-squares') AS actual
9-
WHERE (actual.number, actual.property) = (tests.number, tests.property) AND tests.status = 'fail';
3+
SET
4+
message = (
5+
'Result for ' || tests.number || ' is <' || COALESCE(actual.result, 'NULL') || '> but should be <' || tests.expected || '>'
6+
)
7+
FROM
8+
(
9+
SELECT
10+
number,
11+
property,
12+
result
13+
FROM
14+
'difference-of-squares'
15+
) AS actual
16+
WHERE
17+
(actual.number, actual.property) = (tests.number, tests.property)
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 ./difference-of-squares.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-
number INT NOT NULL,
24-
property 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+
number INT NOT NULL,
23+
property TEXT NOT NULL,
24+
expected TEXT NOT NULL
2625
);

0 commit comments

Comments
 (0)