From 9865dab47611f273afca788e1bd1116007448a1f Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 28 Feb 2013 00:56:31 -0600 Subject: stop using Option[Plan] --- src/main/scala/org/perl8/test/TestMore.scala | 10 ++----- src/main/scala/org/perl8/test/package.scala | 31 ++++++++++++++-------- src/main/scala/org/perl8/test/tap/Consumer.scala | 2 +- .../scala/org/perl8/test/tap/TestBuilder.scala | 27 ++++++++++--------- .../scala/org/perl8/test/tap/TestBuilderTest.scala | 26 +++++++++--------- 5 files changed, 50 insertions(+), 46 deletions(-) diff --git a/src/main/scala/org/perl8/test/TestMore.scala b/src/main/scala/org/perl8/test/TestMore.scala index dc9c0ef..98962b0 100644 --- a/src/main/scala/org/perl8/test/TestMore.scala +++ b/src/main/scala/org/perl8/test/TestMore.scala @@ -4,10 +4,7 @@ import scala.util.matching.Regex import org.perl8.test.tap.TestBuilder -class TestMore (plan: Option[Plan] = None) extends Test with DelayedInit { - def this (plan: Plan) = - this(Some(plan)) - +class TestMore (plan: Plan = NoPlan) extends Test with DelayedInit { def delayedInit (body: => Unit) { testBody = { terminalInUse => todo = NoMessage @@ -113,12 +110,9 @@ class TestMore (plan: Option[Plan] = None) extends Test with DelayedInit { } } - def subtest (name: Message, plan: Plan)(body: => Unit): Boolean = - subtest(name, Some(plan))(body) - def subtest ( name: Message, - plan: Option[Plan] = None + plan: Plan = NoPlan )(body: => Unit): Boolean = { val oldBuilder = builder val success = try { diff --git a/src/main/scala/org/perl8/test/package.scala b/src/main/scala/org/perl8/test/package.scala index aa01f0e..2a39eb4 100644 --- a/src/main/scala/org/perl8/test/package.scala +++ b/src/main/scala/org/perl8/test/package.scala @@ -15,22 +15,31 @@ package object test { val message: Option[String] } - case class NumericPlan ( - override val plan: Int - ) extends Plan { - override val skipAll = false - override val message = None + case class NumericPlan (plan: Int) extends Plan { + val skipAll = false + val message = None } - case class SkipAll ( - override val message: Option[String] = None - ) extends Plan { - override val plan = 0 - override val skipAll = true + case object NoPlan extends Plan { + val plan = 0 + val skipAll = false + val message = None + } + + case class SkipAll (msg: String) extends Plan { + val plan = 0 + val skipAll = true + val message = Some(msg) + } + + case object SkipAllNoMessage extends Plan { + val plan = 0 + val skipAll = true + val message = None } object SkipAll { - def apply (reason: String) = new SkipAll(Some(reason)) + def apply () = SkipAllNoMessage } sealed trait Message diff --git a/src/main/scala/org/perl8/test/tap/Consumer.scala b/src/main/scala/org/perl8/test/tap/Consumer.scala index 49f642d..e9fd6d4 100644 --- a/src/main/scala/org/perl8/test/tap/Consumer.scala +++ b/src/main/scala/org/perl8/test/tap/Consumer.scala @@ -125,7 +125,7 @@ object Consumer { class TAPResult (val plan: Plan, val results: Seq[TestResult]) { val correctPlan = plan match { case NumericPlan(n) => results.length == n - case SkipAll(_) => results.length == 0 + case _ => results.length == 0 } val fails = results.count { r => diff --git a/src/main/scala/org/perl8/test/tap/TestBuilder.scala b/src/main/scala/org/perl8/test/tap/TestBuilder.scala index 26fb5d6..432f902 100644 --- a/src/main/scala/org/perl8/test/tap/TestBuilder.scala +++ b/src/main/scala/org/perl8/test/tap/TestBuilder.scala @@ -3,19 +3,19 @@ package org.perl8.test.tap import org.perl8.test._ class TestBuilder private ( - plan: Option[Plan], + plan: Plan, indent: String, terminalInUse: Boolean ) { - plan.foreach(p => outLine(Producer.plan(p))) + plan match { + case NoPlan => () + case p => outLine(Producer.plan(p)) + } - def this (plan: Option[Plan], terminalInUse: Boolean) = + def this (plan: Plan = NoPlan, terminalInUse: Boolean = false) = this(plan, "", terminalInUse) - def this (plan: Option[Plan]) = - this(plan, "", false) - - def cloneForSubtest (newPlan: Option[Plan]): TestBuilder = + def cloneForSubtest (newPlan: Plan): TestBuilder = new TestBuilder(newPlan, indent + " ", terminalInUse) def ok ( @@ -51,15 +51,15 @@ class TestBuilder private ( def doneTesting: Boolean = { plan match { - case None => outLine(Producer.plan(state.currentTest - 1)) - case _ => () + case NoPlan => outLine(Producer.plan(state.currentTest - 1)) + case _ => () } if (!state.isPassing) { if (!state.matchesPlan) { val planCount = (plan match { - case Some(p) => p.plan - case None => state.currentTest - 1 + case NoPlan => state.currentTest - 1 + case p => p.plan }) val planned = planCount + " test" + (if (planCount > 1) "s" else "") val ran = state.currentTest - 1 @@ -128,8 +128,9 @@ class TestBuilder private ( def currentTest: Int = failCount + passCount + 1 - def matchesPlan: Boolean = plan.forall { p => - p.plan == failCount + passCount + def matchesPlan: Boolean = plan match { + case NumericPlan(p) => p.plan == failCount + passCount + case _ => true } def isPassing: Boolean = diff --git a/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala b/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala index 56c1a98..6aff4a1 100644 --- a/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala +++ b/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala @@ -9,7 +9,7 @@ class TestBuilderTest extends TestMore { val output = new ByteArrayOutputStream Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(Some(4)) + val builder = new TestBuilder(4) builder.ok(true, "test succeeded") builder.ok(false, "test failed") builder.ok(true) @@ -33,7 +33,7 @@ class TestBuilderTest extends TestMore { val output = new ByteArrayOutputStream Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.ok(true, "test succeeded") builder.ok(false, "test failed") builder.ok(true) @@ -57,7 +57,7 @@ class TestBuilderTest extends TestMore { val output = new ByteArrayOutputStream Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.doneTesting } } @@ -73,7 +73,7 @@ class TestBuilderTest extends TestMore { val output = new ByteArrayOutputStream Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.ok(true, "the test passes") builder.ok(false, "the test passes") builder.diag("got false, expected true") @@ -104,7 +104,7 @@ class TestBuilderTest extends TestMore { is( Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.doneTesting } }, @@ -114,7 +114,7 @@ class TestBuilderTest extends TestMore { is( Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.ok(true) builder.doneTesting } @@ -125,7 +125,7 @@ class TestBuilderTest extends TestMore { is( Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.ok(true) builder.ok(false) builder.doneTesting @@ -137,7 +137,7 @@ class TestBuilderTest extends TestMore { is( Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.ok(true) builder.ok(false) builder.ok(true) @@ -154,7 +154,7 @@ class TestBuilderTest extends TestMore { val oldErr = Console.err Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.ok(true) try { builder.bailOut("oh no!") @@ -190,7 +190,7 @@ class TestBuilderTest extends TestMore { val output = new ByteArrayOutputStream Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(Some(SkipAll())) + val builder = new TestBuilder(SkipAll()) } } @@ -204,7 +204,7 @@ class TestBuilderTest extends TestMore { val output = new ByteArrayOutputStream Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(Some(SkipAll("foo bar"))) + val builder = new TestBuilder(SkipAll("foo bar")) } } @@ -218,7 +218,7 @@ class TestBuilderTest extends TestMore { val output = new ByteArrayOutputStream Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.ok(false) builder.skip("not now") builder.skip() @@ -240,7 +240,7 @@ class TestBuilderTest extends TestMore { val output = new ByteArrayOutputStream Console.withOut(output) { Console.withErr(output) { - val builder = new TestBuilder(None) + val builder = new TestBuilder builder.ok(false, "do a thing", todo = "not working yet") builder.ok(true, todo = "is it?") builder.doneTesting -- cgit v1.2.3-54-g00ecf