Skip to content
This repository has been archived by the owner on Apr 8, 2019. It is now read-only.

Commit

Permalink
Support setting null values in detyped model.
Browse files Browse the repository at this point in the history
  • Loading branch information
nscavell committed Apr 1, 2013
1 parent fd5271e commit cdf6e34
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 0 deletions.
Expand Up @@ -46,6 +46,8 @@ class DmrModel extends DmrModelValue implements Model
@Override
public ModelString set(String value)
{
if (value == null) return asValue(ModelString.class);

return (ModelString) asValue(this.value.set(value));
}

Expand All @@ -70,12 +72,16 @@ public ModelNumber set(double value)
@Override
public ModelNumber set(BigInteger value)
{
if (value == null) return asValue(ModelNumber.class);

return (ModelNumber) asValue(this.value.set(value));
}

@Override
public ModelNumber set(BigDecimal value)
{
if (value == null) return asValue(ModelNumber.class);

return (ModelNumber) asValue(this.value.set(value));
}

Expand Down
Expand Up @@ -66,6 +66,19 @@ public void testGet_Set()
assertEquals(0, modelObject().get("foo").setEmptyList().size());
}

@Test
public void testGet_Set_Null()
{
// String
assertNull(modelObject().get("foo").set((String) null).getValue());

// BigInteger
assertNull(modelObject().get("foo").set((BigInteger) null).getBigInteger());

// BigDecimal
assertNull(modelObject().get("foo").set((BigDecimal) null).getBigDecimal());
}

@Test
public void testSet()
{
Expand All @@ -84,6 +97,22 @@ public void testSet()
assertFalse(modelObject().set("foo", false).get("foo", ModelBoolean.class).getValue());
}

@Test
public void testSet_Null()
{
// String
assertFalse(modelObject().set("foo", (String) null).get("foo").isDefined());
assertNull(modelObject().set("foo", (String) null).get("foo", ModelString.class).getValue());

// BigInteger
assertFalse(modelObject().set("foo", (BigInteger) null).get("foo").isDefined());
assertNull(modelObject().set("foo", (BigInteger) null).get("foo", ModelNumber.class).getBigInteger());

// BigDecimal
assertFalse(modelObject().set("foo", (BigDecimal) null).get("foo").isDefined());
assertNull(modelObject().set("foo", (BigDecimal) null).get("foo", ModelNumber.class).getBigDecimal());
}

@Test
public void testGet_AsValue_Set()
{
Expand Down
Expand Up @@ -53,6 +53,13 @@ public void testString()
assertEquals("foo", newModel().set("foo").getValue());
}

@Test
public void testNullString()
{
assertFalse(newModel().set((String) null).isDefined());
assertNull(newModel().set((String) null).getValue());
}

@Test
public void testNumber()
{
Expand Down Expand Up @@ -84,6 +91,16 @@ public void testNumber()
assertEquals(BigDecimal.valueOf(Math.PI), newModel().set(bd).getBigDecimal());
}

@Test
public void testNullNumber()
{
assertFalse(newModel().set((BigInteger) null).isDefined());
assertNull(newModel().set((BigInteger) null).getBigInteger());

assertFalse(newModel().set((BigDecimal) null).isDefined());
assertNull(newModel().set((BigDecimal) null).getBigDecimal());
}

@Test
public void testBoolean()
{
Expand Down

0 comments on commit cdf6e34

Please sign in to comment.