|  // : c15:JUnitDemo.java
 //Simple use of JUnit to test ArrayList
 //{Depends: junit.jar}
 //From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
 //www.BruceEckel.com. See copyright notice in CopyRight.txt.
 
 import java.util.*;
 import junit.framework.*;
 
 //So we can see the list objects being created,
 //and keep track of when they are cleaned up:
 class CountedList extends ArrayList {
 private static int counter = 0;
 
 private int id = counter++;
 
 public CountedList() {
 System.out.println("CountedList #" + id);
 }
 
 public int getId() {
 return id;
 }
 }
 
 public class JUnitDemo extends TestCase {
 private CountedList list = new CountedList();
 
 // You can use the constructor instead of setUp():
 public JUnitDemo(String name) {
 super(name);
 for (int i = 0; i < 3; i++)
 list.add("" + i);
 }
 
 // Thus, setUp() is optional, but is run right
 // before the test:
 protected void setUp() {
 System.out.println("Set up for " + list.getId());
 }
 
 // tearDown() is also optional, and is called after
 // each test. setUp() and tearDown() can be either
 // protected or public:
 public void tearDown() {
 System.out.println("Tearing down " + list.getId());
 }
 
 // All tests have method names beginning with "test":
 public void testInsert() {
 System.out.println("Running testInsert()");
 assertEquals(list.size(), 3);
 list.add(1, "Insert");
 assertEquals(list.size(), 4);
 assertEquals(list.get(1), "Insert");
 }
 
 public void testReplace() {
 System.out.println("Running testReplace()");
 assertEquals(list.size(), 3);
 list.set(1, "Replace");
 assertEquals(list.size(), 3);
 assertEquals(list.get(1), "Replace");
 }
 
 // A "helper" method to reduce code duplication. As long
 // as the name doesn't start with "test," it will not
 // be automatically executed by JUnit.
 private void compare(ArrayList lst, String[] strs) {
 Object[] array = lst.toArray();
 assertTrue("Arrays not the same length", array.length == strs.length);
 for (int i = 0; i < array.length; i++)
 assertEquals(strs[i], (String) array[i]);
 }
 
 public void testOrder() {
 System.out.println("Running testOrder()");
 compare(list, new String[] { "0", "1", "2" });
 }
 
 public void testRemove() {
 System.out.println("Running testRemove()");
 assertEquals(list.size(), 3);
 list.remove(1);
 assertEquals(list.size(), 2);
 compare(list, new String[] { "0", "2" });
 }
 
 public void testAddAll() {
 System.out.println("Running testAddAll()");
 list.addAll(Arrays.asList(new Object[] { "An", "African", "Swallow" }));
 assertEquals(list.size(), 6);
 compare(list,
 new String[] { "0", "1", "2", "An", "African", "Swallow" });
 }
 
 public static void main(String[] args) {
 // Invoke JUnit on the class:
 junit.textui.TestRunner.run(JUnitDemo.class);
 }
 } ///:~
 
 
 
 |