Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/main/java/core/basesyntax/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package core.basesyntax;

public class Calculator {
public double calculate(double firstNumber, double secondNumber, char operation) {
switch (operation) {
case '+':
return firstNumber + secondNumber;
case '-':
return firstNumber - secondNumber;
case '*':
return firstNumber * secondNumber;
case '/':
if (secondNumber == 0) {
throw new ArithmeticException("You can't divide by 0!");
}
return firstNumber / secondNumber;
case '^':
return Math.pow(firstNumber, secondNumber);
default:
throw new IllegalArgumentException("This operation " + operation
+ " doesn't exist");
}
}
}
8 changes: 0 additions & 8 deletions src/main/java/core/basesyntax/HelloWorld.java

This file was deleted.

230 changes: 230 additions & 0 deletions src/test/java/core/basesyntax/CalculatorTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,230 @@
package core.basesyntax;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

import org.junit.jupiter.api.Test;

public class CalculatorTest {
private static final double DELTA = 0.000001;
private static Calculator calculator = new Calculator();
private double expected;
private double actual;

@Test
public void calculator_positiveAddition_Ok() {
expected = 8;
actual = calculator.calculate(1,7,'+');
assertEquals(expected, actual);
}

@Test
public void calculator_negativeAddition_Ok() {
expected = -8;
actual = calculator.calculate(-1,-7,'+');
assertEquals(expected, actual);
}

@Test
public void calculator_positiveNegativeAddition_Ok() {
expected = 6;
actual = calculator.calculate(-1,7,'+');
assertEquals(expected, actual);
expected = -6;
actual = calculator.calculate(1,-7,'+');
assertEquals(expected, actual);
}

@Test
public void calculator_differentPlacesZeroAddition_Ok() {
expected = 1;
actual = calculator.calculate(1,0,'+');
assertEquals(expected, actual);
actual = calculator.calculate(0,1,'+');
assertEquals(expected, actual);
}

@Test
public void calculator_maxMinValuesAddition_Ok() {
expected = Double.POSITIVE_INFINITY;
actual = calculator.calculate(Double.MAX_VALUE, Double.MAX_VALUE,'+');
assertEquals(expected, actual, DELTA);
expected = 0;
actual = calculator.calculate(Double.MIN_VALUE, Double.MIN_VALUE,'+');
assertEquals(expected, actual, DELTA);
}

@Test
public void calculator_positiveSubtraction_Ok() {
expected = -6;
actual = calculator.calculate(1,7,'-');
assertEquals(expected, actual);
}

@Test
public void calculator_negativeSubtraction_Ok() {
expected = 6;
actual = calculator.calculate(-1,-7,'-');
assertEquals(expected, actual);
}

@Test
public void calculator_positiveNegativeSubtraction_Ok() {
expected = 8;
actual = calculator.calculate(1,-7,'-');
assertEquals(expected, actual);
expected = -8;
actual = calculator.calculate(-1,7,'-');
assertEquals(expected, actual);
}

@Test
public void calculator_differentPlacesZeroSubtraction_Ok() {
expected = 1;
actual = calculator.calculate(1,0,'-');
assertEquals(expected, actual);
expected = -1;
actual = calculator.calculate(0,1,'-');
assertEquals(expected, actual);
}

@Test
public void calculator_maxMinValuesSubtraction_Ok() {
expected = 0;
actual = calculator.calculate(Double.MAX_VALUE, Double.MAX_VALUE,'-');
assertEquals(expected, actual, DELTA);
expected = 0;
actual = calculator.calculate(Double.MIN_VALUE, Double.MIN_VALUE,'-');
assertEquals(expected, actual, DELTA);
}

@Test
public void calculator_positiveMultiplication_Ok() {
expected = 7;
actual = calculator.calculate(1,7,'*');
assertEquals(expected, actual);
}

@Test
public void calculator_negativeMultiplication_Ok() {
expected = 7;
actual = calculator.calculate(-1,-7,'*');
assertEquals(expected, actual);
}

@Test
public void calculator_positiveNegativeMultiplication_Ok() {
expected = -7;
actual = calculator.calculate(-1,7,'*');
assertEquals(expected, actual);
expected = -7;
actual = calculator.calculate(1,-7,'*');
assertEquals(expected, actual);
}

@Test
public void calculator_differentPlacesZeroMultiplication_Ok() {
expected = 0;
actual = calculator.calculate(1,0,'*');
assertEquals(expected, actual);
expected = 0;
actual = calculator.calculate(0,7,'*');
assertEquals(expected, actual);
}

@Test
public void calculator_maxMinValuesMultiplication_Ok() {
expected = Double.POSITIVE_INFINITY;
actual = calculator.calculate(Double.MAX_VALUE, Double.MAX_VALUE,'*');
assertEquals(expected, actual);
expected = 0;
actual = calculator.calculate(Double.MIN_VALUE, Double.MIN_VALUE,'*');
assertEquals(expected, actual);
}

@Test
public void calculator_positiveDivision_Ok() {
expected = 2;
actual = calculator.calculate(4,2,'/');
assertEquals(expected, actual);
}

@Test
public void calculator_negativeDivision_Ok() {
expected = 2;
actual = calculator.calculate(-4,-2,'/');
assertEquals(expected, actual);
}

@Test
public void calculator_positiveNegativeDivision_Ok() {
expected = -2;
actual = calculator.calculate(-4,2,'/');
assertEquals(expected, actual);
expected = -2;
actual = calculator.calculate(4,-2,'/');
assertEquals(expected, actual);
}

@Test
public void calculator_firstPlacesZeroDivision_Ok() {
expected = 0;
actual = calculator.calculate(0,2,'/');
assertEquals(expected, actual);
}

@Test
public void calculator_secondPlacesZeroDivision_NotOk() {
assertThrows(ArithmeticException.class,
() -> calculator.calculate(2,0,'/'));
}

@Test
public void calculator_maxMinValueDivision_Ok() {
expected = 1;
actual = calculator.calculate(Double.MAX_VALUE, Double.MAX_VALUE,'/');
assertEquals(expected, actual);
expected = 1;
actual = calculator.calculate(Double.MIN_VALUE, Double.MIN_VALUE,'/');
assertEquals(expected, actual);
}

@Test
public void calculator_raisingPositiveToPositiveOrNegative_Ok() {
expected = 64;
actual = calculator.calculate(4,3,'^');
assertEquals(expected, actual);
expected = 0.0625;
actual = calculator.calculate(4,-2,'^');
assertEquals(expected, actual, DELTA);
}

@Test
public void calculator_raisingNegativeToPositiveOrNegative_Ok() {
expected = 16;
actual = calculator.calculate(-4,2,'^');
assertEquals(expected, actual);
expected = 0.0625;
actual = calculator.calculate(-4,-2,'^');
assertEquals(expected, actual, DELTA);
}

@Test
public void calculator_raisingValueToZero_Ok() {
expected = 1;
actual = calculator.calculate(2,0,'^');
assertEquals(expected, actual, DELTA);
}

@Test
public void calculator_raisingZeroToPower_Ok() {
expected = 0;
actual = calculator.calculate(0,2,'^');
assertEquals(expected, actual);
}

@Test
public void calculator_illegalOperation_notOk() {
assertThrows(IllegalArgumentException.class, () -> calculator.calculate(1,2,'&'));
}
}
8 changes: 0 additions & 8 deletions src/test/java/core/basesyntax/HelloWorldTest.java

This file was deleted.