public void testDefaultProjection() { final String BIRTHDAY = "birthday"; final String IS_HAPPY = "isHappy"; final List<Field<?>> columns = new ArrayList<>(); columns.add(TestModel.FIRST_NAME); columns.add(TestModel.LAST_NAME); columns.add(TestModel.BIRTHDAY.as(BIRTHDAY)); columns.add(Field.field(IS_HAPPY)); final String[] columnNames = {TestModel.FIRST_NAME.getName(), TestModel.LAST_NAME.getName(), BIRTHDAY, IS_HAPPY}; ProjectionMap map = new ProjectionMap(); map.put(TestModel.FIRST_NAME); map.put(TestModel.LAST_NAME); map.put(BIRTHDAY, TestModel.BIRTHDAY); map.put(IS_HAPPY); // test names the same String[] names = map.getDefaultProjectionNames(); assertTrue(Arrays.deepEquals(columnNames, names)); // test fields the same List<Field<?>> fields = map.getDefaultProjection(); assertTrue(fields.equals(columns)); }
private void testContentValuesTypes(final boolean useSetValues) { final ContentValues values = new ContentValues(); values.put(TestModel.FIRST_NAME.getName(), "A"); values.put(TestModel.LAST_NAME.getName(), "B"); values.put(TestModel.BIRTHDAY.getName(), 1); // Putting an int where long expected values.put(TestModel.IS_HAPPY.getName(), 1); // Putting an int where boolean expected assertTrue(checkTypesOn.get(TestModel.FIRST_NAME.getName()) instanceof String); assertTrue(checkTypesOn.get(TestModel.LAST_NAME.getName()) instanceof String); assertTrue(checkTypesOn.get(TestModel.BIRTHDAY.getName()) instanceof Long); assertTrue(checkTypesOn.get(TestModel.IS_HAPPY.getName()) instanceof Boolean);
public void testValueCoercionAppliesToAllValues() { // Make sure the model is initialized with values and setValues ContentValues values = new ContentValues(); values.put(TestModel.FIRST_NAME.getName(), "A"); TestModel model = new TestModel(); model.readPropertiesFromContentValues(values, TestModel.FIRST_NAME); model.setFirstName("B"); model.getDefaultValues().put(TestModel.IS_HAPPY.getName(), 1); assertTrue(model.isHappy()); // Test default values model.getDatabaseValues().put(TestModel.IS_HAPPY.getName(), 0); assertFalse(model.isHappy()); // Test database values model.getSetValues().put(TestModel.IS_HAPPY.getName(), 1); assertTrue(model.isHappy()); // Test set values model.getDefaultValues().put(TestModel.IS_HAPPY.getName(), true); // Reset the static variable } }
public void testProjectionMapAliasing() { assertEquals("blahTestName", TestSubqueryModel.TEST_NAME.getName()); assertEquals("blahName", TestSubqueryModel.EMPLOYEE_NAME.getName()); assertEquals("luckyNumber", TestSubqueryModel.TEST_LUCKY_NUMBER.getName()); assertEquals("blahEnum", TestSubqueryModel.TEST_ENUM.getName()); assertEquals("uppercase_name", TestSubqueryModel.UPPERCASE_NAME.getName()); SquidCursor<TestSubqueryModel> cursor = null; try { cursor = database.query(TestSubqueryModel.class, Query.select().from(TestSubqueryModel.SUBQUERY)); cursor.moveToFirst(); TestSubqueryModel model = new TestSubqueryModel(cursor); // queried model should have "uppercase_name" assertEquals(e1.getName().toUpperCase(), model.getUppercaseName()); TestModel testModel = model.mapToModel(new TestModel()); Employee employeeModel = model.mapToModel(new Employee()); assertEquals(t1.getFirstName(), testModel.getFirstName()); assertEquals(e1.getName(), employeeModel.getName()); assertEquals(t1.getLuckyNumber(), testModel.getLuckyNumber()); assertEquals(t1.getSomeEnum(), testModel.getSomeEnum()); // neither mapped model should have "uppercase_name" assertFalse(t1.containsValue(TestSubqueryModel.UPPERCASE_NAME)); assertFalse(e1.containsValue(TestSubqueryModel.UPPERCASE_NAME)); } finally { if (cursor != null) { cursor.close(); } } }
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(); } }
public void testContainsNonNullValueMethod() { TestModel model = new TestModel(); model.setFirstName("Test"); model.markSaved(); // Move values from set values into database values assertEquals("Test", model.getFirstName()); assertFalse(model.fieldIsDirty(TestModel.FIRST_NAME)); assertNull(model.getSetValues()); assertTrue(model.containsNonNullValue(TestModel.FIRST_NAME)); model.setFirstName(null); // Assert that despite the presence of a non-null value in the database values, containsNonNullValue // defers to the "active" setValue. assertNotNull(model.getDatabaseValues().get(TestModel.FIRST_NAME.getName())); assertNull(model.getFirstName()); assertFalse(model.containsNonNullValue(TestModel.FIRST_NAME)); }
public void testConstructFromMap() { ProjectionMap base = new ProjectionMap(); base.put(TestModel.FIRST_NAME); base.put(TestModel.LAST_NAME); base.put("blah"); ProjectionMap copy = new ProjectionMap(base); copy.put("blah2"); assertEquals(TestModel.FIRST_NAME, copy.get(TestModel.FIRST_NAME.getName())); assertEquals(TestModel.LAST_NAME, copy.get(TestModel.LAST_NAME.getName())); assertNotNull(copy.get("blah")); assertNotNull(copy.get("blah2")); assertNull(base.get("blah2")); } }
public void testPutUsesFieldName() { ProjectionMap map = new ProjectionMap(); map.put(TestModel.FIRST_NAME); assertEquals(TestModel.FIRST_NAME, map.get(TestModel.FIRST_NAME.getName())); }