KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > util > SequenceValidatorTest


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright
3  * notice. All rights reserved.
4  */

5 package com.tc.util;
6
7 import java.util.ArrayList JavaDoc;
8 import java.util.Random JavaDoc;
9
10 import junit.framework.TestCase;
11
12 public class SequenceValidatorTest extends TestCase {
13
14   private static final int INITIAL_VALUE = 0;
15
16   private SequenceValidator sv;
17
18   public void setUp() throws Exception JavaDoc {
19     this.sv = new SequenceValidator(INITIAL_VALUE);
20   }
21
22   public void tests() throws Exception JavaDoc {
23
24     SequenceID one = new SequenceID(1);
25     SequenceID two = new SequenceID(2);
26     SequenceID three = new SequenceID(3);
27
28     Object JavaDoc key1 = new Object JavaDoc();
29     Object JavaDoc key2 = new Object JavaDoc();
30     assertEquals(0, sv.size());
31     assertTrue(sv.isNext(key1, one));
32     assertTrue(sv.isNext(key2, one));
33     assertFalse(sv.isNext(key1, two));
34     assertFalse(sv.isNext(key2, two));
35
36     sv.setCurrent(key1, one);
37
38     assertTrue(sv.isNext(key2, one));
39     assertFalse(sv.isNext(key2, two));
40     assertTrue(sv.isNext(key1, two));
41     assertFalse(sv.isNext(key1, three));
42
43     sv.remove(key1);
44     assertEquals(1, sv.size());
45     sv.remove(key2);
46     assertEquals(0, sv.size());
47     assertTrue(sv.isNext(key1, one));
48     assertTrue(sv.isNext(key2, one));
49   }
50
51   public void testSetCurrent() throws Exception JavaDoc {
52
53     Object JavaDoc key = new Object JavaDoc();
54     SequenceID sid = new SequenceID(1);
55     for (int i = 0; i < 50; i++) {
56       assertTrue(sv.isNext(key, sid));
57       sv.setCurrent(key, sid);
58       sid = sid.next();
59       try {
60         sv.setCurrent(key, sid.next());
61         fail();
62       } catch (InvalidSequenceIDException er) {
63         // expected
64
}
65     }
66   }
67
68   public void testDisjointSequences() throws Exception JavaDoc {
69
70     int start = 100;
71     ArrayList JavaDoc sequences = createRandomSequences(start);
72
73     Object JavaDoc key1 = new Object JavaDoc();
74
75     assertEquals(0, sv.size());
76     sv.initSequence(key1, sequences);
77
78     try {
79       sv.initSequence(key1, new ArrayList JavaDoc());
80       fail("Should have thrown an Exception");
81     } catch (TCAssertionError er) {
82       // expected
83
}
84
85     SequenceID current = sv.getCurrent(key1);
86     assertTrue(current.toLong() == INITIAL_VALUE);
87
88     while (sequences.size() > 0) {
89       SequenceID next = new SequenceID(start);
90       if (sequences.contains(next)) {
91         assertTrue(sv.isNext(key1, next));
92         sequences.remove(next);
93         sv.setCurrent(key1, next);
94       } else {
95         assertFalse(sv.isNext(key1, next));
96       }
97       start++;
98     }
99     int i = 100;
100     while (i-- > 0) {
101       SequenceID next = new SequenceID(start);
102       assertTrue(sv.isNext(key1, next));
103       sv.setCurrent(key1, next);
104       start++;
105     }
106
107   }
108
109   private ArrayList JavaDoc createRandomSequences(int inital) {
110     Random JavaDoc r = new Random JavaDoc();
111     ArrayList JavaDoc sequences = new ArrayList JavaDoc();
112     int count = r.nextInt(100) + 1;
113     while (count-- > 0) {
114       sequences.add(new SequenceID(inital));
115       inital += r.nextInt(5) + 1;
116     }
117     return sequences;
118   }
119 }
120
Popular Tags