diff --git a/.gitignore b/.gitignore index e673575a..62eaec4d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -.idea/ +.idea/ target/ \ No newline at end of file diff --git a/README.md b/README.md index 28781328..d0970dc4 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,24 @@ -# Шаблон для практической работы по теме Java Basics - -1. Создайте ветку feature и продолжите разработку в ней -1. Пройдитесь по всей структуре приложения, посмотрите какие классы в нем имеются. -1. Запустите тесты (как их запускать написано в разделе "Правила выполнения практических заданий" на сайте курса обучения). -1. Удостоверьтесь, что тесты падают (так и должно быть, поскольку задание на текущий момент не реализовано). -1. Некоторые тесты могут состоять из нескольких подтестов (проверка запускается на разных наборах данных). -Список тестов можно раскрывать и нажимая на них увидеть, на каком наборе данных тест упал. -Например "Тест метода MathService.sum(int[] values)" - при открытии первого набора данных (первого подтеста) напишет следующую ошибку. -Это значит, что для входных данных в виде пустого массива ([]) ожидаемый результат должен быть равен 0 (сумма числе в пустом массиве), а сейчас возвращается -1. - -```java -org.opentest4j.AssertionFailedError: Для входных параметров: [] ==> -Expected :0 -Actual :-1 -``` - -6. Найдите класс SimpleMathService, посмотрите какие методы в нем имеются. -1. Пройдитесь по каждому методу, прочитайте, что он должен выполнять (описание над методом). -1. Начните писать реализацию методов сверху вниз, попутно запуская тесты и проверяя, что метод написан корректно. -1. Например, как только вы напишите реализацию для метода "int compare(int value1, int value2)", у вас должен начать -успешно выполняться тест "Тест метода MathService.compare(int value1, int value2)". -1. Напишите реализацию для всех методов. Удостоверьтесь, что все тесты проходят. +# Шаблон для практической работы по теме Java Basics + +1. Создайте ветку feature и продолжите разработку в ней +1. Пройдитесь по всей структуре приложения, посмотрите какие классы в нем имеются. +1. Запустите тесты (как их запускать написано в разделе "Правила выполнения практических заданий" на сайте курса обучения). +1. Удостоверьтесь, что тесты падают (так и должно быть, поскольку задание на текущий момент не реализовано). +1. Некоторые тесты могут состоять из нескольких подтестов (проверка запускается на разных наборах данных). +Список тестов можно раскрывать и нажимая на них увидеть, на каком наборе данных тест упал. +Например "Тест метода MathService.sum(int[] values)" - при открытии первого набора данных (первого подтеста) напишет следующую ошибку. +Это значит, что для входных данных в виде пустого массива ([]) ожидаемый результат должен быть равен 0 (сумма числе в пустом массиве), а сейчас возвращается -1. + +```java +org.opentest4j.AssertionFailedError: Для входных параметров: [] ==> +Expected :0 +Actual :-1 +``` + +6. Найдите класс SimpleMathService, посмотрите какие методы в нем имеются. +1. Пройдитесь по каждому методу, прочитайте, что он должен выполнять (описание над методом). +1. Начните писать реализацию методов сверху вниз, попутно запуская тесты и проверяя, что метод написан корректно. +1. Например, как только вы напишите реализацию для метода "int compare(int value1, int value2)", у вас должен начать +успешно выполняться тест "Тест метода MathService.compare(int value1, int value2)". +1. Напишите реализацию для всех методов. Удостоверьтесь, что все тесты проходят. 1. Запуште все изменения на гитхаб и создайте pull-request в ветку master \ No newline at end of file diff --git a/java-basics-template.iml b/java-basics-template.iml new file mode 100644 index 00000000..ae5a95a3 --- /dev/null +++ b/java-basics-template.iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index f094807c..b47f23de 100644 --- a/pom.xml +++ b/pom.xml @@ -1,42 +1,42 @@ - - - 4.0.0 - - ru.epam.izh.rd.online - java-basics-template - 1.0-SNAPSHOT - - - 1.8 - 5.5.2 - - - - - org.junit.jupiter - junit-jupiter - ${junit.jupiter.version} - test - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.0.0-M3 - - - org.apache.maven.plugins - maven-compiler-plugin - - ${java.version} - ${java.version} - - - - + + + 4.0.0 + + ru.epam.izh.rd.online + java-basics-template + 1.0-SNAPSHOT + + + 1.8 + 5.5.2 + + + + + org.junit.jupiter + junit-jupiter + ${junit.jupiter.version} + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M3 + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + + \ No newline at end of file diff --git a/src/main/java/com/epam/izh/rd/online/JavaBasics.java b/src/main/java/com/epam/izh/rd/online/JavaBasics.java index 9752bdda..e7dbbf3d 100644 --- a/src/main/java/com/epam/izh/rd/online/JavaBasics.java +++ b/src/main/java/com/epam/izh/rd/online/JavaBasics.java @@ -1,7 +1,7 @@ -package com.epam.izh.rd.online; - -public class JavaBasics { - public static void main(String[] args) { - - } -} +package com.epam.izh.rd.online; + +public class JavaBasics { + public static void main(String[] args) { + + } +} diff --git a/src/main/java/com/epam/izh/rd/online/service/Applicant.java b/src/main/java/com/epam/izh/rd/online/service/Applicant.java index f4fc9f25..ee84248d 100644 --- a/src/main/java/com/epam/izh/rd/online/service/Applicant.java +++ b/src/main/java/com/epam/izh/rd/online/service/Applicant.java @@ -1,4 +1,4 @@ -package com.epam.izh.rd.online.service; - -public class Applicant { -} +package com.epam.izh.rd.online.service; + +public class Applicant { +} diff --git a/src/main/java/com/epam/izh/rd/online/service/MathService.java b/src/main/java/com/epam/izh/rd/online/service/MathService.java index 58fd8375..283af022 100644 --- a/src/main/java/com/epam/izh/rd/online/service/MathService.java +++ b/src/main/java/com/epam/izh/rd/online/service/MathService.java @@ -1,24 +1,24 @@ -package com.epam.izh.rd.online.service; - -public interface MathService { - - int compare(int value1, int value2); - - int maxFrom(int value1, int value2); - - int maxFrom(int[] values); - - int sum(int[] values); - - int[] getEvenDigits(int[] values); - - long calcFactorial(int initialVal); - - long calcFibonacci(int number); - - int[] sort(int[] values); - - boolean isPrimary(int number); - - int[] reverseArray(int[] values); -} +package com.epam.izh.rd.online.service; + +public interface MathService { + + int compare(int value1, int value2); + + int maxFrom(int value1, int value2); + + int maxFrom(int[] values); + + int sum(int[] values); + + int[] getEvenDigits(int[] values); + + long calcFactorial(int initialVal); + + long calcFibonacci(int number); + + int[] sort(int[] values); + + boolean isPrimary(int number); + + int[] reverseArray(int[] values); +} diff --git a/src/main/java/com/epam/izh/rd/online/service/Mortgage.java b/src/main/java/com/epam/izh/rd/online/service/Mortgage.java index ece42117..ca88fa5c 100644 --- a/src/main/java/com/epam/izh/rd/online/service/Mortgage.java +++ b/src/main/java/com/epam/izh/rd/online/service/Mortgage.java @@ -1,68 +1,68 @@ -package com.epam.izh.rd.online.service; - -import java.math.BigDecimal; -import java.util.List; - -/** - * Ипотечный займ (упрощенный вариант) - */ -public class Mortgage { - - /** - * Продукт (например Семейная ипотека) - */ - private Product product; - - /** - * Размер заемных средств - */ - private BigDecimal amount; - - /** - * Размер ипотечной ставки - */ - private BigDecimal interestRate; - - /** - * Срок кредитования - */ - private Integer period; - - /** - * Список продавцов - */ - private List sellers; - - - /** - * Список заявителей - */ - private List applicants; - - /** - * Объект недвижимости - */ - private Realty realty; - - public Product getProduct() { - return product; - } - - public void setProduct(Product product) { - this.product = product; - } - - public BigDecimal getAmount() { - return amount; - } - - //.... геттеры и сеттеры для полей - - public Realty getRealty() { - return realty; - } - - public void setRealty(Realty realty) { - this.realty = realty; - } -} +package com.epam.izh.rd.online.service; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Ипотечный займ (упрощенный вариант) + */ +public class Mortgage { + + /** + * Продукт (например Семейная ипотека) + */ + private Product product; + + /** + * Размер заемных средств + */ + private BigDecimal amount; + + /** + * Размер ипотечной ставки + */ + private BigDecimal interestRate; + + /** + * Срок кредитования + */ + private Integer period; + + /** + * Список продавцов + */ + private List sellers; + + + /** + * Список заявителей + */ + private List applicants; + + /** + * Объект недвижимости + */ + private Realty realty; + + public Product getProduct() { + return product; + } + + public void setProduct(Product product) { + this.product = product; + } + + public BigDecimal getAmount() { + return amount; + } + + //.... геттеры и сеттеры для полей + + public Realty getRealty() { + return realty; + } + + public void setRealty(Realty realty) { + this.realty = realty; + } +} diff --git a/src/main/java/com/epam/izh/rd/online/service/PaymentScheduleRequest.java b/src/main/java/com/epam/izh/rd/online/service/PaymentScheduleRequest.java index d41161ce..c5863b7c 100644 --- a/src/main/java/com/epam/izh/rd/online/service/PaymentScheduleRequest.java +++ b/src/main/java/com/epam/izh/rd/online/service/PaymentScheduleRequest.java @@ -1,49 +1,49 @@ -package com.epam.izh.rd.online.service; - -import java.math.BigDecimal; -import java.util.List; - -/** - * Запрос для расчета графика платежей - */ -public class PaymentScheduleRequest { - - /** - * Размер заемных средств - */ - private BigDecimal amount; - - /** - * Размер ипотечной ставки - */ - private BigDecimal interestRate; - - /** - * Срок кредитования - */ - private Integer period; - - public BigDecimal getAmount() { - return amount; - } - - public void setAmount(BigDecimal amount) { - this.amount = amount; - } - - public BigDecimal getInterestRate() { - return interestRate; - } - - public void setInterestRate(BigDecimal interestRate) { - this.interestRate = interestRate; - } - - public Integer getPeriod() { - return period; - } - - public void setPeriod(Integer period) { - this.period = period; - } -} +package com.epam.izh.rd.online.service; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Запрос для расчета графика платежей + */ +public class PaymentScheduleRequest { + + /** + * Размер заемных средств + */ + private BigDecimal amount; + + /** + * Размер ипотечной ставки + */ + private BigDecimal interestRate; + + /** + * Срок кредитования + */ + private Integer period; + + public BigDecimal getAmount() { + return amount; + } + + public void setAmount(BigDecimal amount) { + this.amount = amount; + } + + public BigDecimal getInterestRate() { + return interestRate; + } + + public void setInterestRate(BigDecimal interestRate) { + this.interestRate = interestRate; + } + + public Integer getPeriod() { + return period; + } + + public void setPeriod(Integer period) { + this.period = period; + } +} diff --git a/src/main/java/com/epam/izh/rd/online/service/Product.java b/src/main/java/com/epam/izh/rd/online/service/Product.java index 1ecb2f61..a25909e1 100644 --- a/src/main/java/com/epam/izh/rd/online/service/Product.java +++ b/src/main/java/com/epam/izh/rd/online/service/Product.java @@ -1,4 +1,4 @@ -package com.epam.izh.rd.online.service; - -public class Product { -} +package com.epam.izh.rd.online.service; + +public class Product { +} diff --git a/src/main/java/com/epam/izh/rd/online/service/Realty.java b/src/main/java/com/epam/izh/rd/online/service/Realty.java index 700eda50..5b3a7c10 100644 --- a/src/main/java/com/epam/izh/rd/online/service/Realty.java +++ b/src/main/java/com/epam/izh/rd/online/service/Realty.java @@ -1,4 +1,4 @@ -package com.epam.izh.rd.online.service; - -public class Realty { -} +package com.epam.izh.rd.online.service; + +public class Realty { +} diff --git a/src/main/java/com/epam/izh/rd/online/service/Seller.java b/src/main/java/com/epam/izh/rd/online/service/Seller.java index 23e5fdc5..f0f0bd22 100644 --- a/src/main/java/com/epam/izh/rd/online/service/Seller.java +++ b/src/main/java/com/epam/izh/rd/online/service/Seller.java @@ -1,4 +1,4 @@ -package com.epam.izh.rd.online.service; - -public class Seller { -} +package com.epam.izh.rd.online.service; + +public class Seller { +} diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java index 29215765..c35ab7c1 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java @@ -1,109 +1,183 @@ -package com.epam.izh.rd.online.service; - -public class SimpleMathService implements MathService { - - /** - * Метод возвращает 0, если value1 = value2. - * Метод возвращает -1, если value1 < value2. - * Метод возвращает 1, если value1 > value2. - * - * Например для (-1, -1) метод должен вернуть 0; - * Например для (-3, -1) метод должен вернуть -1; - * Например для (3, 1) метод должен вернуть 1; - */ - @Override - public int compare(int value1, int value2) { - return -2; - } - - /** - * Метод возвращает максимальное число из пары. - * Например для списка (-1, 2) метод должен вернуть 2 - */ - @Override - public int maxFrom(int value1, int value2) { - return -1; - } - - /** - * Метод возвращает максимальное число из переданного массива. - * Например для списка {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть 22 - */ - @Override - public int maxFrom(int[] values) { - return -1; - } - - /** - * Метод возвращает сумму чисел массива. - * Например для списка {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть 30 - */ - @Override - public int sum(int[] values) { - return -1; - } - - /** - * Метод фильтрует массив, оставляя только четные числа. - * Например для списка {-1, -3, 4, 8, 5, 22, 17} метод должен вернуть {4, 8, 22} - */ - @Override - public int[] getEvenDigits(int[] values) { - return new int[]{}; - } - - /** - * Метод считает факториал из заданного числа. - * Например для числа 5 метод должен вернуть 120. - * Факториал 0 должен быть равен 1. - */ - @Override - public long calcFactorial(int initialVal) { - return -1L; - } - - /** - * Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи. - * - * Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих. - * Ряд начинается 0 и 1. - * Пример 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ... - * - * Для числа 9 метод должен вернуть 34 - * Для числа 0 метод должен вернуть 0 - */ - @Override - public long calcFibonacci(int number) { - return -1L; - } - - /** - * Метод возвращает отсортированный по возрастанию массив. - * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть {-5, -3, -1, 4, 5, 8, 22} - */ - @Override - public int[] sort(int[] values) { - return new int[]{}; - } - - /** - * Метод определяет, является ли заданное число простым. - * Простое число - число, которое делится только на 1 и на само себя. - * - * Например для числа 22 вернется false, а для числа 23 true. - */ - @Override - public boolean isPrimary(int number) { - return false; - } - - /** - * Метод возвращает массив, в котором элементы расположены в обратном порядке. - * - * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1} - */ - @Override - public int[] reverseArray(int[] values) { - return new int[]{}; - } -} +package com.epam.izh.rd.online.service; + +import java.util.Collections; + +public class SimpleMathService implements MathService { + + /** + * Метод возвращает 0, если value1 = value2. + * Метод возвращает -1, если value1 < value2. + * Метод возвращает 1, если value1 > value2. + * + * Например для (-1, -1) метод должен вернуть 0; + * Например для (-3, -1) метод должен вернуть -1; + * Например для (3, 1) метод должен вернуть 1; + */ + @Override + public int compare(int value1, int value2) { + if (value1 == value2) { + return 0; + } else if (value1 < value2) { + return -1; + } else { + return 1; + } + } + + /** + * Метод возвращает максимальное число из пары. + * Например для списка (-1, 2) метод должен вернуть 2 + */ + @Override + public int maxFrom(int value1, int value2) { + if (value1 >= value2) { + return value1; + } else { + return value2; + } + } + + /** + * Метод возвращает максимальное число из переданного массива. + * Например для списка {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть 22 + */ + @Override + public int maxFrom(int[] values) { + int max = values[0]; + for (int value : values) { + if (value > max) { + max = value; + } + } + return max; + } + + /** + * Метод возвращает сумму чисел массива. + * Например для списка {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть 30 + */ + @Override + public int sum(int[] values) { + int sum = 0; + for (int element : values) { + sum += element; + } + return sum; + } + + /** + * Метод фильтрует массив, оставляя только четные числа. + * Например для списка {-1, -3, 4, 8, 5, 22, 17} метод должен вернуть {4, 8, 22} + */ + @Override + public int[] getEvenDigits(int[] values) { + int evenArrLength = 0; + for (int value : values) { + if (value % 2 == 0) { + evenArrLength++; + } + } + int[] arr = new int[evenArrLength]; + + for (int i = 0, j = 0; i < values.length; i++) { + if (values[i] % 2 == 0) { + arr[j++] = values[i]; + } + } + return arr; + } + + /** + * Метод считает факториал из заданного числа. + * Например для числа 5 метод должен вернуть 120. + * Факториал 0 должен быть равен 1. + */ + @Override + public long calcFactorial(int initialVal) { + long fac = 1; + for (int i = 1; i <= initialVal; i++) { + fac *= i; + } + return fac; + } + + /** + * Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи. + * + * Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих. + * Ряд начинается 0 и 1. + * Пример 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ... + * + * Для числа 9 метод должен вернуть 34 + * Для числа 0 метод должен вернуть 0 + */ + @Override + public long calcFibonacci(int number) { + if (number == 0) { + return 0; + } else if (number == 1) { + return 1; + } + long first = 0; + long second = 1; + long third = 1; + for (int i = 0; i < number - 1; i++) { + third = first + second; + first = second; + second = third; + } + return third; + } + + /** + * Метод возвращает отсортированный по возрастанию массив. + * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть {-5, -3, -1, 4, 5, 8, 22} + */ + @Override + public int[] sort(int[] values) { + int temp; + boolean isSorted = false; + while (!isSorted){ + isSorted = true; + for (int i = 1; i < values.length; i++){ + if (values[i] < values[i-1]){ + temp = values[i]; + values[i] = values[i-1]; + values[i-1] = temp; + isSorted = false; + } + } + } + return values; + } + + /** + * Метод определяет, является ли заданное число простым. + * Простое число - число, которое делится только на 1 и на само себя. + * + * Например для числа 22 вернется false, а для числа 23 true. + */ + @Override + public boolean isPrimary(int number) { + for (int i = 2; i <= number / 2; i++) { + if (number % i == 0) { + return false; + } + } + return true; + } + + /** + * Метод возвращает массив, в котором элементы расположены в обратном порядке. + * + * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1} + */ + @Override + public int[] reverseArray(int[] values) { + int reverse[] = new int[values.length]; + for (int i = 0; i < values.length; i++) { + reverse[i] = values[values.length - 1 - i]; + } + return reverse; + } +} diff --git a/src/test/java/com.epam.izh.rd.online/MathServiceTest.java b/src/test/java/com.epam.izh.rd.online/MathServiceTest.java index 47d7b356..03cd3085 100644 --- a/src/test/java/com.epam.izh.rd.online/MathServiceTest.java +++ b/src/test/java/com.epam.izh.rd.online/MathServiceTest.java @@ -1,92 +1,92 @@ -package com.epam.izh.rd.online; - -import com.epam.izh.rd.online.service.MathService; -import com.epam.izh.rd.online.service.SimpleMathService; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; - -import java.util.Arrays; - -import static org.junit.jupiter.api.Assertions.*; - -public class MathServiceTest { - - private static MathService mathService; - - @BeforeAll - static void setup() { - mathService = new SimpleMathService(); - } - - @ParameterizedTest - @MethodSource("com.epam.izh.rd.online.Providers#testCompare") - @DisplayName("Тест метода MathService.compare(int value1, int value2)") - void testCompare(int value1, int value2, int expected) { - assertEquals(expected, mathService.compare(value1, value2), "Для входных параметров: " + value1 + " " + value2); - } - - @Test - @DisplayName("Тест метода MathService.maxFrom(int value1, int value2)") - void testMaxFrom() { - assertEquals(2, mathService.maxFrom(-10, 2), "Для входных параметров: " + -10 + " " + 2); - } - - @Test - @DisplayName("Тест метода MathService.maxFrom(int[] values)") - void testMaxFromArray() { - int[] param = {1, 3, 5, 7, 8}; - assertEquals(8, mathService.maxFrom(param), "Для входных параметров: " + Arrays.toString(param)); - } - - @ParameterizedTest - @MethodSource("com.epam.izh.rd.online.Providers#testSumProvider") - @DisplayName("Тест метода MathService.sum(int[] values)") - void testSum(int[] param, int expected) { - assertEquals(expected, mathService.sum(param), "Для входных параметров: " + Arrays.toString(param)); - } - - @ParameterizedTest - @MethodSource("com.epam.izh.rd.online.Providers#testGetEvenDigitsProvider") - @DisplayName("Тест метода MathService.getEvenDigits(int[] values)") - void testGetEvenDigits(int[] param, int[] expected) { - assertArrayEquals(expected, mathService.getEvenDigits(param), "Для входных параметров: " + Arrays.toString(param)); - } - - @ParameterizedTest - @MethodSource("com.epam.izh.rd.online.Providers#testCalcFactorialProvider") - @DisplayName("Тест метода MathService.calcFactorial(int initialVal)") - void testCalcFactorial(int param, int expected) { - assertEquals(expected, mathService.calcFactorial(param), "Для входого параметра: " + param); - } - - @ParameterizedTest - @MethodSource("com.epam.izh.rd.online.Providers#testCalcFibonacciProvider") - @DisplayName("Тест метода MathService.calcFibonacci(int number)") - void testCalcFibonacci(int param, int expected) { - assertEquals(expected, mathService.calcFibonacci(param), "Для входого параметра: " + param); - } - - @ParameterizedTest - @MethodSource("com.epam.izh.rd.online.Providers#testSortProvider") - @DisplayName("Тест метода MathService.sort(int[] arr)") - void testSort(int[] param, int[] expected) { - assertArrayEquals(expected, mathService.sort(param), "Для входных параметров: " + Arrays.toString(param)); - } - - @ParameterizedTest - @MethodSource("com.epam.izh.rd.online.Providers#testIsPrimaryProvider") - @DisplayName("Тест метода MathService.isPrimary(int number)") - void testIsPrimary(int param, boolean expected) { - assertEquals(expected, mathService.isPrimary(param), "Для входого параметра: " + param); - } - - @ParameterizedTest - @MethodSource("com.epam.izh.rd.online.Providers#testReverseArrayProvider") - @DisplayName("Тест метода MathService.reverseArray(int[] arr)") - void testIsPrimary(int[] param, int[] expected) { - assertArrayEquals(expected, mathService.reverseArray(param), "Для входных параметров: " + Arrays.toString(param)); - } -} +package com.epam.izh.rd.online; + +import com.epam.izh.rd.online.service.MathService; +import com.epam.izh.rd.online.service.SimpleMathService; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.*; + +public class MathServiceTest { + + private static MathService mathService; + + @BeforeAll + static void setup() { + mathService = new SimpleMathService(); + } + + @ParameterizedTest + @MethodSource("com.epam.izh.rd.online.Providers#testCompare") + @DisplayName("Тест метода MathService.compare(int value1, int value2)") + void testCompare(int value1, int value2, int expected) { + assertEquals(expected, mathService.compare(value1, value2), "Для входных параметров: " + value1 + " " + value2); + } + + @Test + @DisplayName("Тест метода MathService.maxFrom(int value1, int value2)") + void testMaxFrom() { + assertEquals(2, mathService.maxFrom(-10, 2), "Для входных параметров: " + -10 + " " + 2); + } + + @Test + @DisplayName("Тест метода MathService.maxFrom(int[] values)") + void testMaxFromArray() { + int[] param = {1, 3, 5, 7, 8}; + assertEquals(8, mathService.maxFrom(param), "Для входных параметров: " + Arrays.toString(param)); + } + + @ParameterizedTest + @MethodSource("com.epam.izh.rd.online.Providers#testSumProvider") + @DisplayName("Тест метода MathService.sum(int[] values)") + void testSum(int[] param, int expected) { + assertEquals(expected, mathService.sum(param), "Для входных параметров: " + Arrays.toString(param)); + } + + @ParameterizedTest + @MethodSource("com.epam.izh.rd.online.Providers#testGetEvenDigitsProvider") + @DisplayName("Тест метода MathService.getEvenDigits(int[] values)") + void testGetEvenDigits(int[] param, int[] expected) { + assertArrayEquals(expected, mathService.getEvenDigits(param), "Для входных параметров: " + Arrays.toString(param)); + } + + @ParameterizedTest + @MethodSource("com.epam.izh.rd.online.Providers#testCalcFactorialProvider") + @DisplayName("Тест метода MathService.calcFactorial(int initialVal)") + void testCalcFactorial(int param, int expected) { + assertEquals(expected, mathService.calcFactorial(param), "Для входого параметра: " + param); + } + + @ParameterizedTest + @MethodSource("com.epam.izh.rd.online.Providers#testCalcFibonacciProvider") + @DisplayName("Тест метода MathService.calcFibonacci(int number)") + void testCalcFibonacci(int param, int expected) { + assertEquals(expected, mathService.calcFibonacci(param), "Для входого параметра: " + param); + } + + @ParameterizedTest + @MethodSource("com.epam.izh.rd.online.Providers#testSortProvider") + @DisplayName("Тест метода MathService.sort(int[] arr)") + void testSort(int[] param, int[] expected) { + assertArrayEquals(expected, mathService.sort(param), "Для входных параметров: " + Arrays.toString(param)); + } + + @ParameterizedTest + @MethodSource("com.epam.izh.rd.online.Providers#testIsPrimaryProvider") + @DisplayName("Тест метода MathService.isPrimary(int number)") + void testIsPrimary(int param, boolean expected) { + assertEquals(expected, mathService.isPrimary(param), "Для входого параметра: " + param); + } + + @ParameterizedTest + @MethodSource("com.epam.izh.rd.online.Providers#testReverseArrayProvider") + @DisplayName("Тест метода MathService.reverseArray(int[] arr)") + void testIsPrimary(int[] param, int[] expected) { + assertArrayEquals(expected, mathService.reverseArray(param), "Для входных параметров: " + Arrays.toString(param)); + } +} diff --git a/src/test/java/com.epam.izh.rd.online/Providers.java b/src/test/java/com.epam.izh.rd.online/Providers.java index cffa6b4c..f8e3a088 100644 --- a/src/test/java/com.epam.izh.rd.online/Providers.java +++ b/src/test/java/com.epam.izh.rd.online/Providers.java @@ -1,91 +1,91 @@ -package com.epam.izh.rd.online; - -import org.junit.jupiter.params.provider.Arguments; - -import java.util.stream.Stream; - -import static org.junit.jupiter.params.provider.Arguments.arguments; - -public class Providers { - - private Providers() { - - } - - public static Stream testCompare() { - return Stream.of( - arguments(-10, -1, -1), - arguments(0, 0, 0), - arguments(3, 3, 0), - arguments(33, 2, 1) - ); - } - - public static Stream testSumProvider() { - return Stream.of( - arguments(new int[]{}, 0), - arguments(new int[]{1, 2}, 3), - arguments(new int[]{-6, 5, -2, 78}, 75), - arguments(new int[]{5, -7, 3, 7, 3, -1, 4, 3}, 17) - ); - } - - public static Stream testGetEvenDigitsProvider() { - return Stream.of( - arguments(new int[]{}, new int[]{}), - arguments(new int[]{1, 2}, new int[]{2}), - arguments(new int[]{-6, 5, -2, 78}, new int[]{-6, -2, 78}), - arguments(new int[]{5, -7, 3, 7, 3, -1, 3}, new int[]{}) - ); - } - - public static Stream testCalcFactorialProvider() { - return Stream.of( - arguments(5, 120), - arguments(0, 1), - arguments(8, 40320), - arguments(9, 362880) - ); - } - - public static Stream testCalcFibonacciProvider() { - return Stream.of( - arguments(0, 0), - arguments(1, 1), - arguments(2, 1), - arguments(3, 2), - arguments(4, 3), - arguments(5, 5), - arguments(7, 13), - arguments(11, 89) - ); - } - - public static Stream testSortProvider() { - return Stream.of( - arguments(new int[]{}, new int[]{}), - arguments(new int[]{-1, -3, 4, 8, 5, 22, -5}, new int[]{-5, -3, -1, 4, 5, 8, 22}), - arguments(new int[]{3, 4, 3, 4}, new int[]{3, 3, 4, 4}) - ); - } - - public static Stream testIsPrimaryProvider() { - return Stream.of( - arguments(2, true), - arguments(4, false), - arguments(5, true), - arguments(10, false), - arguments(21, false), - arguments(23, true), - arguments(7349, true) - ); - } - - public static Stream testReverseArrayProvider() { - return Stream.of( - arguments(new int[]{}, new int[]{}), - arguments(new int[]{-1, -3, 4, 8, 5, 22, -5}, new int[]{-5, 22, 5, 8, 4, -3, -1}), - arguments(new int[]{4, 4, 5, 5, 2, 6}, new int[]{6, 2, 5, 5, 4, 4}) - ); - } -} +package com.epam.izh.rd.online; + +import org.junit.jupiter.params.provider.Arguments; + +import java.util.stream.Stream; + +import static org.junit.jupiter.params.provider.Arguments.arguments; + +public class Providers { + + private Providers() { + + } + + public static Stream testCompare() { + return Stream.of( + arguments(-10, -1, -1), + arguments(0, 0, 0), + arguments(3, 3, 0), + arguments(33, 2, 1) + ); + } + + public static Stream testSumProvider() { + return Stream.of( + arguments(new int[]{}, 0), + arguments(new int[]{1, 2}, 3), + arguments(new int[]{-6, 5, -2, 78}, 75), + arguments(new int[]{5, -7, 3, 7, 3, -1, 4, 3}, 17) + ); + } + + public static Stream testGetEvenDigitsProvider() { + return Stream.of( + arguments(new int[]{}, new int[]{}), + arguments(new int[]{1, 2}, new int[]{2}), + arguments(new int[]{-6, 5, -2, 78}, new int[]{-6, -2, 78}), + arguments(new int[]{5, -7, 3, 7, 3, -1, 3}, new int[]{}) + ); + } + + public static Stream testCalcFactorialProvider() { + return Stream.of( + arguments(5, 120), + arguments(0, 1), + arguments(8, 40320), + arguments(9, 362880) + ); + } + + public static Stream testCalcFibonacciProvider() { + return Stream.of( + arguments(0, 0), + arguments(1, 1), + arguments(2, 1), + arguments(3, 2), + arguments(4, 3), + arguments(5, 5), + arguments(7, 13), + arguments(11, 89) + ); + } + + public static Stream testSortProvider() { + return Stream.of( + arguments(new int[]{}, new int[]{}), + arguments(new int[]{-1, -3, 4, 8, 5, 22, -5}, new int[]{-5, -3, -1, 4, 5, 8, 22}), + arguments(new int[]{3, 4, 3, 4}, new int[]{3, 3, 4, 4}) + ); + } + + public static Stream testIsPrimaryProvider() { + return Stream.of( + arguments(2, true), + arguments(4, false), + arguments(5, true), + arguments(10, false), + arguments(21, false), + arguments(23, true), + arguments(7349, true) + ); + } + + public static Stream testReverseArrayProvider() { + return Stream.of( + arguments(new int[]{}, new int[]{}), + arguments(new int[]{-1, -3, 4, 8, 5, 22, -5}, new int[]{-5, 22, 5, 8, 4, -3, -1}), + arguments(new int[]{4, 4, 5, 5, 2, 6}, new int[]{6, 2, 5, 5, 4, 4}) + ); + } +}