function testToKeyRange_String() {
  var id1 = 'id1';
  var id2 = 'id2';
  var p = new lf.pred.ValuePredicate(tableA['id'], id1, lf.eval.Type.EQ);
  assertTrue(p.isKeyRangeCompatible());
  assertEquals('[id1, id1]', p.toKeyRange().toString());

  p = new lf.pred.ValuePredicate(tableA['id'], id1, lf.eval.Type.GTE);
  assertTrue(p.isKeyRangeCompatible());
  assertEquals('[id1, unbound]', p.toKeyRange().toString());

  p = new lf.pred.ValuePredicate(tableA['id'], id1, lf.eval.Type.GT);
  assertTrue(p.isKeyRangeCompatible());
  assertEquals('(id1, unbound]', p.toKeyRange().toString());

  p = new lf.pred.ValuePredicate(tableA['id'], id1, lf.eval.Type.LTE);
  assertTrue(p.isKeyRangeCompatible());
  assertEquals('[unbound, id1]', p.toKeyRange().toString());

  p = new lf.pred.ValuePredicate(tableA['id'], id1, lf.eval.Type.LT);
  assertTrue(p.isKeyRangeCompatible());
  assertEquals('[unbound, id1)', p.toKeyRange().toString());

  p = new lf.pred.ValuePredicate(
      tableA['id'], [id1, id2], lf.eval.Type.BETWEEN);
  assertTrue(p.isKeyRangeCompatible());
  assertEquals('[id1, id2]', p.toKeyRange().toString());

  p.setComplement(true);
  assertEquals('[unbound, id1),(id2, unbound]', p.toKeyRange().toString());

}
Tests the conversion of a value predicate to a KeyRange for a column of type
STRING.