diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/typ/compiler/raw.typ | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/tests/typ/compiler/raw.typ b/tests/typ/compiler/raw.typ new file mode 100644 index 00000000..3084146d --- /dev/null +++ b/tests/typ/compiler/raw.typ @@ -0,0 +1,170 @@ +// Test new raw parser +// Ref: false + +--- +#let empty = ( + name: "empty", + input: ``, + text: "", +) + +#let backtick = ( + name: "backtick", + input: ``` ` ```, + text: "`", + block: false, +) + +#let lang-backtick = ( + name: "lang-backtick", + input: ```js ` ```, + lang: "js", + text: "`", + block: false, +) + +// The language tag stops on space +#let lang-space = ( + name: "lang-space", + input: ```js test ```, + lang: "js", + text: "test ", + block: false, +) + +// The language tag stops on newline +#let lang-newline = ( + name: "lang-newline", + input: ```js +test +```, + lang: "js", + text: "test", + block: true, +) + +// The first line and the last line are ignored +#let blocky = ( + name: "blocky", + input: { +``` +test +``` +}, + text: "test", + block: true, +) + +// A blocky raw should handle dedents +#let blocky-dedent = ( + name: "blocky-dedent", + input: { +``` + test + ``` + }, + text: "test", + block: true, +) + +// When there is content in the first line, it should exactly eat a whitespace char. +#let blocky-dedent-firstline = ( + name: "blocky-dedent-firstline", + input: ``` test + ```, + text: "test", + block: true, +) + +// When there is content in the first line, it should exactly eat a whitespace char. +#let blocky-dedent-firstline2 = ( + name: "blocky-dedent-firstline2", + input: ``` test +```, + text: "test", + block: true, +) + +// The first line is not affected by dedent, and the middle lines don't consider the whitespace prefix of the first line. +#let blocky-dedent-firstline3 = ( + name: "blocky-dedent-firstline3", + input: ``` test + test2 + ```, + text: "test\n test2", + block: true, +) + +// The first line is not affected by dedent, and the middle lines don't consider the whitespace prefix of the first line. +#let blocky-dedent-firstline4 = ( + name: "blocky-dedent-firstline4", + input: ``` test + test2 + ```, + text: " test\ntest2", + block: true, +) + +#let blocky-dedent-lastline = ( + name: "blocky-dedent-lastline", + input: ``` + test + ```, + text: " test", + block: true, +) + +#let blocky-dedent-lastline2 = ( + name: "blocky-dedent-lastline2", + input: ``` + test + ```, + text: "test", + block: true, +) + +#let blocky-tab = ( + name: "blocky-tab", + input: { +``` + test +``` +}, + text: "\ttest", + block: true, +) + +#let blocky-tab-dedent = ( + name: "blocky-tab-dedent", + input: { +``` + test + + ``` +}, + text: "test\n ", + block: true, +) + +#let cases = ( + empty, + backtick, + lang-backtick, + lang-space, + lang-newline, + blocky, + blocky-dedent, + blocky-dedent-firstline, + blocky-dedent-firstline2, + blocky-dedent-firstline3, + blocky-dedent-lastline, + blocky-dedent-lastline2, + blocky-tab, + blocky-tab-dedent, +) + +#for c in cases { + assert.eq(c.text, c.input.text, message: "in point " + c.name + ", expect " + repr(c.text) + ", got " + repr(c.input.text) + "") + let block = c.at("block", default: false) + assert.eq(block, c.input.block, message: "in point " + c.name + ", expect " + repr(block) + ", got " + repr(c.input.block) + "") +} |
