1 32 33 package com.jeantessier.classreader; 34 35 import java.io.*; 36 import java.util.*; 37 38 import junit.framework.*; 39 40 public class TestModifiedOnlyDispatcher extends TestCase { 41 private MockDispatcher mockDispatcher; 42 private ClassfileLoaderDispatcher dispatcher; 43 44 private String testDirname; 45 private String testFilename; 46 47 protected void setUp() throws Exception { 48 super.setUp(); 49 50 mockDispatcher = new MockDispatcher(); 51 dispatcher = new ModifiedOnlyDispatcher(mockDispatcher); 52 53 testDirname = "classes"; 54 testFilename = testDirname + File.separator + getClass().getName() + "." + getName() + ".txt"; 55 } 56 57 protected void tearDown() throws Exception { 58 File file = new File(testFilename); 59 file.delete(); 60 61 super.tearDown(); 62 } 63 64 public void testDispatchNonExistingFile() { 65 assertEquals("dispatch action", MockDispatcher.ACTION, dispatcher.dispatch(testFilename)); 66 assertEquals("delegated calls", 1, mockDispatcher.getDispatchCount(testFilename)); 67 } 68 69 public void testDispatchNewFile() throws IOException { 70 writeFile(); 71 72 assertEquals("dispatch action", MockDispatcher.ACTION, dispatcher.dispatch(testFilename)); 73 assertEquals("delegated calls", 1, mockDispatcher.getDispatchCount(testFilename)); 74 } 75 76 public void testDispatchIdenticalFile() throws IOException { 77 writeFile(); 78 79 assertEquals("first dispatch action", MockDispatcher.ACTION, dispatcher.dispatch(testFilename)); 80 assertEquals("first delegated calls", 1, mockDispatcher.getDispatchCount(testFilename)); 81 82 assertEquals("repeat dispatch action", ClassfileLoaderDispatcher.ACTION_IGNORE, dispatcher.dispatch(testFilename)); 83 assertEquals("repeat delegated calls", 1, mockDispatcher.getDispatchCount(testFilename)); 84 } 85 86 public void testDispatchDirectory() throws IOException { 87 assertEquals("first dispatch action", MockDispatcher.ACTION, dispatcher.dispatch(testDirname)); 88 assertEquals("first delegated calls", 1, mockDispatcher.getDispatchCount(testDirname)); 89 90 assertEquals("repeat dispatch action", MockDispatcher.ACTION, dispatcher.dispatch(testDirname)); 91 assertEquals("repeat delegated calls", 2, mockDispatcher.getDispatchCount(testDirname)); 92 } 93 94 public void testDispatchModifiedFile() throws IOException { 95 writeFile(); 96 97 assertEquals("first dispatch action", MockDispatcher.ACTION, dispatcher.dispatch(testFilename)); 98 assertEquals("first delegated calls", 1, mockDispatcher.getDispatchCount(testFilename)); 99 100 try { 101 Thread.sleep(50); 102 } catch (InterruptedException ex) { 103 } 105 writeFile(); 106 107 assertEquals("repeat dispatch action", MockDispatcher.ACTION, dispatcher.dispatch(testFilename)); 108 assertEquals("repeat delegated calls", 2, mockDispatcher.getDispatchCount(testFilename)); 109 } 110 111 private void writeFile() throws IOException { 112 PrintWriter out = new PrintWriter(new FileWriter(testFilename)); 113 out.println("foobar"); 114 out.close(); 115 } 116 } 117 | Popular Tags |