@SuppressWarnings("unchecked") public <S1, S2, T> BiInstantiator<S1, S2, T> createBiInstantiator(final Class<?> s1, final Class<?> s2, final InstantiatorDefinition instantiatorDefinition, final Map<Parameter, BiFunction<? super S1, ? super S2, ?>> injections, boolean builderIgnoresNullValues) throws Exception { BiInstantiatorKey instantiatorKey = new BiInstantiatorKey(instantiatorDefinition, injections, s1, s2); Class<? extends BiInstantiator<?, ?, ?>> instantiator = biInstantiatorCache.get(instantiatorKey); Instantiator builderInstantiator = null;
@SuppressWarnings("unchecked") public <S1, S2, T> BiInstantiator<S1, S2, T> createBiInstantiator(final Class<?> s1, final Class<?> s2, final InstantiatorDefinition instantiatorDefinition, final Map<Parameter, BiFunction<? super S1, ? super S2, ?>> injections, boolean builderIgnoresNullValues) throws Exception { BiInstantiatorKey instantiatorKey = new BiInstantiatorKey(instantiatorDefinition, injections, s1, s2); Class<? extends BiInstantiator<?, ?, ?>> instantiator = biInstantiatorCache.get(instantiatorKey); Instantiator builderInstantiator = null;
@Test public void testEqualsOnSameSourceAndTargetValues() throws NoSuchMethodException { BiInstantiatorKey k1 = new BiInstantiatorKey(DbObject.class, String.class, Date.class); BiInstantiatorKey k2 = new BiInstantiatorKey(DbObject.class, String.class, Date.class); assertTrue(k1.equals(k2)); }
@Test public void testEqualsOnSameSourceAndTargetAndInjectParamValues() throws NoSuchMethodException { final InjectedParam[] injectedParameters = createInjectedParameters("param", Getter.class); BiInstantiatorKey k1 = new BiInstantiatorKey(DbObject.class.getConstructor(), injectedParameters, Date.class, String.class); BiInstantiatorKey k2 = new BiInstantiatorKey(DbObject.class.getConstructor(), injectedParameters, Date.class, String.class); assertTrue(k1.equals(k2)); } private InjectedParam[] createInjectedParameters(String param) {
@Test public void testNotEqualsOnDiffSourceAndSameTargetValues() throws NoSuchMethodException { BiInstantiatorKey k1 = new BiInstantiatorKey(DbObject.class, Date.class, String.class); BiInstantiatorKey k2 = new BiInstantiatorKey(DbObject.class, InputStream.class, String.class); BiInstantiatorKey k3 = new BiInstantiatorKey(DbObject.class, null, String.class); BiInstantiatorKey k4 = new BiInstantiatorKey(DbObject.class, Date.class, Object.class); assertFalse(k1.equals(k2)); assertFalse(k1.equals(k3)); assertFalse(k3.equals(k1)); assertFalse(k4.equals(k1)); }
@Test public void testNotEqualsOnSameSourceAndTargetAndDiffInjectParamValues() throws NoSuchMethodException { BiInstantiatorKey k1 = new BiInstantiatorKey(DbObject.class.getConstructor(), createInjectedParameters("param"), Date.class, String.class); BiInstantiatorKey k2 = new BiInstantiatorKey(DbObject.class.getConstructor(), createInjectedParameters("param2"), Date.class, String.class); BiInstantiatorKey k3 = new BiInstantiatorKey(DbObject.class.getConstructor(), null, Date.class, String.class); BiInstantiatorKey k4 = new BiInstantiatorKey(DbObject.class.getConstructor(), createInjectedParameters("param", IntGetter.class), Date.class, String.class); assertFalse(k1.equals(k2)); assertFalse(k1.equals(k3)); assertFalse(k3.equals(k1)); assertFalse(k4.equals(k1)); }
@Test public void testNotEqualsOnDiffClass() throws NoSuchMethodException { BiInstantiatorKey k1 = new BiInstantiatorKey(DbObject.class, Date.class, String.class); assertFalse(k1.equals(new Object())); }
@Test public void testNotEqualsDiffConstructor() throws NoSuchMethodException { BiInstantiatorKey k1 = new BiInstantiatorKey(DbObject.class.getConstructor(), createInjectedParameters("param"), Date.class, String.class); BiInstantiatorKey k2 = new BiInstantiatorKey(DbFinalObject.class.getDeclaredConstructors()[0], createInjectedParameters("param"), Date.class, String.class); BiInstantiatorKey k3 = new BiInstantiatorKey(null, createInjectedParameters( "param"), Date.class, String.class); assertFalse(k1.equals(k2)); assertFalse(k1.equals(k3)); assertFalse(k3.equals(k1)); }
@Test public void testEqualsOnSameKey() throws NoSuchMethodException { BiInstantiatorKey k = new BiInstantiatorKey(DbObject.class, String.class, Date.class); assertTrue(k.equals(k)); }
@Test public void testNotEqualsOnNull() throws NoSuchMethodException { BiInstantiatorKey k1 = new BiInstantiatorKey(DbObject.class, Date.class, String.class); assertFalse(k1.equals(null)); }