/** * Test mocks {@link org.openscience.cdk.DynamicFactory.CreationModifier} * and ensures the modify is called once when a registered implementation is * created. */ @Test @SuppressWarnings("unchecked") public void testRegister_WithModifier() { DynamicFactory factory = new DynamicFactory(5); IAtom mock = mock(IAtom.class); DynamicFactory.CreationModifier modifier = mock(DynamicFactory.CreationModifier.class); // ignore compiler warnings here... we're mocking so don't have a set type factory.register(IAtom.class, mock.getClass(), modifier); assertNotNull(factory.ofClass(IAtom.class)); // verify the modify method was called once verify(modifier, times(1)).modify(anyObject()); }
@SuppressWarnings("unchecked") // mocking generics @Test public void testRegister_Constructor_Modifier() throws Exception { DynamicFactory factory = new DynamicFactory(5); DynamicFactory.CreationModifier modifier = mock(DynamicFactory.CreationModifier.class); assertTrue(factory.register(ICDKObject.class, DynamicFactoryTestMock.class.getConstructor(String.class), modifier)); assertNotNull(factory.ofClass(ICDKObject.class, "empty")); // verify the modifier was invoked once verify(modifier).modify(anyObject()); }
/** *{@inheritDoc} */ @Override public T create(Object[] objects) throws InvocationTargetException, IllegalAccessException, InstantiationException { T instance = parent.create(objects); modifier.modify(instance); return instance; }
/** *{@inheritDoc} */ @Override public T create(Object[] objects) throws InvocationTargetException, IllegalAccessException, InstantiationException { T instance = parent.create(objects); modifier.modify(instance); return instance; }