package org.simpleflatmapper.reflect.test.asm; import org.junit.Test; import org.simpleflatmapper.reflect.Getter; import org.simpleflatmapper.reflect.asm.AsmFactory; import org.simpleflatmapper.reflect.primitive.BooleanGetter; import org.simpleflatmapper.reflect.primitive.ByteGetter; import org.simpleflatmapper.reflect.primitive.CharacterGetter; import org.simpleflatmapper.reflect.primitive.DoubleGetter; import org.simpleflatmapper.reflect.primitive.FloatGetter; import org.simpleflatmapper.reflect.primitive.IntGetter; import org.simpleflatmapper.reflect.primitive.LongGetter; import org.simpleflatmapper.reflect.primitive.ShortGetter; import org.simpleflatmapper.test.beans.DbPrimitiveObjectFields; import org.simpleflatmapper.test.beans.DbPrimitiveObjectWithSetter; import org.simpleflatmapper.test.beans.Foo; import org.simpleflatmapper.test.beans.FooField; import static org.junit.Assert.assertEquals; @SuppressWarnings("SpellCheckingInspection") public class AsmGetterTest { AsmFactory factory = new AsmFactory(Thread.currentThread().getContextClassLoader()); DbPrimitiveObjectWithSetter object = new DbPrimitiveObjectWithSetter(); DbPrimitiveObjectFields objectField = new DbPrimitiveObjectFields(); @Test public void testGet() throws Exception { Getter<Foo, String> getter = factory.createGetter(Foo.class.getMethod("getFoo")); Foo foo = new Foo(); foo.setFoo("foo!"); assertEquals("foo!", getter.get(foo)); } @Test public void testGetBoolean() throws Exception { @SuppressWarnings("unchecked") BooleanGetter<DbPrimitiveObjectWithSetter> getter = (BooleanGetter<DbPrimitiveObjectWithSetter>) factory.createGetter(DbPrimitiveObjectWithSetter.class.getMethod("ispBoolean")); object.setpBoolean(true); assertEquals(true, getter.getBoolean(object)); } @Test public void testGetByte() throws Exception { @SuppressWarnings("unchecked") ByteGetter<DbPrimitiveObjectWithSetter> getter = (ByteGetter<DbPrimitiveObjectWithSetter>) factory.createGetter(DbPrimitiveObjectWithSetter.class.getMethod("getpByte")); object.setpByte((byte) 0xc3); assertEquals((byte)0xc3, getter.getByte(object)); } @Test public void testGetCharacter() throws Exception { @SuppressWarnings("unchecked") CharacterGetter<DbPrimitiveObjectWithSetter> getter = (CharacterGetter<DbPrimitiveObjectWithSetter>) factory.createGetter(DbPrimitiveObjectWithSetter.class.getMethod("getpCharacter")); object.setpCharacter('g'); assertEquals('g', getter.getCharacter(object)); } @Test public void testGetShort() throws Exception { @SuppressWarnings("unchecked") ShortGetter<DbPrimitiveObjectWithSetter> getter = (ShortGetter<DbPrimitiveObjectWithSetter>) factory.createGetter(DbPrimitiveObjectWithSetter.class.getMethod("getpShort")); object.setpShort((short) 33); assertEquals((short)33, getter.getShort(object)); } @Test public void testGetInt() throws Exception { @SuppressWarnings("unchecked") IntGetter<DbPrimitiveObjectWithSetter> getter = (IntGetter<DbPrimitiveObjectWithSetter>) factory.createGetter(DbPrimitiveObjectWithSetter.class.getMethod("getpInt")); object.setpInt(35); assertEquals(35, getter.getInt(object)); } @Test public void testGetLong() throws Exception { @SuppressWarnings("unchecked") LongGetter<DbPrimitiveObjectWithSetter> getter = (LongGetter<DbPrimitiveObjectWithSetter>) factory.createGetter(DbPrimitiveObjectWithSetter.class.getMethod("getpLong")); object.setpLong(35l); assertEquals(35l, getter.getLong(object)); } @Test public void testGetFloat() throws Exception { @SuppressWarnings("unchecked") FloatGetter<DbPrimitiveObjectWithSetter> getter = (FloatGetter<DbPrimitiveObjectWithSetter>) factory.createGetter(DbPrimitiveObjectWithSetter.class.getMethod("getpFloat")); object.setpFloat(3.14f); assertEquals(3.14f, getter.getFloat(object), 0); } @Test public void testGetDouble() throws Exception { @SuppressWarnings("unchecked") DoubleGetter<DbPrimitiveObjectWithSetter> getter = (DoubleGetter<DbPrimitiveObjectWithSetter>) factory.createGetter(DbPrimitiveObjectWithSetter.class.getMethod("getpDouble")); object.setpDouble(3.144); assertEquals(3.144, getter.getDouble(object), 0); } @Test public void testField() throws Exception { Getter<FooField, String> getter = factory.createGetter(FooField.class.getDeclaredField("foo")); FooField foo = new FooField(); foo.foo = ("foo!"); assertEquals("foo!", getter.get(foo)); } @Test public void testFieldBoolean() throws Exception { @SuppressWarnings("unchecked") BooleanGetter<DbPrimitiveObjectFields> getter = (BooleanGetter<DbPrimitiveObjectFields>) factory.createGetter(DbPrimitiveObjectFields.class.getDeclaredField("pBoolean")); objectField.pBoolean = (true); assertEquals(true, getter.getBoolean(objectField)); } @Test public void testFieldByte() throws Exception { @SuppressWarnings("unchecked") ByteGetter<DbPrimitiveObjectFields> getter = (ByteGetter<DbPrimitiveObjectFields>) factory.createGetter(DbPrimitiveObjectFields.class.getDeclaredField("pByte")); objectField.pByte = (byte)0xc3; assertEquals((byte)0xc3, getter.getByte(objectField)); } @Test public void testFieldCharacter() throws Exception { @SuppressWarnings("unchecked") CharacterGetter<DbPrimitiveObjectFields> getter = (CharacterGetter<DbPrimitiveObjectFields>) factory.createGetter(DbPrimitiveObjectFields.class.getDeclaredField("pCharacter")); objectField.pCharacter = 'g'; assertEquals('g', getter.getCharacter(objectField)); } @Test public void testFieldShort() throws Exception { @SuppressWarnings("unchecked") ShortGetter<DbPrimitiveObjectFields> getter = (ShortGetter<DbPrimitiveObjectFields>) factory.createGetter(DbPrimitiveObjectFields.class.getDeclaredField("pShort")); objectField.pShort = (short)33; assertEquals((short)33, getter.getShort(objectField)); } @Test public void testFieldInt() throws Exception { @SuppressWarnings("unchecked") IntGetter<DbPrimitiveObjectFields> getter = (IntGetter<DbPrimitiveObjectFields>) factory.createGetter(DbPrimitiveObjectFields.class.getDeclaredField("pInt")); objectField.pInt = 35; assertEquals(35, getter.getInt(objectField)); } @Test public void testFieldLong() throws Exception { @SuppressWarnings("unchecked") LongGetter<DbPrimitiveObjectFields> getter = (LongGetter<DbPrimitiveObjectFields>) factory.createGetter(DbPrimitiveObjectFields.class.getDeclaredField("pLong")); objectField.pLong = 35l; assertEquals(35l, getter.getLong(objectField)); } @Test public void testFieldFloat() throws Exception { @SuppressWarnings("unchecked") FloatGetter<DbPrimitiveObjectFields> getter = (FloatGetter<DbPrimitiveObjectFields>) factory.createGetter(DbPrimitiveObjectFields.class.getDeclaredField("pFloat")); objectField.pFloat = 3.14f; assertEquals(3.14f, getter.getFloat(objectField), 0); } @Test public void testFieldDouble() throws Exception { @SuppressWarnings("unchecked") DoubleGetter<DbPrimitiveObjectFields> getter = (DoubleGetter<DbPrimitiveObjectFields>) factory.createGetter(DbPrimitiveObjectFields.class.getDeclaredField("pDouble")); objectField.pDouble = 3.144; assertEquals(3.144, getter.getDouble(objectField), 0); } }