summaryrefslogtreecommitdiff
path: root/scalatex/api/src/test/scala/scalatex/ParserTests.scala
diff options
context:
space:
mode:
Diffstat (limited to 'scalatex/api/src/test/scala/scalatex/ParserTests.scala')
-rw-r--r--scalatex/api/src/test/scala/scalatex/ParserTests.scala424
1 files changed, 0 insertions, 424 deletions
diff --git a/scalatex/api/src/test/scala/scalatex/ParserTests.scala b/scalatex/api/src/test/scala/scalatex/ParserTests.scala
deleted file mode 100644
index 9a4ee63..0000000
--- a/scalatex/api/src/test/scala/scalatex/ParserTests.scala
+++ /dev/null
@@ -1,424 +0,0 @@
-package scalatex
-
-
-import org.parboiled2._
-import scalaParser.ScalaSyntax
-
-import scalatex.stages.{Trim, Parser, Ast}
-import scalatex.stages.Ast.Block.{IfElse, For, Text}
-import Ast.Chain.Args
-
-object ParserTests extends utest.TestSuite{
- import Ast._
- import utest._
- def check[T](input: String, parse: Parser => scala.util.Try[T], expected: T) = {
- val parsed = parse(new Parser(input)).get
- assert(parsed == expected)
- }
- def tests = TestSuite{
- 'Trim{
- def wrap(s: String) = "|" + s + "|"
- * - {
- val trimmed = wrap(stages.Trim.old("""
- i am cow
- hear me moo
- i weigh twice as much as you
- """))
- val expected = wrap("""
- |i am cow
- | hear me moo
- | i weigh twice as much as you
- |""".stripMargin)
- assert(trimmed == expected)
-
- }
- * - {
- val trimmed = wrap(stages.Trim.old(
- """
- @{"lol" * 3}
- @{
- val omg = "omg"
- omg * 2
- }
- """
- ))
- val expected = wrap(
- """
- |@{"lol" * 3}
- |@{
- | val omg = "omg"
- | omg * 2
- |}
- |""".stripMargin
- )
- assert(trimmed == expected)
- }
- 'dropTrailingWhitespace - {
-
- val trimmed = wrap(stages.Trim.old(
- Seq(
- " i am a cow ",
- " hear me moo ",
- " i weigh twice as much as you"
- ).mkString("\n")
- ))
- val expected = wrap(
- Seq(
- "i am a cow",
- " hear me moo",
- " i weigh twice as much as you"
- ).mkString("\n")
- )
- assert(trimmed == expected)
- }
- }
- 'Text {
- * - check("i am a cow", _.Text.run(), Block.Text("i am a cow"))
- * - check("i am a @cow", _.Text.run(), Block.Text("i am a "))
- * - check("i am a @@cow", _.Text.run(), Block.Text("i am a @cow"))
- * - check("i am a @@@cow", _.Text.run(), Block.Text("i am a @"))
- * - check("i am a @@@@cow", _.Text.run(), Block.Text("i am a @@cow"))
-
- }
- 'Code{
- 'identifier - check("@gggg ", _.Code.run(), "gggg")
- 'parens - check("@(1 + 1)lolsss\n", _.Code.run(), "(1 + 1)")
- 'curlies - check("@{{1} + (1)} ", _.Code.run(), "{{1} + (1)}")
- 'blocks - check("@{val x = 1; 1} ", _.Code.run(), "{val x = 1; 1}")
- 'weirdBackticks - check("@{`{}}{()@`}\n", _.Code.run(), "{`{}}{()@`}")
- }
- 'MiscCode{
- 'imports{
- * - check("@import math.abs", _.Header.run(), "import math.abs")
- * - check("@import math.{abs, sin}", _.Header.run(), "import math.{abs, sin}")
- }
- 'headerblocks{
- check(
- """@import math.abs
- |@import math.sin
- |
- |hello world
- |""".stripMargin,
- _.HeaderBlock.run(),
- Ast.Header(
- "import math.abs\nimport math.sin",
- Ast.Block(
- Seq(Text("\n", 33), Text("\n", 34), Text("hello world", 35), Text("\n", 46)),
- 33
- )
- )
- )
- }
- 'caseclass{
- check(
- """@case class Foo(i: Int, s: String)
- """.stripMargin,
- _.Header.run(),
- "case class Foo(i: Int, s: String)"
- )
- }
-
- }
- 'Block{
- * - check("{i am a cow}", _.BraceBlock.run(), Block(Seq(Block.Text("i am a cow", 1)), 1))
- * - check("{i @am a @cow}", _.BraceBlock.run(),
- Block(Seq(
- Block.Text("i ", 1),
- Chain("am",Seq(), 3),
- Block.Text(" a ", 6),
- Chain("cow",Seq(), 9)
- ), 1)
- )
- }
- 'Chain{
- * - check("@omg.bbq[omg].fff[fff](123) ", _.ScalaChain.run(),
- Chain("omg",Seq(
- Chain.Prop("bbq", 4),
- Chain.TypeArgs("[omg]", 8),
- Chain.Prop("fff", 13),
- Chain.TypeArgs("[fff]", 17),
- Chain.Args("(123)", 22)
- ))
- )
- * - check("@omg{bbq}.cow(moo){a @b}\n", _.ScalaChain.run(),
- Chain("omg",Seq(
- Block(Seq(Text("bbq", 5)), 5),
- Chain.Prop("cow", 9),
- Chain.Args("(moo)", 13),
- Block(Seq(Text("a ", 19), Chain("b", Nil, 21)), 19)
- ))
- )
- }
- 'ControlFlow{
- 'for {
- 'for - check(
- "@for(x <- 0 until 3){lol}",
- _.ForLoop.run(),
- For("for(x <- 0 until 3)", Block(Seq(Text("lol", 21)), 21))
- )
- 'forBlock - check(
- """
- |@for(x <- 0 until 3)
- | lol""".stripMargin,
- _.Body.run(),
- Block(Seq(
- Text("\n"),
- For(
- "for(x <- 0 until 3)",
- Block(Seq(Text("\n ", 21), Text("lol", 24)), 21),
- 1
- )
- ))
- )
- 'forBlockBraces - check(
- """
- |@for(x <- 0 until 3){
- | lol
- |}""".stripMargin,
- _.Body.run(),
- Block(Seq(
- Text("\n"),
- For(
- "for(x <- 0 until 3)",
- Block(Seq(Text("\n ", 22), Text("lol", 25), Text("\n", 28)), 22),
- 1
- )
- ))
- )
- }
- 'ifElse {
- 'if - check(
- "@if(true){lol}",
- _.IfElse.run(),
- IfElse("if(true)", Block(Seq(Text("lol", 10)), 10), None)
- )
- 'ifElse - check(
- "@if(true){lol}else{ omg }",
- _.IfElse.run(),
- IfElse("if(true)", Block(Seq(Text("lol", 10)), 10), Some(Block(Seq(Text(" omg ", 19)), 19)))
- )
- 'ifBlock - check(
- """
- |@if(true)
- | omg""".stripMargin,
- _.IfElse.run(),
- IfElse("if(true)", Block(Seq(Text("\n ", 10), Text("omg", 13)), 10), None, 1)
- )
- 'ifBlockElseBlock - check(
- """
- |@if(true)
- | omg
- |@else
- | wtf""".stripMargin,
- _.IfElse.run(),
- IfElse(
- "if(true)",
- Block(Seq(Text("\n ", 10), Text("omg", 13)), 10),
- Some(Block(Seq(Text("\n ", 22), Text("wtf", 25)), 22)),
- 1
- )
- )
- 'ifBlockElseBraceBlock - check(
- """@if(true){
- | omg
- |}else{
- | wtf
- |}""".stripMargin,
- _.IfElse.run(),
- IfElse(
- "if(true)",
- Block(Seq(Text("\n ", 10), Text("omg", 13), Text("\n", 16)), 10),
- Some(Block(Seq(Text("\n ", 23), Text("wtf", 26), Text("\n", 29)), 23)),
- 0
- )
- )
- 'ifBlockElseBraceBlockNested - {
- val res = Parser(Trim.old(
- """
- @p
- @if(true){
- Hello
- }else{
- lols
- }
- """))
- val expected =
- Block(Vector(
- Text("\n"),
- Chain("p",Vector(Block(Vector(
- Text("\n ", 3),
- IfElse("if(true)",
- Block(Vector(
- Text("\n ", 16), Text("Hello", 21), Text("\n ", 26)
- ), 16),
- Some(Block(Vector(
- Text("\n ", 35), Text("lols", 40), Text("\n ", 44)
- ), 35)),
- 6
- )), 3)), 1),
- Text("\n", 48)
- ))
- assert(res == expected)
- }
- 'ifElseBlock - check(
- """@if(true){
- | omg
- |}else
- | wtf""".stripMargin,
- _.IfElse.run(),
- IfElse(
- "if(true)",
- Block(Seq(Text("\n ", 10), Text("omg", 13), Text("\n", 16)), 10),
- Some(Block(Seq(Text("\n ", 22), Text("wtf", 25)), 22))
- )
- )
- }
-
- }
- 'Body{
- 'indents - check(
- """
- |@omg
- | @wtf
- | @bbq
- | @lol""".stripMargin,
- _.Body.run(),
- Block(Seq(
- Text("\n"),
- Chain("omg",Seq(Block(Seq(
- Text("\n ", 5),
- Chain("wtf",Seq(Block(Seq(
- Text("\n ", 7),
- Chain("bbq",Seq(Block(Seq(
- Text("\n ", 9),
- Chain("lol",Seq(), 16)
- ), 9)), 12)
- ), 7)), 8)
- ), 5)), 1)
- ))
- )
- 'dedents - check(
- """
- |@omg
- | @wtf
- |@bbq""".stripMargin,
- _.Body.run(),
- Block(Seq(
- Text("\n"),
- Chain("omg",Seq(Block(
- Seq(
- Text("\n ", 5),
- Chain("wtf",Seq(), 8)
- ),
- 5
- )), 1),
- Text("\n", 12),
- Chain("bbq", Seq(), 13)
- ))
- )
- 'braces - check(
- """
- |@omg{
- | @wtf
- |}
- |@bbq""".stripMargin,
- _.Body.run(),
- Block(Seq(
- Text("\n"),
- Chain("omg",Seq(Block(
- Seq(
- Text("\n ", 6),
- Chain("wtf",Seq(), 9),
- Text("\n", 13)
- ),
- 6
- )), 1),
- Text("\n", 15),
- Chain("bbq", Seq(), 16)
- ))
- )
- 'dedentText - check(
- """
- |@omg("lol", 1, 2)
- | @wtf
- |bbq""".stripMargin,
- _.Body.run(),
- Block(Seq(
- Text("\n"),
- Chain("omg",Seq(
- Args("""("lol", 1, 2)""", 5),
- Block(Seq(
- Text("\n ", 18),
- Chain("wtf",Seq(), 21)
- ), 18)
- ), 1),
- Text("\n", 25),
- Text("bbq", 26)
- ))
- )
- * - check(
- """
- |@omg("lol",
- |1,
- | 2
- | )
- | wtf
- |bbq""".stripMargin,
- _.Body.run(),
- Block(Seq(
- Text("\n", 0),
- Chain("omg",Seq(
- Args("(\"lol\",\n1,\n 2\n )", 5),
- Block(Seq(
- Text("\n ", 30), Text("wtf", 33)
- ), 30)
- ), 1),
- Text("\n", 36),
- Text("bbq", 37)
- ), 0)
- )
- 'codeBlock - check(
- """@{
- | val omg = "omg"
- | omg * 2
- |}""".stripMargin,
- _.Code.run(),
- """{
- | val omg = "omg"
- | omg * 2
- |}""".stripMargin
- )
- 'codeBlocks - check(
- """
- |@{"lol" * 3}
- |@{
- | val omg = "omg"
- | omg * 2
- |}""".stripMargin,
- _.Body.run(),
- Block(Seq(
- Text("\n"),
- Chain("{\"lol\" * 3}", Seq(), 1),
- Text("\n", 13),
- Chain("""{
- | val omg = "omg"
- | omg * 2
- |}""".stripMargin,
- Seq(),
- 14
- )
- ))
- )
- }
-// 'Test{
-// check(
-// "@{() => ()}",
-// _.Code.run(),
-// ""
-// )
-// }
- }
-}
-
-
-