1   package com.changenode;
2   
3   import org.junit.jupiter.api.Test;
4   import org.slf4j.Logger;
5   import org.slf4j.LoggerFactory;
6   
7   import static org.assertj.core.api.Assertions.assertThat;
8   
9   public class CalculatorTest {
10  
11      private Calculator calculator = new Calculator();
12  
13      private static final Logger LOG = LoggerFactory.getLogger(CalculatorTest.class);
14  
15      
16      @Test
17      public void testAdd() {
18          assertThat(calculator.value()).isZero();
19          calculator.add(5);
20          assertThat(calculator.value()).isEqualTo(5);
21      }
22  
23      @Test
24      public void testSubtract() {
25          assertThat(calculator.value()).isZero();
26          calculator.subtract(5);
27          assertThat(calculator.value()).isEqualTo(-5);
28  
29      }
30  
31      @Test
32      public void testMultiply() {
33          assertThat(calculator.value()).isZero();
34  
35          calculator.add(5).multiply(2);
36  
37          assertThat(calculator.value()).isEqualTo(10);
38  
39      }
40  
41      @Test
42      public void testDivide() {
43          assertThat(calculator.value()).isZero();
44  
45          calculator.add(10).divide(2);
46  
47          assertThat(calculator.value()).isEqualTo(5);
48  
49      }
50  
51      
52  
53  
54  
55  
56      @Test()
57      public void testDivideByZero() {
58          calculator.divide(2);
59          LOG.info("Divide by zero results in... {}", calculator.value());
60          assertThat(calculator.value()).isEqualTo(0);
61      }
62  
63      @Test
64      public void testAbitrary() {
65          assertThat(calculator.arbitrarilyComplexMethod("bar", 0, null, null, null)).isEqualTo(0);
66  
67          assertThat(calculator.arbitrarilyComplexMethodPart2("bar", 0, null, null, null)).isEqualTo(0);
68      }
69  
70  }