1 5 package com.tc.util; 6 7 import java.util.ArrayList ; 8 import java.util.Random ; 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 { 19 this.sv = new SequenceValidator(INITIAL_VALUE); 20 } 21 22 public void tests() throws Exception { 23 24 SequenceID one = new SequenceID(1); 25 SequenceID two = new SequenceID(2); 26 SequenceID three = new SequenceID(3); 27 28 Object key1 = new Object (); 29 Object key2 = new Object (); 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 { 52 53 Object key = new Object (); 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 } 65 } 66 } 67 68 public void testDisjointSequences() throws Exception { 69 70 int start = 100; 71 ArrayList sequences = createRandomSequences(start); 72 73 Object key1 = new Object (); 74 75 assertEquals(0, sv.size()); 76 sv.initSequence(key1, sequences); 77 78 try { 79 sv.initSequence(key1, new ArrayList ()); 80 fail("Should have thrown an Exception"); 81 } catch (TCAssertionError er) { 82 } 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 createRandomSequences(int inital) { 110 Random r = new Random (); 111 ArrayList sequences = new ArrayList (); 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 |