// @(#)$Id: LibraryDBTest.scala,v 1.1 2005/10/28 09:03:35 leavens Exp leavens $
package scalahw;

import LibraryDB._;
import testing._;

/** Testing for LibraryDB.
 * @author Gary T. Leavens
 */
object LibraryDBTest with ConsoleTestRunner {

  private val exampleBase =
    List(Pair("Alice", "Tintin"), Pair("Anna", "Little Women"),
         Pair("Alice", "Asterix"), Pair("Rory", "Tintin"));

  /** The actual tests to run. */    
  val suite = new TestSuite(
    // test borrowers
    new Expect("borrowers(exampleBase)(\"Tintin\")", 
      borrowers(exampleBase)("Tintin"), List("Alice", "Rory")),
    new Expect("borrowers(exampleBase)(\"Asterix\")", 
      borrowers(exampleBase)("Asterix"), List("Alice")),
    new Expect("borrowers(exampleBase)(\"Blind Watchmaker\")", 
      borrowers(exampleBase)("Blind Watchmaker"), Nil),

    // test borrowered
    new Expect("borrowed(exampleBase)(\"Tintin\")", 
      borrowed(exampleBase)("Tintin"), true),
    new Expect("borrowed(exampleBase)(\"Little Women\")", 
      borrowed(exampleBase)("Little Women"), true),
    new Expect("borrowed(exampleBase)(\"Blind Watchmaker\")", 
      borrowed(exampleBase)("Blind Watchmaker"), false),

    // test numBorrowed
    new Expect("numBorrowed(exampleBase)(\"Alice\")", 
      numBorrowed(exampleBase)("Alice"), 2),
    new Expect("numBorrowed(exampleBase)(\"Rory\")", 
      numBorrowed(exampleBase)("Rory"), 1),
    new Expect("numBorrowed(exampleBase)(\"Gould\")", 
      numBorrowed(exampleBase)("Gould"), 0),
    new Expect("Done!", 1, 1)
    );
}
