1a437cf17f2118b3b02949cb6cc2fe85c29a6789
[aquarium] / src / test / scala / gr / grnet / aquarium / util / TestMethods.scala
1 package gr.grnet.aquarium.util
2
3 /*
4  * Copyright 2011 GRNET S.A. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or
7  * without modification, are permitted provided that the following
8  * conditions are met:
9  *
10  *   1. Redistributions of source code must retain the above
11  *      copyright notice, this list of conditions and the following
12  *      disclaimer.
13  *
14  *   2. Redistributions in binary form must reproduce the above
15  *      copyright notice, this list of conditions and the following
16  *      disclaimer in the documentation and/or other materials
17  *      provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
20  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  *
32  * The views and conclusions contained in the software and
33  * documentation are those of the authors and should not be
34  * interpreted as representing official policies, either expressed
35  * or implied, of GRNET S.A.
36  */
37
38 import org.junit.Assert.fail
39
40 /**
41  * Some common Scala-related asserts
42  *
43  * @author Georgios Gousios <gousiosg@gmail.com>
44  */
45 trait TestMethods {
46
47   def assertThrows[A <: Throwable](f: => Unit)(implicit m: ClassManifest[A]): Unit = {
48     try {
49       f
50     } catch {
51       case e if (m.erasure.isAssignableFrom(e.getClass)) => return
52       case e => fail("Expected error of type " + m.erasure.getName +
53         " not thrown. Instead, " + e.getClass.getName + " was thrown")
54     }
55     fail("No exception thrown")
56   }
57
58   def assertNone(a: AnyRef) = a match {
59     case None =>
60     case x => fail("Argument has value")
61   }
62
63   def assertNotNone(a: AnyRef) = a match {
64     case None => fail("Argument is None")
65     case _ =>
66   }
67
68   def assertNotEmpty[A](a: Traversable[A]) = a.size match {
69     case x if x <= 0 => fail()
70     case _ =>
71   }
72 }