aboutsummaryrefslogtreecommitdiff
path: root/tests/pending/run/enums.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/pending/run/enums.scala')
-rw-r--r--tests/pending/run/enums.scala161
1 files changed, 161 insertions, 0 deletions
diff --git a/tests/pending/run/enums.scala b/tests/pending/run/enums.scala
new file mode 100644
index 000000000..3aad7ec32
--- /dev/null
+++ b/tests/pending/run/enums.scala
@@ -0,0 +1,161 @@
+//############################################################################
+// Enumerations
+//############################################################################
+
+object Test1 {
+
+ object WeekDays extends Enumeration {
+ val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
+ }
+
+ def isWorkingDay(d: WeekDays.Value) =
+ ! (d == WeekDays.Sat || d == WeekDays.Sun);
+
+ def run: Int = {
+ val it = WeekDays.values filter (isWorkingDay);
+ it.toList.length
+ }
+}
+
+object Test2 {
+
+ object ThreadState extends Enumeration {
+ val New = Value("NEW");
+ val Runnable = Value("RUNNABLE");
+ val Blocked = Value("BLOCKED");
+ val Waiting = Value("WAITING");
+ val TimedWaiting = Value("TIMED_WAITING");
+ val Terminated = Value("TERMINATED");
+ }
+
+ def run: Int = {
+ val it = for (s <- ThreadState.values; if s.id != 0) yield s;
+ it.toList.length
+ }
+}
+
+object Test3 {
+
+ object Direction extends Enumeration {
+ val North = Value("North")
+ val South = Value("South")
+ val East = Value("East")
+ val West = Value("West")
+ }
+
+ def run: Int = {
+ val it = for (d <- Direction.values; if d.toString() startsWith "N") yield d;
+ it.toList.length
+ }
+}
+
+object Test4 {
+
+ object Direction extends Enumeration {
+ val North = Value("North")
+ val South = Value("South")
+ val East = Value("East")
+ val West = Value("West")
+ }
+
+ def run: Int = {
+ val dir = Direction.withName("North")
+ assert(dir.toString == "North")
+ try {
+ Direction.withName("Nord")
+ assert(false)
+ } catch {
+ case e: Exception => /* do nothing */
+ }
+ 0
+ }
+}
+
+object Test5 {
+
+ object D1 extends Enumeration(0) {
+ val North, South, East, West = Value;
+ }
+
+ object D2 extends Enumeration(-2) {
+ val North, South, East, West = Value;
+ }
+
+ object WeekDays extends Enumeration {
+ val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
+ }
+
+ def run {
+ val s1 = D1.ValueSet(D1.North, D1.East)
+ val s2 = D2.North + D2.East
+ println(s1)
+ println(s2)
+ println(s1 + D1.West)
+ println(s2 + D2.West)
+ println(s1.toBitMask.map(_.toBinaryString).toList)
+ println(s2.toBitMask.map(_.toBinaryString).toList)
+ println(D1.ValueSet.fromBitMask(s1.toBitMask))
+ println(D2.ValueSet.fromBitMask(s2.toBitMask))
+ println(WeekDays.values.range(WeekDays.Tue, WeekDays.Sat))
+ }
+}
+
+object SerializationTest {
+ object Types extends Enumeration { val X, Y = Value }
+ class A extends java.io.Serializable { val types = Types.values }
+ class B extends java.io.Serializable { val types = Set(Types.X, Types.Y) }
+
+ def serialize(obj: AnyRef) = {
+ val baos = new java.io.ByteArrayOutputStream()
+ val oos = new java.io.ObjectOutputStream(baos)
+ oos.writeObject(obj)
+ oos.close()
+ val bais = new java.io.ByteArrayInputStream(baos.toByteArray)
+ val ois = new java.io.ObjectInputStream(bais)
+ val prime = ois.readObject()
+ ois.close()
+ prime
+ }
+
+ def run {
+ serialize(new B())
+ serialize(new A())
+ }
+}
+
+//############################################################################
+// Test code
+
+object Test {
+
+ def check_success(name: String, closure: => Int, expected: Int): Unit = {
+ Console.print("test " + name);
+ try {
+ val actual: Int = closure;
+ if (actual == expected) {
+ Console.print(" was successful");
+ } else {
+ Console.print(" failed: expected "+ expected +", found "+ actual);
+ }
+ } catch {
+ case exception: Throwable => {
+ Console.print(" raised exception " + exception);
+ exception.printStackTrace();
+ }
+ }
+ Console.println;
+ }
+
+ def main(args: Array[String]): Unit = {
+ check_success("Test1", Test1.run, 5);
+ check_success("Test2", Test2.run, 5);
+ check_success("Test3", Test3.run, 1);
+ check_success("Test4", Test4.run, 0);
+ Console.println;
+ Test5.run;
+ Console.println;
+ SerializationTest.run;
+ }
+}
+
+//############################################################################