aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-26 19:26:18 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-26 19:26:18 -0600
commit16a2a08c20f902057788d05b8149af7244eec55d (patch)
treef02847073026667a474b6ab31dbe04c849392f44
parent7b25814f502dd1b54d53a3c9738d63e4f65380f5 (diff)
downloadscala-test-more-16a2a08c20f902057788d05b8149af7244eec55d.tar.gz
scala-test-more-16a2a08c20f902057788d05b8149af7244eec55d.zip
simplify
-rw-r--r--src/main/scala/org/perl8/test/tap/Consumer.scala147
1 files changed, 53 insertions, 94 deletions
diff --git a/src/main/scala/org/perl8/test/tap/Consumer.scala b/src/main/scala/org/perl8/test/tap/Consumer.scala
index 37ab12b..fefa078 100644
--- a/src/main/scala/org/perl8/test/tap/Consumer.scala
+++ b/src/main/scala/org/perl8/test/tap/Consumer.scala
@@ -59,128 +59,87 @@ class Consumer (cb: TAPEvent => Unit) {
}
private def plan: Parser[Plan] =
- planLine ^^ { line =>
- line.plan
- }
+ planLine ^^ { _.plan }
private def result: Parser[TestResult] =
simpleResult | subtestResult
private def simpleResult: Parser[TestResult] =
- resultLine ^^ { line =>
- line.result
+ resultLine ^^ { _.result }
+
+ private def subtestResult: Parser[TestResult] =
+ subtest ~ simpleResult ^^ { case subtest ~ simpleResult =>
+ new TestResult(
+ simpleResult.passed,
+ simpleResult.number,
+ simpleResult.description,
+ simpleResult.directive,
+ Some(subtest)
+ )
}
- private def subtestResult: Parser[TestResult] = new Parser[TestResult] {
- def apply (in: Input) = {
- if (in.atEnd) {
- Failure("Subtest expected, but end of input found", in)
- }
- else {
- val firstLine = in.first
- if (firstLine.indent.length <= expectedIndent.length) {
- Failure(
- "Subtest expected, but '" + firstLine + "' is not indented",
- in
- )
- }
- else {
- parseSubtest(in)
- }
- }
+ private def subtest: Parser[TAPResult] = Parser { in =>
+ if (in.atEnd) {
+ Failure("Subtest expected, but end of input found", in)
}
-
- private def parseSubtest (in: Input) = {
+ else {
val oldIndent = expectedIndent
val newIndent = in.first.indent
- val subtestParseResult = try {
+ try {
expectedIndent = newIndent
tap(in)
}
finally {
expectedIndent = oldIndent
}
-
- subtestParseResult match {
- case Success(subtestResult, rest) => {
- simpleResult(rest) match {
- case Success(summaryResult, rest) => {
- val testResult = new TestResult(
- summaryResult.passed,
- summaryResult.number,
- summaryResult.description,
- summaryResult.directive,
- Some(subtestParseResult.get)
- )
- Success(testResult, rest)
- }
- case Failure(_, rest) => {
- Failure(
- "Subtest summary test result expected, but " +
- "'" + subtestParseResult.next.first + "' found",
- rest
- )
- }
- case e: Error => e
- }
- }
- case Failure(_, rest) => {
- Failure("Subtest expected, but '" + in.first + "' found", in)
- }
- case e: Error => e
- }
}
}
- private def planLine: Parser[PlanLine] = new Parser[PlanLine] {
- def apply (in: Input) = {
- if (in.atEnd) {
- Failure("Plan line expected, but end of input found", in)
+ private def planLine: Parser[PlanLine] = Parser { in =>
+ if (in.atEnd) {
+ Failure("Plan line expected, but end of input found", in)
+ }
+ else {
+ val line = in.first
+ if (line.indent == expectedIndent) {
+ line match {
+ case p: PlanLine =>
+ Success(p, in.rest)
+ case _ =>
+ Failure("Plan line expected, but '" + line + "' found", in)
+ }
}
else {
- val line = in.first
- if (line.indent == expectedIndent) {
- line match {
- case p: PlanLine =>
- Success(p, in.rest)
- case _ =>
- Failure("Plan line expected, but '" + line + "' found", in)
- }
- }
- else {
- Failure(
- "Plan line expected, but " +
- "'" + line + "' has incorrect indentation",
- in
- )
- }
+ Failure(
+ "Plan line expected, but " +
+ "'" + line + "' has incorrect indentation",
+ in
+ )
}
}
}
- private def resultLine: Parser[ResultLine] = new Parser[ResultLine] {
- def apply (in: Input) = {
- if (in.atEnd) {
- Failure("Result line expected, but end of input found", in)
+ private def resultLine: Parser[ResultLine] = Parser { in =>
+ if (in.atEnd) {
+ Failure("Result line expected, but end of input found", in)
+ }
+ else {
+ val line = in.first
+ if (line.indent == expectedIndent) {
+ line match {
+ case p: ResultLine =>
+ Success(p, in.rest)
+ case _ =>
+ Failure("Result line expected, but '" + line + "' found", in)
+ }
}
else {
- val line = in.first
- if (line.indent == expectedIndent) {
- line match {
- case p: ResultLine =>
- Success(p, in.rest)
- case _ =>
- Failure("Result line expected, but '" + line + "' found", in)
- }
- }
- else {
- Failure(
- "Result line expected, but " +
- "'" + line + "' has incorrect indentation",
- in
- )
- }
+ Failure(
+ "Result line expected, but " +
+ "'" + line + "' has incorrect indentation",
+ in
+ )
}
}
}