-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparse_test.ts
69 lines (63 loc) · 1.42 KB
/
parse_test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { parseAcceptRanges } from "./parse.ts";
import type { AcceptRanges } from "./types.ts";
import {
assertEquals,
assertIsError,
assertThrows,
describe,
it,
} from "./_dev_deps.ts";
describe("parseAcceptRanges", () => {
it("should throw error if the input is invalid Accept-Ranges", () => {
const table: string[] = [
"",
" ",
" , ",
" ,",
",",
",,,",
", , ,",
"あ",
"a, あ",
`""`,
`","`,
`"a,b"`,
];
table.forEach((input) => {
assertThrows(() => parseAcceptRanges(input));
});
});
it("should return accept ranges if the input is valid", () => {
const table: [string, AcceptRanges][] = [
["abc", ["abc"]],
[" abc ", ["abc"]],
["abc, def", ["abc", "def"]],
["bytes,none", ["bytes", "none"]],
["bytes, ,,none", ["bytes", "none"]],
];
table.forEach(([input, expected]) => {
assertEquals(parseAcceptRanges(input), expected);
});
});
it("should be error message if the accept ranges is invalid", () => {
const table: string[] = [
"",
"a, あ, b",
`""`,
];
table.forEach((input) => {
let err;
try {
parseAcceptRanges(input);
} catch (e) {
err = e;
} finally {
assertIsError(
err,
SyntaxError,
`invalid <Accept-Ranges> syntax. "${input}"`,
);
}
});
});
});