1   //
2   // Copyright (c) 2004, International Decision Systems
3   // all rights reserved
4   /*
5    * Copyright (c) 2005 Your Corporation. All Rights Reserved.
6    */
7   package net.sourceforge.addam.ddlrun.filters;
8   
9   import junit.framework.TestCase;
10  
11  import java.util.Arrays;
12  import java.util.List;
13  import java.util.Iterator;
14  
15  import net.sourceforge.addam.ddlrun.filters.DifferenceFilter;
16  
17  public class DifferenceFilterUTEST extends TestCase {
18  
19      private List itemsToRemove = Arrays.asList(new String[]{
20          "script1.sql",
21          "script2.sql",
22      });
23  
24      public void testEmptyLines() {
25          DifferenceFilter filter = new DifferenceFilter(itemsToRemove, true);
26          List allItems = Arrays.asList(new String[]{
27              "",
28              " ",
29          });
30          Iterator desiredItems = filter.getIterator(allItems);
31          assertEquals(false, desiredItems.hasNext());
32      }
33  
34      public void testComments() {
35          DifferenceFilter filter = new DifferenceFilter(itemsToRemove, true);
36          List allItems = Arrays.asList(new String[]{
37              "-- ignore this one",
38              "script1.sql",
39              "-- ignore this one too",
40          });
41  
42          Iterator desiredItems = filter.getIterator(allItems);
43          assertEquals(false, desiredItems.hasNext());
44      }
45  
46      public void testExpectedUsage() {
47          DifferenceFilter filter = new DifferenceFilter(itemsToRemove, true);
48          List allItems = Arrays.asList(new String[]{
49              "-- comment for script1",
50              "script1.sql",
51              "",
52              "-- comment for script2",
53              "script2.sql",
54              "",
55              "-- comment for script3",
56              "script3.sql",
57              "-- comment for script4,5",
58              "script4.sql",
59              "script5.sql",
60              "-- these are dupes and should be ignored",
61              "script4.sql",
62              "script5.sql"
63          });
64  
65          Iterator desiredItems = filter.getIterator(allItems);
66          assertEquals("script3.sql", desiredItems.next());
67          assertEquals("script4.sql", desiredItems.next());
68          assertEquals("script5.sql", desiredItems.next());
69          assertEquals(false, desiredItems.hasNext());
70      }
71  
72      public void testNoIgnoreDupes() {
73          DifferenceFilter filter = new DifferenceFilter(itemsToRemove, false);
74          List allItems = Arrays.asList(new String[]{
75              "-- comment for script1",
76              "script1.sql",
77              "",
78              "-- comment for script2",
79              "script2.sql",
80              "",
81              "-- comment for script3",
82              "script3.sql",
83              "-- comment for script4,5",
84              "script4.sql",
85              "script5.sql",
86              "-- these are dupes but should NOT be ignored",
87              "script4.sql",
88              "script5.sql"
89          });
90  
91          Iterator desiredItems = filter.getIterator(allItems);
92          assertEquals("script3.sql", desiredItems.next());
93          assertEquals("script4.sql", desiredItems.next());
94          assertEquals("script5.sql", desiredItems.next());
95          assertEquals("script4.sql", desiredItems.next());
96          assertEquals("script5.sql", desiredItems.next());
97          assertEquals(false, desiredItems.hasNext());
98      }
99  }