// The IMaps class defines static methods for the IMap type. // In particular, it defines a static factory method for creating the // empty map of the IMap type. import java.util.Iterator; class IMaps { private static IMap theEmptyIMap = new IMapList(); // static factory method for creating an empty IMap @SuppressWarnings("unchecked") public static IMap empty () { return (IMap) theEmptyIMap; } // main method for testing public static void main (String[] args) { IMapTests.main (args); } } // Tests for IMap objects. class IMapTests { public static void main (String[] args) { IMap m0 = IMaps.empty(); IMap m1 = m0.extend (1, "one"); IMap m2 = m0.extend (2, "two"); IMap m3 = m0.extend (3, "three"); IMap m4 = m0.extend (4, "four"); IMap m5 = m0.extend (5, "five"); IMap m6 = m0.extend (6, "six"); IMap m7 = m0.extend (7, "seven"); IMap m8 = m0.extend (8, "eight"); IMap m9 = m0.extend (9, "nine"); IMap m00 = IMaps.empty(); IMap m03 = m9.extend (3, "drei"); IMap m10 = m03.extend (10, "zehn"); assert ! m0.containsKey(1); assert m9.containsKey(4); assert ! m9.containsKey(10); assert m9.get(9).equals("nine"); assert m9.get(3).equals("three"); assert m9.get(1).equals("one"); assert m10.get(9).equals("nine"); assert m10.get(3).equals("drei"); assert m10.get(1).equals("one"); assert m0.isEmpty(); assert ! m1.isEmpty(); assert m0.size() == 0; assert m1.size() == 1; assert m9.size() == 9; assert m03.size() == 9; assert m10.size() == 10; System.out.println ("IMap tests passed."); } }