jtulach@402: package org.apidesign.effectivelist jtulach@402: jtulach@402: import org.junit._ jtulach@402: import Assert._ jtulach@402: jtulach@402: class ListTest { jtulach@402: case class Person(name : String, age : Int) extends Listable[Person] jtulach@402: jtulach@402: var list : List[Person] = _ jtulach@402: var p1, p2, p3, p4 : Person = _ jtulach@402: jtulach@402: @Before def initializeListAndValues: Unit = { jtulach@402: list = new List[Person] jtulach@402: p1 = new Person("Jarda", 39) jtulach@402: p2 = new Person("Sona", 37) jtulach@402: p3 = new Person("Anna", 7) jtulach@402: p4 = new Person("Ondra", 6) jtulach@402: } jtulach@402: jtulach@402: @Test def tryFewAdditions = { jtulach@402: assertTrue(list.add(p1)) jtulach@402: assertTrue(list.add(p2)) jtulach@402: assertTrue(list.add(p3)) jtulach@402: assertTrue(list.add(p4)) jtulach@402: jtulach@402: assertEquals("Jarda was inserted first", "Jarda", list.get(0).name) jtulach@402: assertEquals("Sona was inserted 2nd", 37, list.get(1).age) jtulach@402: assertEquals("Anna was inserted 3rd", "Anna", list.get(2).name) jtulach@402: assertEquals("Anna was inserted 4th", 6, list.get(3).age) jtulach@402: } jtulach@402: jtulach@402: @Test def addFewAndThenTryToRemoveHead() = { jtulach@402: assertTrue(list.add(p1)) jtulach@402: assertTrue(list.add(p2)) jtulach@402: assertTrue(list.add(p3)) jtulach@402: jtulach@402: assertEquals("Size it three", 3, list.size()) jtulach@402: assertEquals("Jarda was inserted first", "Jarda", list.get(0).name) jtulach@402: jtulach@402: assertFalse("Can't remove not added element", list.remove(p4)) jtulach@402: assertTrue("OK to remove head", list.remove(p1)) jtulach@402: jtulach@402: assertEquals("Sona is now first", "Sona", list.get(0).name) jtulach@402: assertEquals("Anna is now 2nd", "Anna", list.get(1).name) jtulach@402: jtulach@402: try { jtulach@402: list.get(2) jtulach@402: fail("Previous call should throw exception") jtulach@402: } catch { jtulach@402: case e : IndexOutOfBoundsException => ; // OK jtulach@402: } jtulach@402: } jtulach@402: jtulach@402: @Test def addFewAndThenTryToRemoveSecond() = { jtulach@402: assertEquals(0, list.size()) jtulach@402: assertTrue(list.add(p1)) jtulach@402: assertEquals(1, list.size()) jtulach@402: assertTrue(list.add(p2)) jtulach@402: assertEquals(2, list.size()) jtulach@402: assertTrue(list.add(p3)) jtulach@402: assertEquals(3, list.size()) jtulach@402: jtulach@402: assertEquals("Size it three", 3, list.size()) jtulach@402: assertEquals("Jarda was inserted first", "Jarda", list.get(0).name) jtulach@402: jtulach@402: assertFalse("Can't remove not added element", list.remove(p4)) jtulach@402: assertTrue("OK to remove head", list.remove(p2)) jtulach@402: jtulach@402: assertEquals("Jarda is still first", "Jarda", list.get(0).name) jtulach@402: assertEquals("Anna is now 2nd", "Anna", list.get(1).name) jtulach@402: jtulach@402: try { jtulach@402: list.get(2); jtulach@402: fail("Previous call should throw exception") jtulach@402: } catch { jtulach@402: case e : IndexOutOfBoundsException => ; // OK jtulach@402: } jtulach@402: assertEquals(2, list.size()); jtulach@402: jtulach@402: list.remove(p1) jtulach@402: list.remove(p3) jtulach@402: jtulach@402: assertEquals("Not it is empty", 0, list.size()) jtulach@402: } jtulach@402: }