From 6dded9d975adf779ed3c95cdf8e457d25f481884 Mon Sep 17 00:00:00 2001 From: reidspencer Date: Sat, 11 May 2024 16:56:29 -0400 Subject: [PATCH] WIP: start to cover NonWhiteSpaceParsers --- .../parsing/NoWhiteSpaceParsers.scala | 4 --- .../language/parsing/CommonParserTest.scala | 17 +++++++++++- .../language/parsing/StatementsTest.scala | 27 +++++++++++++++++++ 3 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 language/src/test/scala/com/ossuminc/riddl/language/parsing/StatementsTest.scala diff --git a/language/src/main/scala/com/ossuminc/riddl/language/parsing/NoWhiteSpaceParsers.scala b/language/src/main/scala/com/ossuminc/riddl/language/parsing/NoWhiteSpaceParsers.scala index 25cb7b28a..c53b4860b 100644 --- a/language/src/main/scala/com/ossuminc/riddl/language/parsing/NoWhiteSpaceParsers.scala +++ b/language/src/main/scala/com/ossuminc/riddl/language/parsing/NoWhiteSpaceParsers.scala @@ -87,10 +87,6 @@ private[parsing] trait NoWhiteSpaceParsers extends ParsingContext { private val backslash: String = "\\" private final val zero: String = "0" - private def octalChar[u: P]: P[String] = CharIn("0-7").! - private def octalString[u: P]: P[String] = { - P(backslash ~ zero ~ octalChar.rep(min = 1, sep = P(""), max = 3).!) - } private def hexDigit[u: P]: P[String] = CharIn("0-9a-fA-F").!./ private def hexEscape[u: P]: P[String] = P(backslash ~ "x" ~ hexDigit.rep(min = 2)).!./ diff --git a/language/src/test/scala/com/ossuminc/riddl/language/parsing/CommonParserTest.scala b/language/src/test/scala/com/ossuminc/riddl/language/parsing/CommonParserTest.scala index 04017f7b2..8397db463 100644 --- a/language/src/test/scala/com/ossuminc/riddl/language/parsing/CommonParserTest.scala +++ b/language/src/test/scala/com/ossuminc/riddl/language/parsing/CommonParserTest.scala @@ -8,16 +8,31 @@ package com.ossuminc.riddl.language.parsing import com.ossuminc.riddl.language.AST.* import com.ossuminc.riddl.language.At +import scala.concurrent.ExecutionContext.Implicits.global + /** Unit Tests For CommonParser */ class CommonParserTest extends ParsingTest { - "CommonParserTest" should { + "NonWhiteSpaceParsers" should { + "handle a literalString" in { + val text = """"This is a literal string with" """ + + val input = RiddlParserInput(text, "test") + val testParser = TestParser(input) + testParser.expect[LiteralString](testParser.literalString(_)) match + case Left(messages) => fail(messages.justErrors.format) + case Right(ls) => ls.s must be(s""""$text"""") + } + } + + "CommonParser" should { "location should construct from pair" in { val loc = At((1, 1)) loc.line mustBe 1 val column = loc.col column mustBe 1 } + "descriptions can be URLs" in { val input = """domain foo is { ??? } described at |https://www.wordnik.com/words/phi""".stripMargin diff --git a/language/src/test/scala/com/ossuminc/riddl/language/parsing/StatementsTest.scala b/language/src/test/scala/com/ossuminc/riddl/language/parsing/StatementsTest.scala new file mode 100644 index 000000000..f38063c41 --- /dev/null +++ b/language/src/test/scala/com/ossuminc/riddl/language/parsing/StatementsTest.scala @@ -0,0 +1,27 @@ +package com.ossuminc.riddl.language.parsing + +import org.scalatest.matchers.must.Matchers + +class StatementsTest extends ParsingTest with Matchers{ + + "Statements" must { + "include Code Statement" in { + val input = + """domain CodeStatements is { + | context CodeStatements is { + | handler h is { + | on initialization { + | ```scala + | val foo: Int = 1 + | ``` + | } + | } + | } + |}""".stripMargin + TopLevelParser.parseString(input, origin = Some("Code Statement Test")) match + case Left(value) => ??? + case Right(root) => ??? + + } + } +}