コード例 #1
0
  @Test
  public void testNullRequiredParameter2() throws Exception {
    Expression e1 = ExpressionFactory.exp("abc = 3 and x = $a");

    Map params = new HashMap();
    params.put("a", null);
    Expression e2 = e1.params(params, false);

    // null must be preserved
    assertEquals(ExpressionFactory.exp("abc = 3 and x = null"), e2);
  }
コード例 #2
0
 @Test
 public void testNulls() {
   Expression e1 = ExpressionFactory.exp("x = null");
   Expression e2 = e1.params(Collections.EMPTY_MAP, true);
   assertNotNull(e2);
   TstTraversalHandler.compareExps(e1, e2);
 }
コード例 #3
0
  @Test
  public void testNullOptionalParameter() throws Exception {
    Expression e = ExpressionFactory.exp("abc = 3 and x = $a");

    Expression e1 = e.params(Collections.EMPTY_MAP, true);

    // $a must be pruned
    assertEquals(ExpressionFactory.exp("abc = 3"), e1);

    Map params = new HashMap();
    params.put("a", null);
    Expression e2 = e.params(params, true);

    // null must be preserved
    assertEquals(ExpressionFactory.exp("abc = 3 and x = null"), e2);
  }
コード例 #4
0
 @Test
 public void testParams_Positional_Repeating() {
   Expression e = ExpressionFactory.exp("a = $a or x = $x and y = $x");
   Expression ep = e.paramsArray("A", 5);
   assertNotSame(e, ep);
   assertEquals("(a = \"A\") or ((x = 5) and (y = 5))", ep.toString());
 }
コード例 #5
0
  @Test
  public void testParams_NullHandling_CAY847() {
    Expression e = ExpressionFactory.exp("X = $x");

    e = e.params(Collections.singletonMap("x", null));
    assertEquals("X = null", e.toString());
  }
コード例 #6
0
  @Test
  public void testNoParams1_FromString() {
    Expression e1 = ExpressionFactory.exp("k1 = $test");
    Expression e2 = e1.params(Collections.EMPTY_MAP);

    // all expression nodes must be pruned
    assertNull(e2);
  }
コード例 #7
0
  /** Tests how parameter substitution algorithm works on an expression with no parameters. */
  @Test
  public void testInParameter() throws Exception {
    Expression inExp = ExpressionFactory.exp("k1 in $test");
    Expression e1 = ExpressionFactory.exp("k1 in ('a', 'b')");

    Expression transformed =
        inExp.params(Collections.singletonMap("test", new Object[] {"a", "b"}));
    TstTraversalHandler.compareExps(e1, transformed);

    // just in case manually check params
    DataObject o1 = new CayenneDataObject();
    o1.writePropertyDirectly("k1", "a");
    assertTrue(transformed.match(o1));

    DataObject o2 = new CayenneDataObject();
    o2.writePropertyDirectly("k1", "x");
    assertFalse(transformed.match(o2));
  }
コード例 #8
0
  @Test
  public void testParams2_FromString() {
    Expression e1 = ExpressionFactory.exp("k1 like $test");

    Map<String, Object> map = new HashMap<String, Object>();
    map.put("test", "xyz");
    Expression e2 = e1.params(map, false);
    assertNotNull(e2);
    assertEquals(2, e2.getOperandCount());
    assertEquals(Expression.LIKE, e2.getType());
    assertEquals("xyz", e2.getOperand(1));
  }
コード例 #9
0
 @SuppressWarnings("serial")
 @Test(expected = ExpressionException.class)
 public void testParams_Map_Partial_NoPrune() {
   Expression e = ExpressionFactory.exp("a = $a or x = $x");
   e.params(
       new HashMap<String, Object>() {
         {
           put("a", "A");
         }
       },
       false);
 }
コード例 #10
0
 @Test
 public void testParams_Map_Partial_Prune() {
   Expression e = ExpressionFactory.exp("a = $a or x = $x");
   @SuppressWarnings("serial")
   Expression ep =
       e.params(
           new HashMap<String, Object>() {
             {
               put("a", "A");
             }
           });
   assertNotSame(e, ep);
   assertEquals("(a = \"A\")", ep.toString());
 }
コード例 #11
0
  @Test
  public void testInParameter_AsValues() throws Exception {
    Expression inExp = ExpressionFactory.exp("k1 in ($ap, $bp)");

    String e1String = "k1 in (\"a\", \"b\")";
    Expression e1 = ExpressionFactory.exp(e1String);

    Map<String, Object> params = new HashMap<String, Object>();
    params.put("ap", "a");
    params.put("bp", "b");
    Expression transformed = inExp.params(params);
    TstTraversalHandler.compareExps(e1, transformed);

    assertEquals(e1String, transformed.toString());

    // just in case manually check params
    DataObject o1 = new CayenneDataObject();
    o1.writePropertyDirectly("k1", "a");
    assertTrue(transformed.match(o1));

    DataObject o2 = new CayenneDataObject();
    o2.writePropertyDirectly("k1", "x");
    assertFalse(transformed.match(o2));
  }
コード例 #12
0
  @Test
  public void testNoParams3_FromString() {
    Expression e1 =
        ExpressionFactory.exp("k1 = $test1 or k2 = $test2 or k3 = $test3 or k4 = $test4");

    Map<String, Object> params = new HashMap<String, Object>();
    params.put("test4", "123");
    Expression e2 = e1.params(params);

    // some expression nodes must be pruned
    assertNotNull(e2);
    assertEquals(2, e2.getOperandCount());
    assertEquals("123", e2.getOperand(1));
    assertEquals("k4", ((Expression) e2.getOperand(0)).getOperand(0));
  }
コード例 #13
0
 @Test
 public void testCopy3_FromString() {
   Expression e1 = ExpressionFactory.exp("(k1 / 2) = (k2 * 2)");
   Expression e2 = e1.params(Collections.EMPTY_MAP);
   TstTraversalHandler.compareExps(e1, e2);
 }
コード例 #14
0
 @Test(expected = ExpressionException.class)
 public void testParams_Positional_NoParams() {
   Expression e = ExpressionFactory.exp("a = $a or x = $x");
   e.paramsArray();
 }
コード例 #15
0
 @Test
 public void testParams_Positional_InAsValues() throws Exception {
   Expression inExp = ExpressionFactory.exp("k1 in ($ap, $bp)");
   Expression transformed = inExp.paramsArray("a", "b");
   assertEquals("k1 in (\"a\", \"b\")", transformed.toString());
 }
コード例 #16
0
  @Test(expected = ExpressionException.class)
  public void testNullRequiredParameter1() throws Exception {
    Expression e1 = ExpressionFactory.exp("abc = 3 and x = $a");

    e1.params(Collections.EMPTY_MAP, false);
  }
コード例 #17
0
 /** Tests how parameter substitution algorithm works on an expression with no parameters. */
 @Test
 public void testCopy2_FromString() {
   Expression e1 = ExpressionFactory.exp("(k1 = 'v1' and k2 = 'v2' and k3 = 'v3') or (k1 = 'v1')");
   Expression e2 = e1.params(Collections.EMPTY_MAP);
   TstTraversalHandler.compareExps(e1, e2);
 }
コード例 #18
0
  /** Tests how parameter substitution algorithm works on an expression with no parameters. */
  @Test(expected = ExpressionException.class)
  public void testFailOnMissingParams_FromString() {
    Expression e1 = ExpressionFactory.exp("k1 = $test or k2 = 'v2' or k3 = 'v3'");

    e1.params(Collections.EMPTY_MAP, false);
  }