samples/effectivelist/test/org/apidesign/effectivelist/ListTest.scala
author Jaroslav Tulach <jtulach@netbeans.org>
Sun, 02 Sep 2012 22:00:13 +0200
changeset 403 ebe08056c60c
parent 402 e25dbfce40e9
permissions -rw-r--r--
Identifying code snippets to be used on my blog
jtulach@402
     1
package org.apidesign.effectivelist
jtulach@402
     2
jtulach@402
     3
import org.junit._
jtulach@402
     4
import Assert._
jtulach@402
     5
jtulach@402
     6
class ListTest {
jtulach@403
     7
  // BEGIN: effectivelist.person
jtulach@402
     8
  case class Person(name : String, age : Int) extends Listable[Person]
jtulach@402
     9
  
jtulach@402
    10
  var list : List[Person] = _
jtulach@402
    11
  var p1, p2, p3, p4 : Person = _
jtulach@402
    12
  
jtulach@402
    13
  @Before def initializeListAndValues: Unit = {
jtulach@402
    14
    list = new List[Person]
jtulach@402
    15
    p1 = new Person("Jarda", 39)
jtulach@402
    16
    p2 = new Person("Sona", 37)
jtulach@402
    17
    p3 = new Person("Anna", 7)
jtulach@402
    18
    p4 = new Person("Ondra", 6)
jtulach@402
    19
  }
jtulach@402
    20
jtulach@402
    21
  @Test def tryFewAdditions = {
jtulach@402
    22
    assertTrue(list.add(p1))
jtulach@402
    23
    assertTrue(list.add(p2))
jtulach@402
    24
    assertTrue(list.add(p3))
jtulach@402
    25
    assertTrue(list.add(p4))
jtulach@402
    26
    
jtulach@402
    27
    assertEquals("Jarda was inserted first", "Jarda", list.get(0).name)
jtulach@402
    28
    assertEquals("Sona was inserted 2nd", 37, list.get(1).age)
jtulach@402
    29
    assertEquals("Anna was inserted 3rd", "Anna", list.get(2).name)
jtulach@402
    30
    assertEquals("Anna was inserted 4th", 6, list.get(3).age)
jtulach@402
    31
  }
jtulach@403
    32
  // END: effectivelist.person
jtulach@402
    33
jtulach@402
    34
  @Test def addFewAndThenTryToRemoveHead() = {
jtulach@402
    35
    assertTrue(list.add(p1))
jtulach@402
    36
    assertTrue(list.add(p2))
jtulach@402
    37
    assertTrue(list.add(p3))
jtulach@402
    38
    
jtulach@402
    39
    assertEquals("Size it three", 3, list.size())
jtulach@402
    40
    assertEquals("Jarda was inserted first", "Jarda", list.get(0).name)
jtulach@402
    41
jtulach@402
    42
    assertFalse("Can't remove not added element", list.remove(p4))
jtulach@402
    43
    assertTrue("OK to remove head", list.remove(p1))
jtulach@402
    44
    
jtulach@402
    45
    assertEquals("Sona is now first", "Sona", list.get(0).name)
jtulach@402
    46
    assertEquals("Anna is now 2nd", "Anna", list.get(1).name)
jtulach@402
    47
    
jtulach@402
    48
    try {
jtulach@402
    49
      list.get(2)
jtulach@402
    50
      fail("Previous call should throw exception")
jtulach@402
    51
    } catch {
jtulach@402
    52
      case e : IndexOutOfBoundsException => ; // OK
jtulach@402
    53
    }
jtulach@402
    54
  }
jtulach@402
    55
  
jtulach@402
    56
  @Test def addFewAndThenTryToRemoveSecond() = {
jtulach@402
    57
    assertEquals(0, list.size())
jtulach@402
    58
    assertTrue(list.add(p1))
jtulach@402
    59
    assertEquals(1, list.size())
jtulach@402
    60
    assertTrue(list.add(p2))
jtulach@402
    61
    assertEquals(2, list.size())
jtulach@402
    62
    assertTrue(list.add(p3))
jtulach@402
    63
    assertEquals(3, list.size())
jtulach@402
    64
    
jtulach@402
    65
    assertEquals("Size it three", 3, list.size())
jtulach@402
    66
    assertEquals("Jarda was inserted first", "Jarda", list.get(0).name)
jtulach@402
    67
jtulach@402
    68
    assertFalse("Can't remove not added element", list.remove(p4))
jtulach@402
    69
    assertTrue("OK to remove head", list.remove(p2))
jtulach@402
    70
    
jtulach@402
    71
    assertEquals("Jarda is still first", "Jarda", list.get(0).name)
jtulach@402
    72
    assertEquals("Anna is now 2nd", "Anna", list.get(1).name)
jtulach@402
    73
    
jtulach@402
    74
    try {
jtulach@402
    75
      list.get(2);
jtulach@402
    76
      fail("Previous call should throw exception")
jtulach@402
    77
    } catch {
jtulach@402
    78
      case e : IndexOutOfBoundsException => ; // OK
jtulach@402
    79
    }
jtulach@402
    80
    assertEquals(2, list.size());
jtulach@402
    81
    
jtulach@402
    82
    list.remove(p1)
jtulach@402
    83
    list.remove(p3)
jtulach@402
    84
    
jtulach@402
    85
    assertEquals("Not it is empty", 0, list.size())
jtulach@402
    86
  }
jtulach@402
    87
}