From bfca1525acf21405cc389143b04bb1376f9ebfe5 Mon Sep 17 00:00:00 2001 From: valerpan Date: Wed, 29 Jul 2026 18:40:44 +0300 Subject: [PATCH] Initial commit for unit-master from Calculator template --- .idea/vcs.xml | 7 +++ pom.xml | 27 +++++++++++ src/main/java/Main.java | 15 ++++++ src/main/java/model/Calculator.java | 51 ++++++++++++++++++++ src/main/java/model/CalculatorException.java | 23 +++++++++ src/test/java/NegativeCalculatorTest.java | 4 ++ src/test/java/PositiveCalculatorTest.java | 4 ++ 7 files changed, 131 insertions(+) create mode 100644 .idea/vcs.xml create mode 100644 pom.xml create mode 100644 src/main/java/Main.java create mode 100644 src/main/java/model/Calculator.java create mode 100644 src/main/java/model/CalculatorException.java create mode 100644 src/test/java/NegativeCalculatorTest.java create mode 100644 src/test/java/PositiveCalculatorTest.java 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