commit bfca1525acf21405cc389143b04bb1376f9ebfe5 Author: valerpan Date: Wed Jul 29 18:40:44 2026 +0300 Initial commit for unit-master from Calculator template diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..07a289c --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a130341 --- /dev/null +++ b/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + org.example + unit-test + 1.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000..9b56d81 --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,15 @@ +import model.Calculator; + +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + String[] params = readParams(); + System.out.println(Calculator.execute(params)); + } + + private static String[] readParams() { + // todo: считать из консоли данные, затем вернуть их в виде массива строк + return null; + } +} diff --git a/src/main/java/model/Calculator.java b/src/main/java/model/Calculator.java new file mode 100644 index 0000000..a7050eb --- /dev/null +++ b/src/main/java/model/Calculator.java @@ -0,0 +1,51 @@ +package model; + +public class Calculator { + + public static String execute(String[] params) { + String operator = params[0]; + double value1; + double value2; + // todo: доработать код, чтобы все негативные тесты проходили успешно + value1 = Double.parseDouble(params[1]); + value2 = Double.parseDouble(params[2]); + double result = calculate(operator, value1, value2); + if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) { + throw new CalculatorException("Превышен порог значений"); + } + return String.valueOf(result); + } + + private static double calculate(String operator, double a, double b) { + switch (operator) { + case "+": + return add(a, b); + case "-": + return subst(a, b); + case "*": + return mult(a, b); + case "/": + return div(a, b); + } + throw new CalculatorException("Неизвестный оператор"); + } + + private static double add(double a, double b) { + return a + b; + } + + private static double subst(double a, double b) { + return a - b; + } + + private static double div(double a, double b) { + if (b == 0) { + throw new CalculatorException(); + } + return a / b; + } + + private static double mult(double a, double b) { + return a * b; + } +} diff --git a/src/main/java/model/CalculatorException.java b/src/main/java/model/CalculatorException.java new file mode 100644 index 0000000..e4b9132 --- /dev/null +++ b/src/main/java/model/CalculatorException.java @@ -0,0 +1,23 @@ +package model; + +public class CalculatorException extends RuntimeException { + + private static final long serialVersionUID = -1135355618665392597L; + private static final String MESSAGE = "Ошибка вычисления!"; + + public CalculatorException() { + super(MESSAGE); + } + + public CalculatorException(String str) { + super(MESSAGE + " " + str); + } + + public CalculatorException(Throwable e) { + super(MESSAGE, e); + } + + public CalculatorException(String str, Throwable e) { + super(MESSAGE + " " + str, e); + } +} diff --git a/src/test/java/NegativeCalculatorTest.java b/src/test/java/NegativeCalculatorTest.java new file mode 100644 index 0000000..9be4aec --- /dev/null +++ b/src/test/java/NegativeCalculatorTest.java @@ -0,0 +1,4 @@ +public class NegativeCalculatorTest { + // todo: @DataProvider for negativeData + // todo: negative test +} diff --git a/src/test/java/PositiveCalculatorTest.java b/src/test/java/PositiveCalculatorTest.java new file mode 100644 index 0000000..ce88925 --- /dev/null +++ b/src/test/java/PositiveCalculatorTest.java @@ -0,0 +1,4 @@ +public class PositiveCalculatorTest { + // todo: @DataProvider for positiveData + // todo: positive test +} \ No newline at end of file