001package com.changenode; 002 003import org.junit.jupiter.api.Test; 004import org.slf4j.Logger; 005import org.slf4j.LoggerFactory; 006 007import static org.assertj.core.api.Assertions.assertThat; 008 009public class CalculatorTest { 010 011 private Calculator calculator = new Calculator(); 012 013 private static final Logger LOG = LoggerFactory.getLogger(CalculatorTest.class); 014 015 // TODO Add some more javadoc here! 016 @Test 017 public void testAdd() { 018 assertThat(calculator.value()).isZero(); 019 calculator.add(5); 020 assertThat(calculator.value()).isEqualTo(5); 021 } 022 023 @Test 024 public void testSubtract() { 025 assertThat(calculator.value()).isZero(); 026 calculator.subtract(5); 027 assertThat(calculator.value()).isEqualTo(-5); 028 029 } 030 031 @Test 032 public void testMultiply() { 033 assertThat(calculator.value()).isZero(); 034 035 calculator.add(5).multiply(2); 036 037 assertThat(calculator.value()).isEqualTo(10); 038 039 } 040 041 @Test 042 public void testDivide() { 043 assertThat(calculator.value()).isZero(); 044 045 calculator.add(10).divide(2); 046 047 assertThat(calculator.value()).isEqualTo(5); 048 049 } 050 051 /** 052 * @see <a href= 053 * "http://stackoverflow.com/questions/14137989/java-division-by-zero-doesnt-throw-an-arithmeticexception-why" 054 * >Why doesn't divide by zero return an error?</a> 055 */ 056 @Test() 057 public void testDivideByZero() { 058 calculator.divide(2); 059 LOG.info("Divide by zero results in... {}", calculator.value()); 060 assertThat(calculator.value()).isEqualTo(0); 061 } 062 063 @Test 064 public void testAbitrary() { 065 assertThat(calculator.arbitrarilyComplexMethod("bar", 0, null, null, null)).isEqualTo(0); 066 067 assertThat(calculator.arbitrarilyComplexMethodPart2("bar", 0, null, null, null)).isEqualTo(0); 068 } 069 070}