public void testLengthOfNumeric() { IntegerProperty length = IntegerProperty.fromFunction(Function.length(TestModel.BIRTHDAY), "length"); TestModel fetch = database.fetch(TestModel.class, model1.getRowId(), length); assertEquals(Long.toString(model1.getBirthday()).length(), fetch.get(length).intValue()); }
public void testLengthOfString() { IntegerProperty length = IntegerProperty.fromFunction(Function.length(TestModel.FIRST_NAME), "length"); TestModel fetch = database.fetch(TestModel.class, model2.getRowId(), length); assertEquals(5, fetch.get(length).intValue()); }
public void testSubstr() { testSubstrInternal(2, 0); testSubstrInternal(2, 2); testSubstrInternal(3, 4); String literal = "ABC/DEF"; StringProperty prefix = StringProperty.literal(literal.substring(0, literal.indexOf('/') + 1), "prefix"); StringProperty full = StringProperty.literal(literal, "full"); Field<String> fullField = Field.field(full.getName()); Field<String> prefixField = Field.field(prefix.getName()); SquidCursor<?> cursor = database.query(null, Query.select(Function.substr(fullField, Function.add(Function.length(prefixField), 1))) .from(Query.select(full, prefix).as("subquery"))); try { assertTrue(cursor.moveToFirst()); assertEquals("DEF", cursor.getString(0)); } finally { cursor.close(); } }
Function<Integer> longNameFunc = Function.caseWhen(Function.length(TestModel.FIRST_NAME).gt(6)); IntegerProperty hasLongName = IntegerProperty.fromFunction(longNameFunc, "hasLongName"); assertExpectedValues(Query.select(hasLongName).from(TestModel.TABLE).orderBy(TestModel.ID.asc()), hasLongName, 0, 0, 1); Function<String> longNameFunc2 = Function.caseWhen(Function.length(TestModel.FIRST_NAME).gt(6), PASS, FAIL); StringProperty hasLongName2 = StringProperty.fromFunction(longNameFunc2, "hasLongName"); assertExpectedValues(Query.select(hasLongName2).from(TestModel.TABLE).orderBy(TestModel.ID.asc()), hasLongName2,