public void testTranslateQuerySpecificClassPlus() throws Exception {
    Query expected = new Query();
    QueryClass qc = new QueryClass(Item.class);
    expected.addFrom(qc);
    expected.addToSelect(qc);
    ConstraintSet cs = new ConstraintSet(ConstraintOp.AND);
    QueryField qf2 = new QueryField(qc, "identifier");
    SimpleConstraint sc2 =
        new SimpleConstraint(qf2, ConstraintOp.EQUALS, new QueryValue("fish_42"));
    cs.addConstraint(sc2);
    QueryField qf1 = new QueryField(qc, "className");
    SimpleConstraint sc1 =
        new SimpleConstraint(qf1, ConstraintOp.EQUALS, new QueryValue("Department"));
    cs.addConstraint(sc1);
    expected.setConstraint(cs);

    Query original = new Query();
    QueryClass qc2 = new QueryClass(Department.class);
    original.addFrom(qc2);
    original.addToSelect(qc2);
    QueryField qf3 = new QueryField(qc2, "id");
    SimpleConstraint sc3 =
        new SimpleConstraint(qf3, ConstraintOp.EQUALS, new QueryValue(new Integer(42)));
    original.setConstraint(sc3);

    assertEquals(expected, translator.translateQuery(original));
  }
  public void testTranslateQueryBagConstraint() throws Exception {
    Query expected = new Query();
    QueryClass qc = new QueryClass(Item.class);
    expected.addFrom(qc);
    expected.addToSelect(qc);
    QueryField qf = new QueryField(qc, "identifier");
    BagConstraint bc =
        new BagConstraint(
            qf, ConstraintOp.IN, Arrays.asList(new Object[] {"fish_12", "fish_15", "fish_19"}));
    expected.setConstraint(bc);

    Query original = new Query();
    QueryClass qc2 = new QueryClass(InterMineObject.class);
    original.addFrom(qc2);
    original.addToSelect(qc2);
    QueryField qf2 = new QueryField(qc2, "id");
    BagConstraint bc2 =
        new BagConstraint(
            qf2,
            ConstraintOp.IN,
            Arrays.asList(new Object[] {new Integer(12), new Integer(15), new Integer(19)}));
    original.setConstraint(bc2);

    assertEquals(expected, translator.translateQuery(original));
  }
  public void testTranslateQueryInvalid() throws Exception {
    Query original = new Query();
    QueryClass qc2 = new QueryClass(Company.class);
    original.addFrom(qc2);
    original.addToSelect(qc2);

    try {
      translator.translateQuery(original);
      fail("Expected ObjectStoreException");
    } catch (ObjectStoreException e) {
    }
  }
  public void testTranslateQueryNoConstraint() throws Exception {
    Query expected = new Query();
    QueryClass qc = new QueryClass(Item.class);
    expected.addFrom(qc);
    expected.addToSelect(qc);

    Query original = new Query();
    QueryClass qc2 = new QueryClass(InterMineObject.class);
    original.addFrom(qc2);
    original.addToSelect(qc2);

    assertEquals(expected, translator.translateQuery(original));
  }
  public void testTranslateQuerySpecificClass() throws Exception {
    Query expected = new Query();
    QueryClass qc = new QueryClass(Item.class);
    expected.addFrom(qc);
    expected.addToSelect(qc);
    QueryField qf = new QueryField(qc, "className");
    SimpleConstraint sc =
        new SimpleConstraint(qf, ConstraintOp.EQUALS, new QueryValue("Department"));
    expected.setConstraint(sc);

    Query original = new Query();
    QueryClass qc2 = new QueryClass(Department.class);
    original.addFrom(qc2);
    original.addToSelect(qc2);

    assertEquals(expected, translator.translateQuery(original));
  }
  public void testTranslateQuerySimpleConstraint() throws Exception {
    Query expected = new Query();
    QueryClass qc = new QueryClass(Item.class);
    expected.addFrom(qc);
    expected.addToSelect(qc);
    QueryField qf = new QueryField(qc, "identifier");
    SimpleConstraint sc = new SimpleConstraint(qf, ConstraintOp.EQUALS, new QueryValue("fish_42"));
    expected.setConstraint(sc);

    Query original = new Query();
    QueryClass qc2 = new QueryClass(InterMineObject.class);
    original.addFrom(qc2);
    original.addToSelect(qc2);
    QueryField qf2 = new QueryField(qc2, "id");
    SimpleConstraint sc2 =
        new SimpleConstraint(qf2, ConstraintOp.EQUALS, new QueryValue(new Integer(42)));
    original.setConstraint(sc2);

    assertEquals(expected, translator.translateQuery(original));
  }