1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.healthmarketscience.jackcess.util;
18
19 import java.util.ArrayList;
20 import java.util.Arrays;
21 import java.util.List;
22
23 import com.healthmarketscience.jackcess.DataType;
24 import com.healthmarketscience.jackcess.Row;
25 import com.healthmarketscience.jackcess.impl.ColumnImpl;
26 import junit.framework.TestCase;
27 import static com.healthmarketscience.jackcess.TestUtil.*;
28
29
30
31
32 public class RowFilterTest extends TestCase
33 {
34 private static final String ID_COL = "id";
35 private static final String COL1 = "col1";
36 private static final String COL2 = "col2";
37 private static final String COL3 = "col3";
38
39
40 public RowFilterTest(String name) {
41 super(name);
42 }
43
44 public void testFilter() throws Exception
45 {
46 Row row0 = createExpectedRow(ID_COL, 0, COL1, "foo", COL2, 13, COL3, "bar");
47 Row row1 = createExpectedRow(ID_COL, 1, COL1, "bar", COL2, 42, COL3, null);
48 Row row2 = createExpectedRow(ID_COL, 2, COL1, "foo", COL2, 55, COL3, "bar");
49 Row row3 = createExpectedRow(ID_COL, 3, COL1, "baz", COL2, 42, COL3, "bar");
50 Row row4 = createExpectedRow(ID_COL, 4, COL1, "foo", COL2, 13, COL3, null);
51 Row row5 = createExpectedRow(ID_COL, 5, COL1, "bla", COL2, 13, COL3, "bar");
52
53
54 List<Row> rows = Arrays.asList(row0, row1, row2, row3, row4, row5);
55
56 ColumnImpl testCol = new ColumnImpl(null, COL1, DataType.TEXT, 0, 0, 0) {};
57 assertEquals(Arrays.asList(row0, row2, row4),
58 toList(RowFilter.matchPattern(testCol,
59 "foo").apply(rows)));
60 assertEquals(Arrays.asList(row1, row3, row5),
61 toList(RowFilter.invert(
62 RowFilter.matchPattern(
63 testCol,
64 "foo")).apply(rows)));
65
66 assertEquals(Arrays.asList(row0, row2, row4),
67 toList(RowFilter.matchPattern(
68 createExpectedRow(COL1, "foo"))
69 .apply(rows)));
70 assertEquals(Arrays.asList(row0, row2),
71 toList(RowFilter.matchPattern(
72 createExpectedRow(COL1, "foo", COL3, "bar"))
73 .apply(rows)));
74 assertEquals(Arrays.asList(row4),
75 toList(RowFilter.matchPattern(
76 createExpectedRow(COL1, "foo", COL3, null))
77 .apply(rows)));
78 assertEquals(Arrays.asList(row0, row4, row5),
79 toList(RowFilter.matchPattern(
80 createExpectedRow(COL2, 13))
81 .apply(rows)));
82 assertEquals(Arrays.asList(row1),
83 toList(RowFilter.matchPattern(row1)
84 .apply(rows)));
85
86 assertEquals(rows, toList(RowFilter.apply(null, rows)));
87 assertEquals(Arrays.asList(row1),
88 toList(RowFilter.apply(RowFilter.matchPattern(row1),
89 rows)));
90 }
91
92 public static List<Row> toList(Iterable<Row> rows)
93 {
94 List<Row> rowList = new ArrayList<Row>();
95 for(Row row : rows) {
96 rowList.add(row);
97 }
98 return rowList;
99 }
100
101 }