/** * Copyright 2004-2016 Riccardo Solmi. All rights reserved. * This file is part of the Whole Platform. * * The Whole Platform is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The Whole Platform is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with the Whole Platform. If not, see <http://www.gnu.org/licenses/>. */ package org.whole.lang.util; import static org.whole.lang.environment.reflect.EnvironmentEntityDescriptorEnum.BooleanData; import static org.whole.lang.environment.reflect.EnvironmentEntityDescriptorEnum.ContainmentTuple; import static org.whole.lang.environment.reflect.EnvironmentEntityDescriptorEnum.DoubleData; import static org.whole.lang.environment.reflect.EnvironmentEntityDescriptorEnum.IntData; import static org.whole.lang.environment.reflect.EnvironmentEntityDescriptorEnum.ObjectData; import static org.whole.lang.environment.reflect.EnvironmentEntityDescriptorEnum.StringData; import static org.whole.lang.models.reflect.ModelsEntityDescriptorEnum.Model; import static org.whole.lang.models.reflect.ModelsEntityDescriptorEnum.ModelDeclaration; import static org.whole.lang.util.DataTypeUtils.box; import static org.whole.lang.util.DataTypeUtils.unbox; import java.text.DateFormat; import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.List; import static org.junit.Assert.*; import org.junit.BeforeClass; import org.junit.Test; import org.whole.lang.bindings.BindingManagerFactory; import org.whole.lang.commons.model.Resolver; import org.whole.lang.commons.reflect.CommonsEntityDescriptorEnum; import org.whole.lang.model.IEntity; import org.whole.lang.models.factories.ModelsEntityFactory; import org.whole.lang.models.model.IModelsEntity; import org.whole.lang.models.model.Model; import org.whole.lang.models.reflect.ModelsTemplateManager; import org.whole.lang.parsers.DataTypeParsers; import org.whole.lang.parsers.IDataTypeParser; import org.whole.lang.reflect.EntityDescriptor; import org.whole.lang.reflect.ReflectionFactory; import org.whole.lang.testentities.factories.TestEntitiesEntityFactory; import org.whole.lang.testentities.model.EnumTestEntityEnum; import org.whole.lang.testentities.reflect.TestEntitiesEntityDescriptorEnum; import org.whole.lang.testentities.reflect.TestEntitiesLanguageDeployer; /** * @author Riccardo Solmi */ public class DataTypeUtilsTest { @BeforeClass public static void deployWholePlatform() { ReflectionFactory.deployWholePlatform(); ReflectionFactory.deploy(TestEntitiesLanguageDeployer.class); } private void assertGenericParseUnparseRoundtrip(IEntity e, String value) { EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PERSISTENCE); assertEquals(value, parser.unparse(ed, parser.parse(ed, value))); } @Test public void testNonDataEntityFailure() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createSimpleTestEntity(); try { DataTypeUtils.getAsString(e, null); //any DataTypeParsers fail(); } catch (IllegalArgumentException iae) { } try { DataTypeUtils.setFromString(e, "any", null); //any DataTypeParsers fail(); } catch (IllegalArgumentException iae) { } try { DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.SimpleTestEntity, "any"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testBooleanData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createBooleanTestEntity(true); assertGenericParseUnparseRoundtrip(e, "false"); assertEquals("true", DataTypeUtils.getAsPresentationString(e)); assertEquals("true", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "FALSE"); assertFalse(e.wBooleanValue()); DataTypeUtils.setFromPersistenceString(e, "True"); assertTrue(e.wBooleanValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.BooleanTestEntity, "true"); assertTrue(e.wBooleanValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.BooleanTestEntity, "true"); assertTrue(e.wBooleanValue()); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseBoolean(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } try { parser.parseBoolean(ed, "0"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testByteData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createByteTestEntity((byte) 27); assertGenericParseUnparseRoundtrip(e, "32"); assertEquals("27", DataTypeUtils.getAsPresentationString(e)); assertEquals("27", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "35"); assertEquals((byte) 35, e.wByteValue()); DataTypeUtils.setFromPersistenceString(e, "56"); assertEquals((byte) 56, e.wByteValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Byte.MIN_VALUE)); assertEquals(Byte.MIN_VALUE, e.wByteValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Byte.MAX_VALUE)); assertEquals(Byte.MAX_VALUE, e.wByteValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.ByteTestEntity, "18"); assertEquals((byte) 18, e.wByteValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.ByteTestEntity, "76"); assertEquals((byte) 76, e.wByteValue()); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseByte(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } try { parser.parseByte(ed, "200"); fail(); } catch (IllegalArgumentException iae) { } try { parser.parseByte(ed, "2.5f"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testCharData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createCharTestEntity('a'); assertGenericParseUnparseRoundtrip(e, "x"); assertEquals("a", DataTypeUtils.getAsPresentationString(e)); assertEquals("a", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "b"); assertEquals('b', e.wCharValue()); DataTypeUtils.setFromPersistenceString(e, "c"); assertEquals('c', e.wCharValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Character.MIN_VALUE)); assertEquals(Character.MIN_VALUE, e.wCharValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Character.MAX_VALUE)); assertEquals(Character.MAX_VALUE, e.wCharValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.CharTestEntity, "d"); assertEquals('d', e.wCharValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.CharTestEntity, "e"); assertEquals('e', e.wCharValue()); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseChar(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } try { parser.parseChar(ed, "200"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testDoubleData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createDoubleTestEntity(1.2d); assertGenericParseUnparseRoundtrip(e, "54.35"); assertEquals("1.2", DataTypeUtils.getAsPresentationString(e)); assertEquals("1.2", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "12.3d"); assertEquals(12.3d, e.wDoubleValue(), .01d); DataTypeUtils.setFromPresentationString(e, "37.32"); assertEquals(37.32d, e.wDoubleValue(), .01d); DataTypeUtils.setFromPersistenceString(e, "23.4d"); assertEquals(23.4d, e.wDoubleValue(), .01d); DataTypeUtils.setFromPresentationString(e, "200"); assertEquals(200d, e.wDoubleValue(), .01d); DataTypeUtils.setFromPresentationString(e, "2.5f"); assertEquals(2.5d, e.wDoubleValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Double.NaN)); assertEquals(Double.NaN, e.wDoubleValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Double.NEGATIVE_INFINITY)); assertEquals(Double.NEGATIVE_INFINITY, e.wDoubleValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Double.POSITIVE_INFINITY)); assertEquals(Double.POSITIVE_INFINITY, e.wDoubleValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Double.MIN_VALUE)); assertEquals(Double.MIN_VALUE, e.wDoubleValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Double.MAX_VALUE)); assertEquals(Double.MAX_VALUE, e.wDoubleValue(), .01d); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.DoubleTestEntity, "12.3d"); assertEquals(12.3d, e.wDoubleValue(), .01d); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.DoubleTestEntity, "23.4d"); assertEquals(23.4d, e.wDoubleValue(), .01d); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseDouble(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testFloatData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createFloatTestEntity(1.2f); assertGenericParseUnparseRoundtrip(e, "36.3"); assertEquals("1.2", DataTypeUtils.getAsPresentationString(e)); assertEquals("1.2", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "12.3f"); assertEquals(12.3f, e.wFloatValue(), .01d); DataTypeUtils.setFromPresentationString(e, "37.32"); assertEquals(37.32f, e.wFloatValue(), .01d); DataTypeUtils.setFromPersistenceString(e, "23.4f"); assertEquals(23.4f, e.wFloatValue(), .01d); DataTypeUtils.setFromPresentationString(e, "200"); assertEquals(200f, e.wFloatValue(), .01d); DataTypeUtils.setFromPresentationString(e, "2.5d"); assertEquals(2.5f, e.wFloatValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Float.NaN)); assertEquals(Float.NaN, e.wFloatValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Float.NEGATIVE_INFINITY)); assertEquals(Float.NEGATIVE_INFINITY, e.wFloatValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Float.POSITIVE_INFINITY)); assertEquals(Float.POSITIVE_INFINITY, e.wFloatValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Float.MIN_VALUE)); assertEquals(Float.MIN_VALUE, e.wFloatValue(), .01d); DataTypeUtils.setFromPresentationString(e, String.valueOf(Float.MAX_VALUE)); assertEquals(Float.MAX_VALUE, e.wFloatValue(), .01d); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.FloatTestEntity, "12.3f"); assertEquals(12.3f, e.wFloatValue(), .01d); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.FloatTestEntity, "23.4f"); assertEquals(23.4f, e.wFloatValue(), .01d); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseFloat(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testIntData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createIntTestEntity(123); assertGenericParseUnparseRoundtrip(e, "4231"); assertEquals("123", DataTypeUtils.getAsPresentationString(e)); assertEquals("123", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "3324"); assertEquals(3324, e.wIntValue()); DataTypeUtils.setFromPersistenceString(e, "532"); assertEquals(532, e.wIntValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Integer.MIN_VALUE)); assertEquals(Integer.MIN_VALUE, e.wIntValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Integer.MAX_VALUE)); assertEquals(Integer.MAX_VALUE, e.wIntValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.IntTestEntity, "3324"); assertEquals(3324, e.wIntValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.IntTestEntity, "983"); assertEquals(983, e.wIntValue()); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseInt(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } try { parser.parseInt(ed, "-3000000000"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testLongData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createLongTestEntity(123l); assertGenericParseUnparseRoundtrip(e, "486432"); assertEquals("123", DataTypeUtils.getAsPresentationString(e)); assertEquals("123", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "3324"); assertEquals(3324l, e.wLongValue()); DataTypeUtils.setFromPersistenceString(e, "532"); assertEquals(532l, e.wLongValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Long.MIN_VALUE)); assertEquals(Long.MIN_VALUE, e.wLongValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Long.MAX_VALUE)); assertEquals(Long.MAX_VALUE, e.wLongValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.LongTestEntity, "3324"); assertEquals(3324l, e.wLongValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.LongTestEntity, "983"); assertEquals(983l, e.wLongValue()); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseLong(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } try { parser.parseLong(ed, "2.0f"); fail(); } catch (IllegalArgumentException iae) { } try { parser.parseLong(ed, "-10000000000000000000"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testShortData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createShortTestEntity((short) 123); assertGenericParseUnparseRoundtrip(e, "4132"); assertEquals("123", DataTypeUtils.getAsPresentationString(e)); assertEquals("123", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "123"); assertEquals((short) 123, e.wShortValue()); DataTypeUtils.setFromPersistenceString(e, "532"); assertEquals((short) 532, e.wShortValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Short.MIN_VALUE)); assertEquals(Short.MIN_VALUE, e.wShortValue()); DataTypeUtils.setFromPresentationString(e, String.valueOf(Short.MAX_VALUE)); assertEquals(Short.MAX_VALUE, e.wShortValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.ShortTestEntity, "3324"); assertEquals((short) 3324, e.wShortValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.ShortTestEntity, "983"); assertEquals((short) 983, e.wShortValue()); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseShort(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } try { parser.parseShort(ed, "-38000"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testStringData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createStringTestEntity("abc"); assertGenericParseUnparseRoundtrip(e, "blabla"); assertEquals("abc", DataTypeUtils.getAsPresentationString(e)); assertEquals("abc", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "def"); assertEquals("def", e.wStringValue()); DataTypeUtils.setFromPersistenceString(e, "ghi"); assertEquals("ghi", e.wStringValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.StringTestEntity, "def"); assertEquals("def", e.wStringValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.StringTestEntity, "ghi"); assertEquals("ghi", e.wStringValue()); } @Test public void testDateData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); Date date = c.getTime(); String eDate = DateFormat.getDateInstance(DateFormat.SHORT).format(date); String eDate2 = DateFormat.getDateInstance(DateFormat.LONG).format(date); String eDate3 = DateFormat.getDateInstance(DateFormat.MEDIUM).format(date); String pDate = StringUtils.toExtendedISO8601DateTime(date); IEntity e = ef.createDateTestEntity(date); assertGenericParseUnparseRoundtrip(e, pDate); assertEquals(eDate, DataTypeUtils.getAsPresentationString(e)); assertEquals(pDate, DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, eDate2); assertEquals(date, e.wDateValue()); DataTypeUtils.setFromPresentationString(e, eDate3); assertEquals(date, e.wDateValue()); DataTypeUtils.setFromPresentationString(e, eDate); assertEquals(date, e.wDateValue()); DataTypeUtils.setFromPersistenceString(e, pDate); assertEquals(date, e.wDateValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.DateTestEntity, eDate); assertEquals(date, e.wDateValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.DateTestEntity, pDate); assertEquals(date, e.wDateValue()); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseDate(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testEnumData() { TestEntitiesEntityFactory ef = TestEntitiesEntityFactory.instance; IEntity e = ef.createEnumTestEntity(EnumTestEntityEnum.four); assertGenericParseUnparseRoundtrip(e, "three"); assertEquals("four", DataTypeUtils.getAsPresentationString(e)); assertEquals("four", DataTypeUtils.getAsPersistenceString(e)); DataTypeUtils.setFromPresentationString(e, "One"); assertEquals(EnumTestEntityEnum.one, e.wEnumValue()); DataTypeUtils.setFromPersistenceString(e, "four"); assertEquals(EnumTestEntityEnum.four, e.wEnumValue()); e = DataTypeUtils.createFromPresentationString( TestEntitiesEntityDescriptorEnum.EnumTestEntity, "TWO"); assertEquals(EnumTestEntityEnum.two, e.wEnumValue()); e = DataTypeUtils.createFromPersistenceString( TestEntitiesEntityDescriptorEnum.EnumTestEntity, "five"); assertEquals(EnumTestEntityEnum.five, e.wEnumValue()); final EntityDescriptor<?> ed = e.wGetEntityDescriptor(); IDataTypeParser parser = DataTypeUtils.getDataTypeParser(ed, DataTypeParsers.PRESENTATION); try { parser.parseEnumValue(ed, "string"); fail(); } catch (IllegalArgumentException iae) { } } @Test public void testNullBoxUnbox() throws Exception { assertNull(unbox(box(null, ObjectData), Object.class)); assertNull(unbox(box(null, StringData), String.class)); assertNotNull(unbox(box(null, CommonsEntityDescriptorEnum.Resolver), Resolver.class)); assertNotNull(unbox(box(null, CommonsEntityDescriptorEnum.Any), List.class)); assertNotNull(unbox(box(null, ContainmentTuple), List.class)); } @Test public void testNullUnboxTpPrimitive() throws Exception { IEntity nullBoxed = box(null, IntData); try { unbox(nullBoxed, int.class); fail(); } catch (IllegalArgumentException e) { } } @Test public void testDataBoxUnbox() throws Exception { assertEquals(10, unbox(box(10, IntData), int.class)); assertEquals(10, ((Long) (unbox(box(10L, DoubleData), long.class))).intValue()); assertEquals(true, unbox(box(true, BooleanData), Boolean.class)); List<String> list = Collections.emptyList(); assertEquals(list, unbox(box(list, ObjectData), Object.class)); IEntity entity = ModelsTemplateManager.instance().create("Actions"); assertEquals(entity, unbox(box(entity, ObjectData), IEntity.class)); assertEquals(entity, unbox(box(entity, Model), Model.class)); entity = ModelsEntityFactory.instance.createSimpleEntity(); assertEquals(entity, unbox(box(entity, ModelDeclaration), IModelsEntity.class)); } @Test public void testBoxToIncompatibleEntityType() throws Exception { try { box(true, DoubleData); fail(); } catch (IllegalArgumentException e) { } try { box(Collections.<String>emptyList(), DoubleData); fail(); } catch (IllegalArgumentException e) { } try { box(Collections.<String>emptyList(), Model); fail(); } catch (IllegalArgumentException e) { } try { box(ModelsEntityFactory.instance.createSimpleEntity(), Model); fail(); } catch (IllegalArgumentException e) { } } @Test public void testUnboxToIncompatibleDataType() throws Exception { try { unbox(BindingManagerFactory.instance.createValue(true), Double.class); fail(); } catch (IllegalArgumentException e) { } try { unbox(BindingManagerFactory.instance.createValue(Collections.<String>emptyList()), Double.class); fail(); } catch (IllegalArgumentException e) { } try { unbox(ModelsTemplateManager.instance().create("Actions"), Double.class); fail(); } catch (IllegalArgumentException e) { } try { unbox(ModelsEntityFactory.instance.createSimpleEntity(), Model.class); fail(); } catch (IllegalArgumentException e) { } } }