Skip to content

Commit

Permalink
fix: fix day 24 compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
Totto16 committed Dec 27, 2024
1 parent 7b22228 commit 39e5ae6
Show file tree
Hide file tree
Showing 3 changed files with 129 additions and 29 deletions.
140 changes: 111 additions & 29 deletions src/24/test_tests.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Expect, Equal } from "type-testing"
import type { Expect, Equal, IsAny, IsNever, NotEqual } from "type-testing"

import type {
Between,
Expand Down Expand Up @@ -42,6 +42,30 @@ type is_parser_tests_7 = Expect<Equal<IsParser<DigitParser>, true>>

type is_parser_tests_8 = Expect<Equal<IsParser<IntParser>, true>>

type is_parser_tests_9 = Expect<Equal<IsParser<JSONNullParser>, true>>

type is_parser_tests_10 = Expect<Equal<IsParser<JSONBooleanParser>, true>>

type is_parser_tests_11 = Expect<Equal<IsParser<JSONNumberParser>, true>>

type is_parser_tests_12 = Expect<Equal<IsParser<JSONArrayParser>, true>>

type is_parser_tests_12_a = Expect<NotEqual<IsNever<JSONArrayParser>, true>>

type is_parser_tests_12_b = Expect<NotEqual<IsAny<JSONArrayParser>, true>>

type is_parser_tests_13 = Expect<Equal<IsParser<JSONObjectParser>, true>>

type is_parser_tests_13_a = Expect<NotEqual<IsNever<JSONObjectParser>, true>>

type is_parser_tests_13_b = Expect<NotEqual<IsAny<JSONObjectParser>, true>>

type is_parser_tests_14 = Expect<Equal<IsParser<JSONStringParser>, true>>

type is_parser_tests_15 = Expect<Equal<IsParser<JSONValueParser>, true>>

type is_parser_tests_16 = Expect<Equal<IsParser<JSONParser>, true>>

// individual JSON parser tests. based on day 22

type nu_check_0 = Expect<
Expand Down Expand Up @@ -173,67 +197,125 @@ type s_check_5 = Expect<
>

type a_check_0 = Expect<
Equal<Parse<JSONArrayParser, "[]__">, { data: []; rest: "__" }>
>
// not really valid, but just to check, that a , is stripped away at any time
type a_check_1 = Expect<
Equal<Parse<JSONArrayParser, "[,]__">, { data: []; rest: "__" }>
Equal<Parse<JSONArrayParser, "[]__">, ParserSuccessResult<[], "__">>
>

type z3 = Parse<JSONArrayParser, "[,]__">
type a_result_1 = Parse<JSONArrayParser, "[,]__">
type a_check_1 = Expect<Equal<a_result_1["success"], false>>
type a_check_2 = Expect<
Equal<Parse<JSONArrayParser, "[ ]__">, { data: []; rest: "__" }>
Equal<Parse<JSONArrayParser, "[ ]__">, ParserSuccessResult<[], "__">>
>
type a_check_3 = Expect<
Equal<Parse<JSONArrayParser, "[1,2]__">, { data: [1, 2]; rest: "__" }>
Equal<Parse<JSONArrayParser, "[1,2]__">, ParserSuccessResult<[1, 2], "__">>
>
type a_check_4 = Expect<
Equal<Parse<JSONArrayParser, "[[1,2]]__">, { data: [[1, 2]]; rest: "__" }>
>
type a_check_5 = Expect<
Equal<
Parse<JSONArrayParser, "garbage">,
{ code: 10; error: "Not a valid array" }
Parse<JSONArrayParser, "[[1,2]]__">,
ParserSuccessResult<[[1, 2]], "__">
>
>
type a_check_6 = Expect<
Equal<Parse<JSONArrayParser, "[">, { code: 11; error: "Not a valid array" }>
>

type a_result_5 = Parse<JSONArrayParser, "garbage">

type a_check_5 = Expect<Equal<a_result_5["success"], false>>

type a_result_6 = Parse<JSONArrayParser, "[">
type a_check_6 = Expect<Equal<a_result_6["success"], false>>

type o_check_0 = Expect<
Equal<Parse<JSONObjectParser, "{}__">, { data: {}; rest: "__" }>
Equal<Parse<JSONObjectParser, "{}__">, ParserSuccessResult<{}, "__">>
>
type o_check_1 = Expect<
Equal<
Parse<JSONObjectParser, "garbage">,
{ code: 13; error: "Not a valid object" }
ParserErrorResult<{
message: "Left didn't match, first parser didn't match"
result: ParserErrorResult<{
message: "Right didn't match, first parser didn't match"
result: ParserErrorResult<{
message: "Left didn't match, first parser didn't match"
result: ParserErrorResult<{
message: "Seq didn't match, parser didn't match"
result: ParserErrorResult<"Just didn't match, case 2">
acc: []
}>
index: 1
}>
index: 1
}>
index: 1
}>
>
>
type o_check_2 = Expect<
Equal<
Parse<JSONObjectParser, '{"1", }__'>,
{ code: 14; error: "Not a valid object" }
>
>
type o_check_3 = Expect<
Equal<
Parse<JSONObjectParser, '{"1":2, }__'>,
{ data: { "1": 2 }; rest: "__" }
ParserErrorResult<{
message: "Left didn't match, second parser didn't match"
result: [
ParserSuccessResult<Omit<{}, never>, '"1", }__'>,
ParserErrorResult<{
message: "Left didn't match, first parser didn't match"
result: ParserErrorResult<{
message: "Seq didn't match, parser didn't match"
result: ParserErrorResult<"Just didn't match, case 2">
acc: []
}>
index: 1
}>
]
index: 2
}>
>
>

type o_result_3 = Parse<JSONObjectParser, '{"1":2, }__'>
type o_check_3 = Expect<Equal<o_result_3["success"], false>>
type o_check_4 = Expect<
Equal<
Parse<JSONObjectParser, "{1:2, }__">,
{ data: { 1: 2 }; rest: "__" }
ParserErrorResult<{
message: "Left didn't match, second parser didn't match"
result: [
ParserSuccessResult<Omit<{}, never>, "1:2, }__">,
ParserErrorResult<{
message: "Left didn't match, first parser didn't match"
result: ParserErrorResult<{
message: "Seq didn't match, parser didn't match"
result: ParserErrorResult<"Just didn't match, case 2">
acc: []
}>
index: 1
}>
]
index: 2
}>
>
>
type z = Parse<
Parse<
Pair,
[Parse<Left, [Padded<JSONStringParser>, Sym<":">]>, JSONValueParser]
>,
'"1": 2'
>
type o_check_5 = Expect<
Equal<
Parse<JSONObjectParser, '{"1":2, "3312":[1] }__'>,
{ data: { "1": 2; "3312": [1] }; rest: "__" }
Parse<JSONObjectParser, '{"1":2 }__'>,
ParserSuccessResult<{ "1": 2 }, "__">
>
>
type z2 = Parse<JSONObjectParser, '{"1": 2, "3312": 1}__'>
type o_check_6 = Expect<
Equal<
Parse<JSONObjectParser, '{"1":2, "3312":[1] }__'>,
ParserSuccessResult<{ "1": 2; "3312": [1] }, "__">
>
>
type o_check_7 = Expect<
Equal<
Parse<JSONObjectParser, '{"1":2, "3312":{"a":"b", "c":null} }__'>,
{ data: { "1": 2; "3312": { a: "b"; c: null } }; rest: "__" }
ParserSuccessResult<{ "1": 2; "3312": { a: "b"; c: null } }, "__">
>
>
18 changes: 18 additions & 0 deletions src/24/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"verbatimModuleSyntax": true,
"noEmit": true,
"paths": {
"*": [
"./*"
]
}
},
"include": [
"user.d.ts",
"tests.ts",
"test_tests.ts",
"personal_tests.ts"
]
}
File renamed without changes.

0 comments on commit 39e5ae6

Please sign in to comment.