@Test public void getSizeAndCardinality() throws EditStateException, IllegalEditException { // add a listener to the size beed IntegerBeed<ActualLongEvent> sizeBeed = $unionBeed.getSize(); sizeBeed.addListener($listener5); assertNull($listener5.$event); // check the size assertEquals($unionBeed.getSize().getLong(), 0L); assertEquals($unionBeed.getCardinality().getLong(), 0L); // add source $unionBeed.setSource($source); // {1,2} union {3} union {0,1,3} // check the size assertEquals($unionBeed.getSize().getLong(), 4L); assertEquals($unionBeed.getCardinality().getLong(), 4L); // check the listener assertNotNull($listener5.$event); assertEquals($listener5.$event.getSource(), sizeBeed); assertEquals($listener5.$event.getOldLong(), 0L); assertEquals($listener5.$event.getNewLong(), 4L); assertEquals($listener5.$event.getEdit(), null); // reset $listener5.reset(); assertNull($listener5.$event); // remove elements SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>> sourceEdit = new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>($source); sourceEdit.addElementToRemove($setBeed1); sourceEdit.perform(); // {3} union {0,1,3} // check the size assertEquals($unionBeed.getSize().getLong(), 3L); assertEquals($unionBeed.getCardinality().getLong(), 3L); // check the listener assertNotNull($listener5.$event); assertEquals($listener5.$event.getSource(), sizeBeed); assertEquals($listener5.$event.getOldLong(), 4L); assertEquals($listener5.$event.getNewLong(), 3L); assertEquals($listener5.$event.getEdit(), sourceEdit); // reset $listener5.reset(); assertNull($listener5.$event); // add elements EditableSetBeed<WellBeanBeed> setBeed = new EditableSetBeed<WellBeanBeed>($owner); addElement(setBeed, $well1); sourceEdit = new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>($source); sourceEdit.addElementToAdd(setBeed); sourceEdit.perform(); // {3} union {0,1,3} union {1} // check the size assertEquals($unionBeed.getSize().getLong(), 3L); assertEquals($unionBeed.getCardinality().getLong(), 3L); // check the listener (size has not changed, so no events should be sent) assertNull($listener5.$event); // reset $listener5.reset(); assertNull($listener5.$event); // add elements sourceEdit = new SetEdit<SetBeed<WellBeanBeed, SetEvent<WellBeanBeed>>>($source); sourceEdit.addElementToAdd($setBeed1); sourceEdit.perform(); // {3} union {0,1,3} union {1} union {1,2} // check the size assertEquals($unionBeed.getSize().getLong(), 4L); assertEquals($unionBeed.getCardinality().getLong(), 4L); // check the listener assertNotNull($listener5.$event); assertEquals($listener5.$event.getSource(), sizeBeed); assertEquals($listener5.$event.getOldLong(), 3L); assertEquals($listener5.$event.getNewLong(), 4L); assertEquals($listener5.$event.getEdit(), sourceEdit); }