1 package org.apidesign.effectivelist
7 // BEGIN: effectivelist.person
8 case class Person(name : String, age : Int) extends Listable[Person]
10 var list : List[Person] = _
11 var p1, p2, p3, p4 : Person = _
13 @Before def initializeListAndValues: Unit = {
14 list = new List[Person]
15 p1 = new Person("Jarda", 39)
16 p2 = new Person("Sona", 37)
17 p3 = new Person("Anna", 7)
18 p4 = new Person("Ondra", 6)
21 @Test def tryFewAdditions = {
22 assertTrue(list.add(p1))
23 assertTrue(list.add(p2))
24 assertTrue(list.add(p3))
25 assertTrue(list.add(p4))
27 assertEquals("Jarda was inserted first", "Jarda", list.get(0).name)
28 assertEquals("Sona was inserted 2nd", 37, list.get(1).age)
29 assertEquals("Anna was inserted 3rd", "Anna", list.get(2).name)
30 assertEquals("Anna was inserted 4th", 6, list.get(3).age)
32 // END: effectivelist.person
34 @Test def addFewAndThenTryToRemoveHead() = {
35 assertTrue(list.add(p1))
36 assertTrue(list.add(p2))
37 assertTrue(list.add(p3))
39 assertEquals("Size it three", 3, list.size())
40 assertEquals("Jarda was inserted first", "Jarda", list.get(0).name)
42 assertFalse("Can't remove not added element", list.remove(p4))
43 assertTrue("OK to remove head", list.remove(p1))
45 assertEquals("Sona is now first", "Sona", list.get(0).name)
46 assertEquals("Anna is now 2nd", "Anna", list.get(1).name)
50 fail("Previous call should throw exception")
52 case e : IndexOutOfBoundsException => ; // OK
56 @Test def addFewAndThenTryToRemoveSecond() = {
57 assertEquals(0, list.size())
58 assertTrue(list.add(p1))
59 assertEquals(1, list.size())
60 assertTrue(list.add(p2))
61 assertEquals(2, list.size())
62 assertTrue(list.add(p3))
63 assertEquals(3, list.size())
65 assertEquals("Size it three", 3, list.size())
66 assertEquals("Jarda was inserted first", "Jarda", list.get(0).name)
68 assertFalse("Can't remove not added element", list.remove(p4))
69 assertTrue("OK to remove head", list.remove(p2))
71 assertEquals("Jarda is still first", "Jarda", list.get(0).name)
72 assertEquals("Anna is now 2nd", "Anna", list.get(1).name)
76 fail("Previous call should throw exception")
78 case e : IndexOutOfBoundsException => ; // OK
80 assertEquals(2, list.size());
85 assertEquals("Not it is empty", 0, list.size())