From d8a79cd83149ea03b4b85d92c164bcf9456f3640 Mon Sep 17 00:00:00 2001 From: winitzki Date: Mon, 19 Dec 2016 20:03:44 -0800 Subject: [PATCH] more tests for coverage --- lib/src/main/scala/code/winitzki/jc/JoinRun.scala | 7 +------ lib/src/main/scala/code/winitzki/jc/MutableBag.scala | 3 ++- .../scala/code/winitzki/jc/JoinRunBlockingSpec.scala | 2 +- .../test/scala/code/winitzki/jc/LibrarySpec.scala | 7 +++++++ .../test/scala/code/winitzki/jc/MutableBagSpec.scala | 12 ++++++++++++ 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/src/main/scala/code/winitzki/jc/JoinRun.scala b/lib/src/main/scala/code/winitzki/jc/JoinRun.scala index ae16c1e3..dd982255 100644 --- a/lib/src/main/scala/code/winitzki/jc/JoinRun.scala +++ b/lib/src/main/scala/code/winitzki/jc/JoinRun.scala @@ -20,12 +20,7 @@ import scala.collection.JavaConverters._ object JoinRun { - sealed trait InputPatternType { - def isUnconditional: Boolean = this match { - case Wildcard | SimpleVar => true - case _ => false - } - } + sealed trait InputPatternType case object Wildcard extends InputPatternType diff --git a/lib/src/main/scala/code/winitzki/jc/MutableBag.scala b/lib/src/main/scala/code/winitzki/jc/MutableBag.scala index d538e0d1..001d601d 100644 --- a/lib/src/main/scala/code/winitzki/jc/MutableBag.scala +++ b/lib/src/main/scala/code/winitzki/jc/MutableBag.scala @@ -80,6 +80,7 @@ class MutableBag[K,V] { anotherBag.foreach { case (k, v) => removeFromBag(k, v) } } +/* // about 30% slower than MutableBag, and not sure we need it, since all operations with molecule bag are synchronized now. class ConcurrentMutableBag[K,V] { @@ -123,7 +124,7 @@ class ConcurrentMutableBag[K,V] { } -/* */ +*/ // previous implementation - becomes slow if we have many repeated values, fails performance test /* class MutableBag[K,V] { diff --git a/lib/src/test/scala/code/winitzki/jc/JoinRunBlockingSpec.scala b/lib/src/test/scala/code/winitzki/jc/JoinRunBlockingSpec.scala index c707b432..036c8e6f 100644 --- a/lib/src/test/scala/code/winitzki/jc/JoinRunBlockingSpec.scala +++ b/lib/src/test/scala/code/winitzki/jc/JoinRunBlockingSpec.scala @@ -326,7 +326,7 @@ class JoinRunBlockingSpec extends FlatSpec with Matchers with TimeLimitedTests w it should "implement BlockingIdle(BlockingIdle()) as BlockingIdle()" in { val tp = new SmartPool(1) val (g, g2) = makeBlockingCheck(BlockingIdle{BlockingIdle{Thread.sleep(300)}}, tp) - g2(timeout = 50 millis)() shouldEqual Some(1) // this should not be blocked + g2(timeout = 150 millis)() shouldEqual Some(1) // this should not be blocked tp.currentPoolSize shouldEqual 2 g() // now we know that the first reaction has finished tp.currentPoolSize shouldEqual 1 diff --git a/lib/src/test/scala/code/winitzki/jc/LibrarySpec.scala b/lib/src/test/scala/code/winitzki/jc/LibrarySpec.scala index f7d563a7..08a5d613 100644 --- a/lib/src/test/scala/code/winitzki/jc/LibrarySpec.scala +++ b/lib/src/test/scala/code/winitzki/jc/LibrarySpec.scala @@ -121,4 +121,11 @@ class LibrarySpec extends FlatSpec with Matchers with TimeLimitedTests { tp.shutdownNow() } + behavior of "cleanup with resource" + + it should "catch exceptions and not fail" in { + val tryX = cleanup(1)(_ => throw new Exception("ignore this exception"))(_ => throw new Exception("foo")) + tryX.isFailure shouldEqual true + } + } \ No newline at end of file diff --git a/lib/src/test/scala/code/winitzki/jc/MutableBagSpec.scala b/lib/src/test/scala/code/winitzki/jc/MutableBagSpec.scala index ced96942..f4f7c006 100644 --- a/lib/src/test/scala/code/winitzki/jc/MutableBagSpec.scala +++ b/lib/src/test/scala/code/winitzki/jc/MutableBagSpec.scala @@ -23,6 +23,18 @@ class MutableBagSpec extends FlatSpec with Matchers with TimeLimitedTests { b.getOne(1) shouldEqual Some("a") } + it should "make a bag with one element" in { + val b = MutableBag.of(1, "a") + b.size shouldEqual 1 + b.getOne(1) shouldEqual Some("a") + } + + it should "print a bag" in { + val b = MutableBag.of(1, "a") + b.addToBag(2, "b") + b.toString shouldEqual "Map(2 -> Map(b -> 1), 1 -> Map(a -> 1))" + } + it should "add two elements with the same key and the same value, them remove them both" in { val b = new MutableBag[Int, String] b.addToBag(1, "a")