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 @SuppressWarnings("unchecked")
45 public void testFilter() throws Exception
46 {
47 Row row0 = createExpectedRow(ID_COL, 0, COL1, "foo", COL2, 13, COL3, "bar");
48 Row row1 = createExpectedRow(ID_COL, 1, COL1, "bar", COL2, 42, COL3, null);
49 Row row2 = createExpectedRow(ID_COL, 2, COL1, "foo", COL2, 55, COL3, "bar");
50 Row row3 = createExpectedRow(ID_COL, 3, COL1, "baz", COL2, 42, COL3, "bar");
51 Row row4 = createExpectedRow(ID_COL, 4, COL1, "foo", COL2, 13, COL3, null);
52 Row row5 = createExpectedRow(ID_COL, 5, COL1, "bla", COL2, 13, COL3, "bar");
53
54
55 List<Row> rows = Arrays.asList(row0, row1, row2, row3, row4, row5);
56
57 ColumnImpl testCol = new ColumnImpl(null, COL1, DataType.TEXT, 0, 0, 0) {};
58 assertEquals(Arrays.asList(row0, row2, row4),
59 toList(RowFilter.matchPattern(testCol,
60 "foo").apply(rows)));
61 assertEquals(Arrays.asList(row1, row3, row5),
62 toList(RowFilter.invert(
63 RowFilter.matchPattern(
64 testCol,
65 "foo")).apply(rows)));
66
67 assertEquals(Arrays.asList(row0, row2, row4),
68 toList(RowFilter.matchPattern(
69 createExpectedRow(COL1, "foo"))
70 .apply(rows)));
71 assertEquals(Arrays.asList(row0, row2),
72 toList(RowFilter.matchPattern(
73 createExpectedRow(COL1, "foo", COL3, "bar"))
74 .apply(rows)));
75 assertEquals(Arrays.asList(row4),
76 toList(RowFilter.matchPattern(
77 createExpectedRow(COL1, "foo", COL3, null))
78 .apply(rows)));
79 assertEquals(Arrays.asList(row0, row4, row5),
80 toList(RowFilter.matchPattern(
81 createExpectedRow(COL2, 13))
82 .apply(rows)));
83 assertEquals(Arrays.asList(row1),
84 toList(RowFilter.matchPattern(row1)
85 .apply(rows)));
86
87 assertEquals(rows, toList(RowFilter.apply(null, rows)));
88 assertEquals(Arrays.asList(row1),
89 toList(RowFilter.apply(RowFilter.matchPattern(row1),
90 rows)));
91 }
92
93 public static List<Row> toList(Iterable<Row> rows)
94 {
95 List<Row> rowList = new ArrayList<Row>();
96 for(Row row : rows) {
97 rowList.add(row);
98 }
99 return rowList;
100 }
101
102 }