1   package gate.util;
2   
3   import junit.framework.*;
4   
5   /**
6    * Title:        Gate2
7    * Description:
8    * Copyright:    Copyright (c) 2000
9    * Company:      University Of Sheffield
10   * @author
11   * @version 1.0
12   */
13  
14  public class TestFeatureMap extends TestCase {
15  
16      /** Debug flag */
17      private static final boolean DEBUG = false;
18  
19      /** Construction */
20      public TestFeatureMap(String name) { super(name); }
21  
22      /** Test the testPutAndGet()... methods. */
23      public void testPutAndGet() throws Exception {
24          assertTrue(true);
25          SimpleFeatureMapImpl map = new SimpleFeatureMapImpl();
26          map.put("1", "bala");
27          map.put("1", "bala2");
28          map.put("2", "20");
29          map.put("3", null);
30          map.put(null, "5");
31  
32          Object value = null;
33          /**
34           * test1:
35           *      get replaced value by normal key
36           */
37          value = map.get("1");
38          assertSame(value, "bala2");
39          /**
40           * test 2:
41           *      get normal value by normal key
42           */
43          value = map.get("2");
44          assertSame(value, "20");
45          /**
46           * Test 3:
47           *      get null value by the key
48           */
49          value = map.get("3");
50          assertSame(value, null);
51          /**
52           * test 4:
53           *      try to get value by 'null' key
54           */
55          value = map.get(null);
56          assertSame(value, "5");
57      } // testPutAndGet()
58  
59      public void testSubsume() throws Exception {
60          assertTrue(true);
61          SimpleFeatureMapImpl map = new SimpleFeatureMapImpl();
62          SimpleFeatureMapImpl map2 = new SimpleFeatureMapImpl();
63          map.put("1", "bala");
64          map2.put("1", map.get("1"));
65  
66          map.put("2", "20");
67          /**
68           * test1:
69           *      subsume partially - map1 and map2 has one common element
70           */
71           assertTrue(map.subsumes(map2));
72          /**
73           * test 2:
74           *      map2 do NOT subsumes map1
75           */
76           assertTrue(!map2.subsumes(map));
77          /**
78           * Test 3:
79           *      subsume partially - map1 and map2.keySet()
80           */
81           assertTrue(map.subsumes(map2, map2.keySet()));
82          /**
83           * test 4:
84           *      map2 SUBSUMES and map using the map2.keySet()
85           */
86           assertTrue(map2.subsumes(map, map2.keySet()));
87  
88          /**
89           * test 5,6,7,8:
90           *      test1,2,3,4 with NULL's in the map and
91           *      not NULL's the map2 under the same key "3"
92           */
93           map.put("3", null);
94           map2.put("3", "not null");
95  
96           assertTrue(!map.subsumes(map2));
97           assertTrue(!map2.subsumes(map));
98           assertTrue(!map.subsumes(map2, map2.keySet()));
99           assertTrue(!map2.subsumes(map, map2.keySet()));
100 
101          /**
102           * Test 9,10,11,12 repeat the same test but with compatible (null) values
103           * under the same key "3"
104           */
105          map2.put("3", null);
106 
107          assertTrue(map.subsumes(map2));
108          assertTrue(!map2.subsumes(map));
109          assertTrue(map.subsumes(map2, map2.keySet()));
110          assertTrue(map2.subsumes(map, map2.keySet()));
111 
112          /**
113           * Test 13,14,15,16 repeat the same test but with null keys in the two of the maps
114           */
115          map.put(null, "5");
116          map2.put(null, "5");
117 
118          assertTrue(map.subsumes(map2));
119          assertTrue(!map2.subsumes(map));
120          assertTrue(map.subsumes(map2, map2.keySet()));
121          assertTrue(map2.subsumes(map, map2.keySet()));
122     } // testSubsume()
123 
124     /** Test suite routine for the test runner */
125     public static Test suite() {
126         return new TestSuite(TestFeatureMap.class);
127     } // suite
128 
129     public static void main(String args[]){
130         TestFeatureMap app = new TestFeatureMap("TestFeatureMap");
131         try {
132             app.testPutAndGet();
133             app.testSubsume();
134         } catch (Exception e) {
135             e.printStackTrace (Err.getPrintWriter());
136         }
137     } // main
138 } // TestFeatureMap