001: /*
002: * Copyright 2004-2006 OpenSymphony
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005: * use this file except in compliance with the License. You may obtain a copy
006: * of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013: * License for the specific language governing permissions and limitations
014: * under the License.
015: */
016: package org.quartz.utils;
017:
018: import java.util.Collection;
019: import java.util.Collections;
020: import java.util.Iterator;
021: import java.util.Map;
022: import java.util.Set;
023:
024: import org.quartz.utils.DirtyFlagMap;
025:
026: import junit.framework.TestCase;
027:
028: /**
029: * Unit test for DirtyFlagMap. These tests focus on making
030: * sure the isDirty flag is set correctly.
031: */
032: public class DirtyFlagMapTest extends TestCase {
033:
034: public void testClear() {
035: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
036: assertFalse(dirtyFlagMap.isDirty());
037:
038: dirtyFlagMap.clear();
039: assertFalse(dirtyFlagMap.isDirty());
040: dirtyFlagMap.put("X", "Y");
041: dirtyFlagMap.clearDirtyFlag();
042: dirtyFlagMap.clear();
043: assertTrue(dirtyFlagMap.isDirty());
044: }
045:
046: public void testPut() {
047: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
048: dirtyFlagMap.put("a", "Y");
049: assertTrue(dirtyFlagMap.isDirty());
050: }
051:
052: public void testRemove() {
053: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
054: dirtyFlagMap.put("a", "Y");
055: dirtyFlagMap.clearDirtyFlag();
056:
057: dirtyFlagMap.remove("b");
058: assertFalse(dirtyFlagMap.isDirty());
059:
060: dirtyFlagMap.remove("a");
061: assertTrue(dirtyFlagMap.isDirty());
062: }
063:
064: public void testEntrySetRemove() {
065: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
066: Set entrySet = dirtyFlagMap.entrySet();
067: dirtyFlagMap.remove("a");
068: assertFalse(dirtyFlagMap.isDirty());
069: dirtyFlagMap.put("a", "Y");
070: dirtyFlagMap.clearDirtyFlag();
071: entrySet.remove("b");
072: assertFalse(dirtyFlagMap.isDirty());
073: entrySet.remove(entrySet.iterator().next());
074: assertTrue(dirtyFlagMap.isDirty());
075: }
076:
077: public void testEntrySetRetainAll() {
078: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
079: Set entrySet = dirtyFlagMap.entrySet();
080: entrySet.retainAll(Collections.EMPTY_LIST);
081: assertFalse(dirtyFlagMap.isDirty());
082: dirtyFlagMap.put("a", "Y");
083: dirtyFlagMap.clearDirtyFlag();
084: entrySet.retainAll(Collections.singletonList(entrySet
085: .iterator().next()));
086: assertFalse(dirtyFlagMap.isDirty());
087: entrySet.retainAll(Collections.EMPTY_LIST);
088: assertTrue(dirtyFlagMap.isDirty());
089: }
090:
091: public void testEntrySetRemoveAll() {
092: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
093: Set entrySet = dirtyFlagMap.entrySet();
094: entrySet.removeAll(Collections.EMPTY_LIST);
095: assertFalse(dirtyFlagMap.isDirty());
096: dirtyFlagMap.put("a", "Y");
097: dirtyFlagMap.clearDirtyFlag();
098: entrySet.removeAll(Collections.EMPTY_LIST);
099: assertFalse(dirtyFlagMap.isDirty());
100: entrySet.removeAll(Collections.singletonList(entrySet
101: .iterator().next()));
102: assertTrue(dirtyFlagMap.isDirty());
103: }
104:
105: public void testEntrySetClear() {
106: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
107: Set entrySet = dirtyFlagMap.entrySet();
108: entrySet.clear();
109: assertFalse(dirtyFlagMap.isDirty());
110: dirtyFlagMap.put("a", "Y");
111: dirtyFlagMap.clearDirtyFlag();
112: entrySet.clear();
113: assertTrue(dirtyFlagMap.isDirty());
114: }
115:
116: public void testEntrySetIterator() {
117: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
118: Set entrySet = dirtyFlagMap.entrySet();
119: dirtyFlagMap.put("a", "A");
120: dirtyFlagMap.put("b", "B");
121: dirtyFlagMap.put("c", "C");
122: dirtyFlagMap.clearDirtyFlag();
123: Iterator entrySetIter = entrySet.iterator();
124: Map.Entry entryToBeRemoved = (Map.Entry) entrySetIter.next();
125: String removedKey = (String) entryToBeRemoved.getKey();
126: entrySetIter.remove();
127: assertEquals(2, dirtyFlagMap.size());
128: assertTrue(dirtyFlagMap.isDirty());
129: assertFalse(dirtyFlagMap.containsKey(removedKey));
130: dirtyFlagMap.clearDirtyFlag();
131: Map.Entry entry = (Map.Entry) entrySetIter.next();
132: entry.setValue("BB");
133: assertTrue(dirtyFlagMap.isDirty());
134: assertTrue(dirtyFlagMap.containsValue("BB"));
135: }
136:
137: public void testEntrySetToArray() {
138: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
139: Set entrySet = dirtyFlagMap.entrySet();
140: dirtyFlagMap.put("a", "A");
141: dirtyFlagMap.put("b", "B");
142: dirtyFlagMap.put("c", "C");
143: dirtyFlagMap.clearDirtyFlag();
144: Object[] array = entrySet.toArray();
145: assertEquals(3, array.length);
146: Map.Entry entry = (Map.Entry) array[0];
147: entry.setValue("BB");
148: assertTrue(dirtyFlagMap.isDirty());
149: assertTrue(dirtyFlagMap.containsValue("BB"));
150: }
151:
152: public void testEntrySetToArrayWithArg() {
153: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
154: Set entrySet = dirtyFlagMap.entrySet();
155: dirtyFlagMap.put("a", "A");
156: dirtyFlagMap.put("b", "B");
157: dirtyFlagMap.put("c", "C");
158: dirtyFlagMap.clearDirtyFlag();
159: Object[] array = entrySet.toArray(new Map.Entry[] {});
160: assertEquals(3, array.length);
161: Map.Entry entry = (Map.Entry) array[0];
162: entry.setValue("BB");
163: assertTrue(dirtyFlagMap.isDirty());
164: assertTrue(dirtyFlagMap.containsValue("BB"));
165: }
166:
167: public void testKeySetClear() {
168: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
169: Set keySet = dirtyFlagMap.keySet();
170: keySet.clear();
171: assertFalse(dirtyFlagMap.isDirty());
172: dirtyFlagMap.put("a", "Y");
173: dirtyFlagMap.clearDirtyFlag();
174: keySet.clear();
175: assertTrue(dirtyFlagMap.isDirty());
176: assertEquals(0, dirtyFlagMap.size());
177: }
178:
179: public void testValuesClear() {
180: DirtyFlagMap dirtyFlagMap = new DirtyFlagMap();
181: Collection values = dirtyFlagMap.values();
182: values.clear();
183: assertFalse(dirtyFlagMap.isDirty());
184: dirtyFlagMap.put("a", "Y");
185: dirtyFlagMap.clearDirtyFlag();
186: values.clear();
187: assertTrue(dirtyFlagMap.isDirty());
188: assertEquals(0, dirtyFlagMap.size());
189: }
190: }
|