package org.jtwig.render.expression.calculator.operation.binary;
import com.google.common.base.Optional;
import org.jtwig.render.expression.calculator.operation.binary.calculators.BinaryOperationCalculator;
import org.junit.Before;
import org.junit.Test;
import java.util.HashMap;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
public class BinaryOperationCalculatorSelectorTest {
private final HashMap<Class<? extends BinaryOperator>, BinaryOperationCalculator> calculatorMap = new HashMap<>();
private BinaryOperationCalculatorSelector underTest = new BinaryOperationCalculatorSelector(calculatorMap);
@Before
public void setUp() throws Exception {
calculatorMap.clear();
}
@Test
public void calculatorForWhenNotPresent() throws Exception {
BinaryOperator operator = mock(BinaryOperator.class);
Optional<BinaryOperationCalculator> result = underTest.calculatorFor(operator);
assertThat(result.isPresent(), is(false));
}
@Test
public void calculatorForWhenPresent() throws Exception {
BinaryOperator operator = mock(BinaryOperator.class);
BinaryOperationCalculator binaryOperationCalculator = mock(BinaryOperationCalculator.class);
calculatorMap.put(operator.getClass(), binaryOperationCalculator);
Optional<BinaryOperationCalculator> result = underTest.calculatorFor(operator);
assertThat(result.isPresent(), is(true));
assertSame(binaryOperationCalculator, result.get());
}
}