@Test public void testSetArguments() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { TestBean bean = new TestBean(); TestMethodProperty<String> property = new TestMethodProperty<String>(bean, "name"); Object[] getArgs = property.getGetArgs(); Object[] setArgs = property.getSetArgs(); Field getArgsField = TestMethodProperty.class.getDeclaredField("getArgs"); getArgsField.setAccessible(true); Field setArgsField = TestMethodProperty.class.getDeclaredField("setArgs"); setArgsField.setAccessible(true); Assert.assertSame( "setArguments method sets non-default instance" + " of empty Object array for getArgs", getArgsField.get(property), getArgs); Assert.assertSame( "setArguments method sets non-default instance" + " of empty Object array for setArgs", setArgsField.get(property), setArgs); }
@Test public void testDefaultArgsSerialization() throws IOException, ClassNotFoundException { TestBean bean = new TestBean(); TestMethodProperty<String> property = new TestMethodProperty<String>(bean, "name"); ByteArrayOutputStream sourceOutStream = new ByteArrayOutputStream(); ObjectOutputStream outStream = new ObjectOutputStream(sourceOutStream); outStream.writeObject(property); ObjectInputStream inputStream = new ObjectInputStream(new ByteArrayInputStream(sourceOutStream.toByteArray())); Object red = inputStream.readObject(); TestMethodProperty<?> deserialized = (TestMethodProperty<?>) red; Assert.assertNotNull( "Deseriliation doesn't call setArguments method", deserialized.getGetArgs()); Assert.assertNotNull( "Deseriliation doesn't call setArguments method", deserialized.getSetArgs()); }
@Test public void testDefaultCtor() { TestBean bean = new TestBean(); TestMethodProperty<String> property = new TestMethodProperty<String>(bean, "name"); Object[] getArgs = property.getGetArgs(); Object[] setArgs = property.getSetArgs(); TestBean otherBean = new TestBean(); TestMethodProperty<String> otherProperty = new TestMethodProperty<String>(otherBean, "name"); Assert.assertSame( "setArguments method uses different instance" + " of empty Object array for getArgs", getArgs, otherProperty.getGetArgs()); Assert.assertSame( "setArguments method uses different instance" + " of empty Object array for setArgs", setArgs, otherProperty.getSetArgs()); }