/** * Test method for {@link org.identityconnectors.dbcommon.DatabaseFilterTranslator}. * * @throws Exception */ @Test public void testCompositeFilters() throws Exception { Filter lf = greaterThan(build("count", 4)); Filter rf = lessThan(build("count", 20)); List<SQLParam> expected = new ArrayList<SQLParam>(); expected.add(new SQLParam("count", 4, Types.INTEGER)); expected.add(new SQLParam("count", 20, Types.INTEGER)); // test and Filter f = FilterBuilder.and(lf, rf); DatabaseFilterTranslator tr = getDatabaseFilterTranslator(); List<FilterWhereBuilder> blist = tr.translate(f); assertEquals(1, blist.size()); FilterWhereBuilder b = blist.get(0); assertEquals("count > ? AND count < ?", b.getWhereClause()); // test or assertEquals(expected.size(), b.getParams().size()); f = FilterBuilder.or(lf, rf); DatabaseFilterTranslator tr2 = getDatabaseFilterTranslator(); blist = tr2.translate(f); assertEquals(1, blist.size()); b = blist.get(0); assertEquals("count > ? OR count < ?", b.getWhereClause()); assertEquals(expected.size(), b.getParams().size()); // test xor // assertEquals(expected, actual); }
/** * Test method for {@link org.identityconnectors.dbcommon.DatabaseFilterTranslator}. * * @throws Exception */ @Test public void testCompositeFilterChainAndOrAndOrAnd() throws Exception { Filter f1 = equalTo(build("a", 1)); Filter f2 = equalTo(build("b", 1)); Filter f3 = equalTo(build("c", 1)); Filter f4 = equalTo(build("d", 1)); Filter f5 = equalTo(build("e", 1)); Filter f6 = equalTo(build("f", 1)); List<SQLParam> expected = new ArrayList<SQLParam>(); expected.add(new SQLParam("a", 1)); expected.add(new SQLParam("b", 1)); expected.add(new SQLParam("c", 1)); expected.add(new SQLParam("d", 1)); expected.add(new SQLParam("e", 1)); expected.add(new SQLParam("f", 1)); // test and Filter f12 = FilterBuilder.or(f1, f2); Filter f34 = FilterBuilder.and(f3, f4); Filter f56 = FilterBuilder.or(f5, f6); Filter f1234 = FilterBuilder.and(f12, f34); Filter f = FilterBuilder.or(f1234, f56); DatabaseFilterTranslator tr = getDatabaseFilterTranslator(); List<FilterWhereBuilder> blist = tr.translate(f); assertEquals(1, blist.size()); final FilterWhereBuilder b = blist.get(0); assertEquals( "( ( a = ? OR b = ? ) AND ( c = ? AND d = ? ) ) OR ( e = ? OR f = ? )", b.getWhereClause()); assertEquals(expected, b.getParams()); }
/** * Test method for {@link org.identityconnectors.dbcommon.DatabaseFilterTranslator}. * * @throws Exception */ @Test public void testNotfilter() throws Exception { Filter gt = greaterThan(build("count", 4)); Filter f = FilterBuilder.not(gt); DatabaseFilterTranslator tr = getDatabaseFilterTranslator(); List<FilterWhereBuilder> blist = tr.translate(f); assertEquals(1, blist.size()); final FilterWhereBuilder b = blist.get(0); assertEquals("count <= ?", b.getWhereClause()); List<SQLParam> expected = new ArrayList<SQLParam>(); expected.add(new SQLParam("count", 4, Types.INTEGER)); assertEquals(expected.size(), b.getParams().size()); }
/** * Test method for {@link org.identityconnectors.dbcommon.DatabaseFilterTranslator}. * * @throws Exception */ @Test public void testCompositeFilterChainNotOr() throws Exception { Filter lf = greaterThan(build("count", 4)); Filter rf = lessThan(build("count", 20)); List<SQLParam> expected = new ArrayList<SQLParam>(); expected.add(new SQLParam("count", 4, Types.INTEGER)); expected.add(new SQLParam("count", 20, Types.INTEGER)); // test and Filter f = FilterBuilder.or(lf, rf); Filter not = FilterBuilder.not(f); DatabaseFilterTranslator tr = getDatabaseFilterTranslator(); List<FilterWhereBuilder> blist = tr.translate(not); assertEquals(1, blist.size()); final FilterWhereBuilder b = blist.get(0); assertEquals("count <= ? AND count >= ?", b.getWhereClause()); assertEquals(expected.size(), b.getParams().size()); }
/** * Test method for {@link org.identityconnectors.dbcommon.DatabaseFilterTranslator}. * * @throws Exception */ @Test public void testCompositeFilterChainOrAnd() throws Exception { Filter f1 = greaterThan(build("count", 4)); Filter f2 = lessThan(build("count", 20)); Filter f3 = equalTo(build("count", 10)); List<SQLParam> expected = new ArrayList<SQLParam>(); expected.add(new SQLParam("count", 4, Types.INTEGER)); expected.add(new SQLParam("count", 20, Types.INTEGER)); expected.add(new SQLParam("count", 10, Types.INTEGER)); // test and Filter f12 = FilterBuilder.or(f1, f2); Filter f = FilterBuilder.and(f12, f3); DatabaseFilterTranslator tr = getDatabaseFilterTranslator(); List<FilterWhereBuilder> blist = tr.translate(f); assertEquals(1, blist.size()); final FilterWhereBuilder b = blist.get(0); assertEquals("( count > ? OR count < ? ) AND count = ?", b.getWhereClause()); assertEquals(expected.size(), b.getParams().size()); }
/** * Test method for {@link org.identityconnectors.dbcommon.DatabaseFilterTranslator}. * * @throws Exception */ @Test public void testUnaryFilters() throws Exception { Attribute attr = build("count", 2); Filter filters[] = new Filter[] { equalTo(attr), greaterThan(attr), greaterThanOrEqualTo(attr), lessThan(attr), lessThanOrEqualTo(attr) }; String ops[] = new String[] {"=", ">", ">=", "<", "<="}; List<SQLParam> expected = new ArrayList<SQLParam>(); expected.add(new SQLParam("count", 2, Types.INTEGER)); for (int i = 0; i < filters.length; i++) { DatabaseFilterTranslator tr = getDatabaseFilterTranslator(); List<FilterWhereBuilder> blist = tr.translate(filters[i]); assertEquals(1, blist.size()); final FilterWhereBuilder b = blist.get(0); assertEquals("count " + ops[i] + " ?", b.getWhereClause()); assertEquals(expected.size(), b.getParams().size()); } }