public void testSetBeanContext() throws PropertyVetoException {
BeanContextChild peer = new MockBeanContextChild();
MockBeanContextChildSupport support = new MockBeanContextChildSupport(
peer);
MockPropertyChangeListener l1 = new MockPropertyChangeListener();
MockVetoableChangeListener l2 = new MockVetoableChangeListener();
support.addPropertyChangeListener("beanContext", l1);
support.addVetoableChangeListener("beanContext", l2);
MockBeanContext ctx = new MockBeanContext();
assertNull(support.getBeanContext());
support.clearLastRecords();
l1.clearLastEvent();
l2.clearLastEvent();
support.setBeanContext(null);
assertNull(support.getBeanContext());
assertNull(support.lastInitBeanContext);
assertNull(l1.lastEvent);
assertNull(l2.lastEvent);
support.clearLastRecords();
l1.clearLastEvent();
l2.clearLastEvent();
support.setBeanContext(ctx);
assertSame(ctx, support.getBeanContext());
assertSame(ctx, support.lastInitBeanContext);
assertEquals("beanContext", l1.lastEvent.getPropertyName());
assertNull(l1.lastEvent.getOldValue());
assertSame(ctx, l1.lastEvent.getNewValue());
assertSame(peer, l1.lastEvent.getSource());
assertEquals("beanContext", l2.lastEvent.getPropertyName());
assertNull(l2.lastEvent.getOldValue());
assertSame(ctx, l2.lastEvent.getNewValue());
assertSame(peer, l2.lastEvent.getSource());
support.clearLastRecords();
l1.clearLastEvent();
l2.clearLastEvent();
support.setBeanContext(ctx);
assertSame(ctx, support.getBeanContext());
assertNull(support.lastInitBeanContext);
assertNull(l1.lastEvent);
assertNull(l2.lastEvent);
support.clearLastRecords();
l1.clearLastEvent();
l2.clearLastEvent();
support.setBeanContext(null);
assertNull(support.getBeanContext());
assertNull(support.lastInitBeanContext);
assertSame(ctx, support.lastReleaseBeanContext);
assertEquals("beanContext", l1.lastEvent.getPropertyName());