1 4 package com.tc.util; 5 6 import com.tc.test.TCTestCase; 7 8 import java.security.SecureRandom ; 9 import java.util.Random ; 10 11 public class StackTest extends TCTestCase { 12 13 public void test() throws Exception { 14 Stack tcStack = new Stack(); 15 java.util.Stack javaStack = new java.util.Stack (); 16 17 doRandomTests(tcStack, javaStack); 18 } 19 20 private void doRandomTests(Stack tcStack, java.util.Stack javaStack) { 21 SecureRandom sr = new SecureRandom (); 22 long seed = sr.nextLong(); 23 System.err.println("Seed is " + seed); 24 Random r = new Random (seed); 25 int count = 10000; 26 while (count-- > 0) { 27 switch (r.nextInt(6)) { 28 case 0: 29 callPop(tcStack, javaStack); 30 break; 31 case 1: 32 callPush(tcStack, javaStack, r); 33 break; 34 case 2: 35 callPeek(tcStack, javaStack); 36 break; 37 case 3: 38 callEmpty(tcStack, javaStack); 39 break; 40 case 4: 41 callSize(tcStack, javaStack); 42 break; 43 case 5: 44 callSearch(tcStack, javaStack, r); 45 break; 46 default: 47 throw new AssertionError ("Should never get here."); 48 } 49 } 50 } 51 52 private void callSearch(Stack tcStack, java.util.Stack javaStack, Random r) { 53 Integer subject = new Integer (r.nextInt(10000)); 54 assertEquals(javaStack.search(subject), tcStack.search(subject)); 55 } 56 57 private void callSize(Stack tcStack, java.util.Stack javaStack) { 58 assertEquals(javaStack.size(), tcStack.size()); 59 } 60 61 private void callEmpty(Stack tcStack, java.util.Stack javaStack) { 62 assertEquals(javaStack.empty(), tcStack.empty()); 63 } 64 65 private void callPush(Stack tcStack, java.util.Stack javaStack, Random r) { 66 Integer subject = new Integer (r.nextInt(10000)); 67 assertEquals(javaStack.push(subject), tcStack.push(subject)); 68 assertEquals(javaStack.size(), tcStack.size()); 69 } 70 71 private void callPeek(Stack tcStack, java.util.Stack javaStack) { 72 boolean thrownException = false; 73 Object jo = null, to = null; 74 Exception je = null, te = null; 75 try { 76 jo = javaStack.peek(); 77 } catch (Exception ex) { 78 je = ex; 79 thrownException = true; 80 } 81 try { 82 to = tcStack.peek(); 83 assertFalse(thrownException); 84 } catch (Exception ex) { 85 assertTrue(thrownException); 86 te = ex; 87 } 88 assertEquals(jo, to); 89 if (je != null) { 90 assertEquals(je.toString(), te.toString()); 91 } 92 } 93 94 private void callPop(Stack tcStack, java.util.Stack javaStack) { 95 boolean thrownException = false; 96 Object jo = null, to = null; 97 Exception je = null, te = null; 98 try { 99 jo = javaStack.pop(); 100 } catch (Exception ex) { 101 je = ex; 102 thrownException = true; 103 } 104 try { 105 to = tcStack.pop(); 106 assertFalse(thrownException); 107 } catch (Exception ex) { 108 assertTrue(thrownException); 109 te = ex; 110 } 111 assertEquals(jo, to); 112 if (je != null) { 113 assertEquals(je.toString(), te.toString()); 114 } 115 } 116 117 } 118 | Popular Tags |