public void testWritesHiddenFields() {
   SubClassWithHiddenFields o = new SubClassWithHiddenFields();
   reflectionProvider.writeField(o, "b", new Integer(10), null);
   reflectionProvider.writeField(o, "b", new Integer(20), WithFields.class);
   assertEquals(10, o.getChildB());
   assertEquals(20, o.getParentB());
 }
  public void testVisitsEachFieldInHeirarchy() {
    // setup
    Mock mockBlock = new Mock(ReflectionProvider.Visitor.class);

    // expect
    mockBlock
        .expects(once())
        .method("visit")
        .with(eq("a"), eq(int.class), eq(WithFields.class), ANYTHING);
    mockBlock
        .expects(once())
        .method("visit")
        .with(eq("b"), eq(int.class), eq(WithFields.class), ANYTHING);
    mockBlock
        .expects(once())
        .method("visit")
        .with(eq("c"), eq(int.class), eq(SubClassWithFields.class), ANYTHING);

    // execute
    reflectionProvider.visitSerializableFields(
        new SubClassWithFields(), (ReflectionProvider.Visitor) mockBlock.proxy());

    // verify
    mockBlock.verify();
  }
 protected void assertCannotCreate(Class type) {
   try {
     reflectionProvider.newInstance(type);
     fail("Should not have been able to newInstance " + type);
   } catch (ObjectAccessException goodException) {
   }
 }
  public void testVisitsFieldsHiddenBySubclass() {
    // setup
    Mock mockBlock = new Mock(ReflectionProvider.Visitor.class);

    // expect
    mockBlock
        .expects(once())
        .method("visit")
        .with(eq("b"), eq(int.class), eq(WithFields.class), ANYTHING)
        .id("first");
    mockBlock
        .expects(once())
        .method("visit")
        .with(eq("b"), eq(int.class), eq(SubClassWithHiddenFields.class), ANYTHING)
        .after("first");
    mockBlock.expects(once()).method("visit").with(eq("a"), ANYTHING, ANYTHING, ANYTHING);

    // execute
    reflectionProvider.visitSerializableFields(
        new SubClassWithHiddenFields(), (ReflectionProvider.Visitor) mockBlock.proxy());

    // verify
    mockBlock.verify();
  }
 protected void assertCanCreate(Class type) {
   Object result = reflectionProvider.newInstance(type);
   assertEquals(type, result.getClass());
 }