From 9b0abc8e3850221da552050c0b520e30cd12decc Mon Sep 17 00:00:00 2001 From: CaberoDaniel Date: Wed, 5 Jul 2017 20:14:28 +0000 Subject: [PATCH 1/4] all katas --- .../org/fundacionjala/coding/Library.java | 16 -- .../averageofnumbers/AverageOfNumbers.java | 30 ++ .../coding/danielcabero/bank_ocr/BankOcr.java | 222 +++++++++++++++ .../eanvalidator/EANValidator.java | 54 ++++ .../danielcabero/evaporator/Evaporator.java | 34 +++ .../highestandlowest/HighestAndLowest.java | 33 +++ .../coding/danielcabero/movies/Children.java | 32 +++ .../coding/danielcabero/movies/Customer.java | 81 ++++++ .../coding/danielcabero/movies/Main.java | 26 ++ .../coding/danielcabero/movies/Movie.java | 43 +++ .../danielcabero/movies/NewRelease.java | 41 +++ .../coding/danielcabero/movies/Regular.java | 34 +++ .../coding/danielcabero/movies/Rental.java | 55 ++++ .../multiplesof3and5/MultiplesOf3And5.java | 32 +++ .../sorttheinnercontent/SortInnerContent.java | 50 ++++ .../danielcabero/spinwords/SpinWords.java | 31 +++ .../org/fundacionjala/coding/LibraryTest.java | 20 -- .../AverageOfNumbersTest.java | 114 ++++++++ .../danielcabero/bank_ocr/BankOcrTest.java | 260 ++++++++++++++++++ .../eanvalidator/EANValidatorTest.java | 100 +++++++ .../evaporator/EvaporatorTest.java | 88 ++++++ .../HighestAndLowestTest.java | 181 ++++++++++++ .../danielcabero/movies/ChildrenTest.java | 80 ++++++ .../danielcabero/movies/CustomerTest.java | 45 +++ .../coding/danielcabero/movies/MainTest.java | 24 ++ .../coding/danielcabero/movies/MovieTest.java | 34 +++ .../danielcabero/movies/NewReleaseTest.java | 81 ++++++ .../danielcabero/movies/RegularTest.java | 81 ++++++ .../danielcabero/movies/RentalTest.java | 49 ++++ .../MultiplesOf3And5Test.java | 66 +++++ .../SortInnerContentTest.java | 66 +++++ .../danielcabero/spinwords/SpinWordsTest.java | 83 ++++++ 32 files changed, 2150 insertions(+), 36 deletions(-) delete mode 100644 src/main/java/org/fundacionjala/coding/Library.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/averageofnumbers/AverageOfNumbers.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidator.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/evaporator/Evaporator.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/highestandlowest/HighestAndLowest.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/movies/Children.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/movies/Main.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/movies/Movie.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/movies/NewRelease.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/movies/Regular.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/movies/Rental.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/multiplesof3and5/MultiplesOf3And5.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/sorttheinnercontent/SortInnerContent.java create mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/spinwords/SpinWords.java delete mode 100644 src/test/java/org/fundacionjala/coding/LibraryTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/averageofnumbers/AverageOfNumbersTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/evaporator/EvaporatorTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/highestandlowest/HighestAndLowestTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/ChildrenTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/MainTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/MovieTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/NewReleaseTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/RegularTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/RentalTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/multiplesof3and5/MultiplesOf3And5Test.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/sorttheinnercontent/SortInnerContentTest.java create mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/spinwords/SpinWordsTest.java diff --git a/src/main/java/org/fundacionjala/coding/Library.java b/src/main/java/org/fundacionjala/coding/Library.java deleted file mode 100644 index 4543d94..0000000 --- a/src/main/java/org/fundacionjala/coding/Library.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.fundacionjala.coding; - -/** - * This Java source file was auto generated by running 'gradle buildInit --type java-library'. - */ -public class Library { - - /** - * Some library method. - * - * @return true - */ - public boolean someLibraryMethod() { - return true; - } -} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/averageofnumbers/AverageOfNumbers.java b/src/main/java/org/fundacionjala/coding/danielcabero/averageofnumbers/AverageOfNumbers.java new file mode 100644 index 0000000..1378190 --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/averageofnumbers/AverageOfNumbers.java @@ -0,0 +1,30 @@ +package org.fundacionjala.coding.danielcabero.averageofnumbers; + +import java.util.stream.IntStream; + +/** + * Created by administrator on 6/20/2017. + */ + +public final class AverageOfNumbers { + + /** + * Private constructor. + */ + private AverageOfNumbers() { + } + + /** + * The method returns the average of the elements in the array as a double array. + * + * @param numbers is an array of int numbers. + * @return the average of the numbers as an array. + */ + public static double[] numberAverages(final int[] numbers) { + return (numbers == null || numbers.length <= 1) + ? new double[]{} + : IntStream.range(0, numbers.length - 1) + .mapToDouble(i -> (numbers[i] + numbers[i + 1]) / 2.0) + .toArray(); + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java b/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java new file mode 100644 index 0000000..6ee7a7a --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java @@ -0,0 +1,222 @@ +package org.fundacionjala.coding.danielcabero.bank_ocr; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by administrator on 3/10/2017. + */ + +final class BankOcr { + + private static final int MODULUS_FACTOR = 11; + private static final int ACCOUNT_LENGTH = 9; + private static final int SCANNED_ACCOUNT_LENGTH = 72; + private static final int MULTIPLY_FACTOR = 9; + private static final int INDEX_MODULUS_FACTOR = 9; + private static final int NUMBER_START = 0; + private static final int NUMBER_END = 3; + private static final Map MAPS_OF_NUMBERS = new HashMap<>(); + + static { + MAPS_OF_NUMBERS.put(NUMBERS.ZERO.ordinal(), + " _ " + + "| |" + + "|_|"); + MAPS_OF_NUMBERS.put(NUMBERS.ONE.ordinal(), + " " + + " |" + + " |"); + MAPS_OF_NUMBERS.put(NUMBERS.TWO.ordinal(), + " _ " + + " _|" + + "|_ "); + MAPS_OF_NUMBERS.put(NUMBERS.THREE.ordinal(), + "__ " + + " _|" + + "__|"); + MAPS_OF_NUMBERS.put(NUMBERS.FOUR.ordinal(), + " " + + "|_|" + + " |"); + MAPS_OF_NUMBERS.put(NUMBERS.FIVE.ordinal(), + " _ " + + "|_ " + + " _|"); + MAPS_OF_NUMBERS.put(NUMBERS.SIX.ordinal(), + " _ " + + "|_ " + + "|_|"); + MAPS_OF_NUMBERS.put(NUMBERS.SEVEN.ordinal(), + "__ " + + " |" + + " |"); + MAPS_OF_NUMBERS.put(NUMBERS.EIGHT.ordinal(), + " _ " + + "|_|" + + "|_|"); + MAPS_OF_NUMBERS.put(NUMBERS.NINE.ordinal(), + " _ " + + "|_|" + + " _|"); + } + + /** + * Constructor private. + */ + private BankOcr() { + + } + + /** + * @param value used to obtain its int representation + * @return "?" if the value is not in range 0-9 otherwise + * return a number between 0 and 9. + */ + private static String getKey(final String value) { + String key = "?"; + for (Map.Entry entry : MAPS_OF_NUMBERS.entrySet()) { + if (entry.getValue().equals(value)) { + key = entry.getKey().toString(); + } + } + return key; + } + + /** + * This method determines if an scanned numberAccount is between the paraments corrects. + * + * @param numberAccount image of type String. + * @return true \\ false + */ + private static boolean size(final String numberAccount) { + boolean isCorrect = true; + + for (int aux = 0; aux < numberAccount.length(); aux++) { + if (!Character.isDigit(numberAccount.charAt(aux))) { + isCorrect = false; + break; + } + } + return isCorrect; + } + + /** + * This method validate if an account is correct or not. + * + * @param account String variable is the account to validate + * @return true if the passed account is true, false otherwise. + */ + static boolean validateNumberAccount(final String account) { + if (account.length() == ACCOUNT_LENGTH && size(account)) { + + String[] acct = account.split(""); + + int checksum = 0; + int factor = MULTIPLY_FACTOR; + + for (String value : acct) { + checksum += Integer.parseInt(value) * factor; + factor--; + } + + return checksum % MODULUS_FACTOR == 0; + } else { + return false; + } + } + + /** + * This method is in charge to give one of three posibilities errors to the numberAccountUser". + * "", "ERR" or "ILL" + * + * @param numberAccountUser String variable to determine its status. + * @return an String result with the values mentioned earlier. + */ + static String getNumberAccount(final String numberAccountUser) { + String error = ""; + + if (!size(numberAccountUser)) { + error = "ILL"; + } else if (!validateNumberAccount(numberAccountUser)) { + error = "ERR"; + } + return error; + } + + /** + * This method returns the string representation of the scanned image. + * + * @param scannedImage array string. + * @return String representation of scanned image. + */ + static String numberAccountPresentImage(final String[] scannedImage) { + StringBuilder actPresent = new StringBuilder(); + + for (String number : scannedImage) { + actPresent.append(getKey(number)); + } + return actPresent.toString(); + } + + /** + * This method take and scanned account of exactly 9 digits and return + * an array representation of them. + * + * @param scannedAccount String, represents the account. + * @return an array of nine string digits. + */ + static String[] parseToInt(final String scannedAccount) { + + List scanningDigits = new ArrayList(); + + if (!sizeImageIsValid(scannedAccount)) { + int index = 0; + int start = NUMBER_START; + int end = NUMBER_END; + + int aux = 0; + while (aux < scannedAccount.length()) { + index = index % INDEX_MODULUS_FACTOR; + + scanningDigits.set(index, scannedAccount.substring(start, end)); + + start = end; + end += NUMBER_END; + index++; + aux += NUMBER_END; + } + } + return scanningDigits.toArray(new String[0]); + } + + /** + * This method validates if an scanned account has the correct digit + * numbers. + * + * @param scannedAccount of String type. + * @return true. + */ + private static boolean sizeImageIsValid(final String scannedAccount) { + return scannedAccount.length() == SCANNED_ACCOUNT_LENGTH; + } + + /** + * This enum type will contain the key values. + */ + private enum NUMBERS { + ZERO(0), ONE(1), TWO(2), THREE(3), + FOUR(4), FIVE(5), SIX(6), + SEVEN(7), EIGHT(8), NINE(9); + + /** + * Construct for Enum type. + * + * @param i of int type. + */ + NUMBERS(final int i) { + } + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidator.java b/src/main/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidator.java new file mode 100644 index 0000000..529ca72 --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidator.java @@ -0,0 +1,54 @@ +package org.fundacionjala.coding.danielcabero.eanvalidator; + +/** + * Created administrat on 3/10/2017. + */ + +final class EANValidator { + private static final int ODD_DIGIT_MULTIPLIER = 3; + private static final int DIVISIBILITY_FACTOR = 10; + private static final int EAN_CORRECTLY_LENGTH = 13; + + /** + * Constructor private. + */ + + private EANValidator() { + } + + /** + * Takes an string number to verify it is checksum it's correct. + * + * @param eAN String number with exactly 13 digits. + * @return true if the checksum is ok. + */ + + public static boolean validate(final String eAN) { + int sum = 0; + + if (!checkCorrectLength(eAN)) { + return false; + } else { + for (int i = 1; i < eAN.length(); i++) { + int numericValue = Character.getNumericValue(eAN.charAt(i - 1)); + sum += i % 2 == 0 ? numericValue * ODD_DIGIT_MULTIPLIER : numericValue; + } + + int module = sum % DIVISIBILITY_FACTOR; + int check = module != 0 ? DIVISIBILITY_FACTOR - module : 0; + + return check == Character.getNumericValue(eAN.charAt(eAN.length() - 1)); + } + } + + /** + * Takes an String number digits and returns true if the String length + * is exactly 13. + * + * @param stringNumber number + * @return true if stringNumber length is exactly 13. + */ + public static boolean checkCorrectLength(final String stringNumber) { + return stringNumber.length() == EAN_CORRECTLY_LENGTH; + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/evaporator/Evaporator.java b/src/main/java/org/fundacionjala/coding/danielcabero/evaporator/Evaporator.java new file mode 100644 index 0000000..c4e8597 --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/evaporator/Evaporator.java @@ -0,0 +1,34 @@ +package org.fundacionjala.coding.danielcabero.evaporator; + +/** + * Created by administrator on 06/26/2017. + */ +final class Evaporator { + + private static final int PORCENT = 100; + + /** + * Constructor. + */ + private Evaporator() { + } + + /** + * @param content of the gas in the tank. + * @param percentDay of loss in the day. + * @param threshold of gas loss that not use. + * @return days that save the gas. + */ + static int evaporator(final double content, final double percentDay, final double threshold) { + + int days = 0; + double contentPercentage = PORCENT; + + while (contentPercentage > threshold) { + contentPercentage *= 1 - percentDay / PORCENT; + days++; + } + + return days; + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/highestandlowest/HighestAndLowest.java b/src/main/java/org/fundacionjala/coding/danielcabero/highestandlowest/HighestAndLowest.java new file mode 100644 index 0000000..02b0e6b --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/highestandlowest/HighestAndLowest.java @@ -0,0 +1,33 @@ +package org.fundacionjala.coding.danielcabero.highestandlowest; + +import java.util.Arrays; +import java.util.stream.Stream; + +/** + * Created by Administrator on 6/19/2017. + */ + +final class HighestAndLowest { + + /** + * Private constructor. + */ + private HighestAndLowest() { + } + + /** + * The method return the highest and lowest value of a number array. + * + * @param numbers is the String of numbers. + * @return a String with the highest and lowest values. + */ + static String highAndLowest(final String numbers) { + int[] digits = Stream.of(numbers.split(" ")).mapToInt(Integer::parseInt).toArray(); + + int high = Arrays.stream(digits).max().getAsInt(); + + int lowest = Arrays.stream(digits).min().getAsInt(); + + return String.format("%d %d", high, lowest); + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Children.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Children.java new file mode 100644 index 0000000..29774ec --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Children.java @@ -0,0 +1,32 @@ +package org.fundacionjala.coding.danielcabero.movies; + +/** + * Created by administrator on 3/10/2017. + */ +public class Children extends Movie { + private static final int CHILDREN_DAYS = 3; + private static final double PRICE = 1.5; + + /** + * Children constructor. + * + * @param title of String type. + */ + Children(final String title) { + super(title); + } + + @Override + public double calculateAmount(final int daysRented) { + double amount = PRICE; + if (daysRented > CHILDREN_DAYS) { + amount += (daysRented - CHILDREN_DAYS) * PRICE; + } + return amount; + } + + @Override + public int frequentPointsRenter(final int daysRented) { + return 1; + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java new file mode 100644 index 0000000..e6cf70e --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java @@ -0,0 +1,81 @@ +package org.fundacionjala.coding.danielcabero.movies; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by administrator on 3/10/2017. + */ + +class Customer { + private String name; + private List rentalsList; + + /** + * @param name String with words. + * Constructor. + */ + Customer(final String name) { + this.name = name; + rentalsList = new ArrayList<>(); + } + + /** + * @param rental String with words. + */ + void addRental(final Rental rental) { + rentalsList.add(rental); + } + + /** + * @return the name string. + */ + private String getName() { + return this.name; + } + + /** + * @return the string. + */ + String generateDetail() { + StringBuilder result = new StringBuilder(); + result.append("Rental Record for ").append(getName()).append("\n"); + for (Rental rental : rentalsList) { + result.append("\t").append(rental.getMovieTitle().getTitleMovie()).append("\t"); + result.append(rental.calculateAmount()).append("\n"); + } + result.append("Amount owed is ").append(calculateTotalAmount()).append("\n"); + result.append("You earned ").append(totalFrequentPointsRent()).append(" frequent renter points"); + return result.toString(); + } + + /** + * This method calculates the total amount of the rented movies. + * + * @return the total amount. + */ + private double calculateTotalAmount() { + return rentalsList.stream() + .mapToDouble(Rental::calculateAmount) + .sum(); + } + + /** + * This method calculates the total frequent points of rented movies. + * + * @return total frequent renter points. + */ + private int totalFrequentPointsRent() { + return rentalsList.stream() + .mapToInt(Rental::calculateFrequentRenterPoint) + .sum(); + } + + /** + * + * @return the List of the customer. + */ + List getRentalsList() { + return rentalsList; + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Main.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Main.java new file mode 100644 index 0000000..34d66cf --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Main.java @@ -0,0 +1,26 @@ +package org.fundacionjala.coding.danielcabero.movies; + +/** + * Created by administrator on 3/10/2017. + */ +public final class Main { + + /** + * Constructor private. + */ + private Main() { + + } + + /** + * Shows in console the customer's renter points. + * + * @param args String. + */ + public static void main(final String[] args) { + Customer customer = new Customer("Test"); + customer.addRental(new Rental(new Children("The Revenant"), 2)); + customer.addRental(new Rental(new Regular("Terminator"), 2)); + System.out.println(customer.generateDetail()); + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Movie.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Movie.java new file mode 100644 index 0000000..32b4392 --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Movie.java @@ -0,0 +1,43 @@ +package org.fundacionjala.coding.danielcabero.movies; + +/** + * Created by administrator on 3/10/2017. + */ +public abstract class Movie { + private String titleMovie; + + /** + * Movie constructor. + * + * @param titleMovie of String type. + */ + Movie(final String titleMovie) { + this.titleMovie = titleMovie; + } + + /** + * Abstract method to calculate the amount of a rented movie. + * + * @param daysRented of int type. + * @return the amount of a rented movie. + */ + public abstract double calculateAmount(int daysRented); + + /** + * Abstract method to calculate the frequent renter points + * of a rented movie. + * + * @param daysRented of int type. + * @return the frequent renter points. + */ + public abstract int frequentPointsRenter(int daysRented); + + /** + * This method returns the titleMovie of a movie. + * + * @return the titleMovie of the movie. + */ + String getTitleMovie() { + return titleMovie; + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/NewRelease.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/NewRelease.java new file mode 100644 index 0000000..a9d2f78 --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/NewRelease.java @@ -0,0 +1,41 @@ +package org.fundacionjala.coding.danielcabero.movies; + +/** + * Created by administrator on 3/10/2017. + */ +public class NewRelease extends Movie { + + private static final int NEW_RELEASE_DAYS = 3; + + /** + * NewRelease constructor. + * + * @param title of type String. + */ + NewRelease(final String title) { + super(title); + } + + /** + * This method calculates the amount of a new release rented movie. + * + * @param daysRented of int type. + * @return the amount of a new release rented movie. + */ + @Override + public double calculateAmount(final int daysRented) { + return daysRented * NEW_RELEASE_DAYS; + } + + /** + * This method calculates the frequent renter points + * of a new release rented movie. + * + * @param daysRented of int type. + * @return 1 or 2. + */ + @Override + public int frequentPointsRenter(final int daysRented) { + return daysRented > 1 ? 2 : 1; + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Regular.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Regular.java new file mode 100644 index 0000000..c935878 --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Regular.java @@ -0,0 +1,34 @@ +package org.fundacionjala.coding.danielcabero.movies; + +/** + * Created by administrator on 3/10/2017. + */ +public class Regular extends Movie { + + private static final double PRICE_RENT = 1.5; + + private static final int DAYS = 2; + + /** + * Regular constructor. + * + * @param title of String type. + */ + Regular(final String title) { + super(title); + } + + @Override + public double calculateAmount(final int daysRented) { + double amount = DAYS; + if (daysRented > DAYS) { + amount += (daysRented - DAYS) * PRICE_RENT; + } + return amount; + } + + @Override + public int frequentPointsRenter(final int daysRented) { + return 1; + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Rental.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Rental.java new file mode 100644 index 0000000..11d20bb --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Rental.java @@ -0,0 +1,55 @@ +package org.fundacionjala.coding.danielcabero.movies; + +/** + * Created by administrator on 3/10/2017. + */ + +class Rental { + private Movie movieTitle; + private int daysRent; + + /** + * Rental movieTitle's constructor. + * + * @param movieTitle receives the movieTitle. + * @param daysRent receives the movieTitle's daysRent rented. + */ + Rental(final Movie movieTitle, final int daysRent) { + this.movieTitle = movieTitle; + this.daysRent = daysRent; + } + + /** + * Getter method to obtain daysRent a movies was rented. + * + * @return movies daysRent rented. + */ + public int getDaysRent() { + return daysRent; + } + + /** + * Getter method to obtain the movieTitle information. + * + * @return the movieTitle object. + */ + Movie getMovieTitle() { + return movieTitle; + } + + /** + * @return price object. + */ + double calculateAmount() { + return movieTitle.calculateAmount(daysRent); + } + + /** + * @return calculateFrequentRenterPoint int. + */ + int calculateFrequentRenterPoint() { + return movieTitle.frequentPointsRenter(daysRent); + } + + +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/multiplesof3and5/MultiplesOf3And5.java b/src/main/java/org/fundacionjala/coding/danielcabero/multiplesof3and5/MultiplesOf3And5.java new file mode 100644 index 0000000..a29b9bf --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/multiplesof3and5/MultiplesOf3And5.java @@ -0,0 +1,32 @@ +package org.fundacionjala.coding.danielcabero.multiplesof3and5; + +/** + * Created by Administrator on 6/19/2017. + */ + +public final class MultiplesOf3And5 { + + private static final int THREE = 3; + private static final int FIVE = 5; + + /** + * Constructor. + */ + private MultiplesOf3And5() { + } + + /** + * @param number for the calculate sum multiples of the 3 and 5. + * @return int sum the multiples between 3 and 5. + */ + public static int solution(final int number) { + int sum = 0; + + for (int i = 0; i < number; i++) { + if (i % THREE == 0 || i % FIVE == 0) { + sum += i; + } + } + return sum; + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/sorttheinnercontent/SortInnerContent.java b/src/main/java/org/fundacionjala/coding/danielcabero/sorttheinnercontent/SortInnerContent.java new file mode 100644 index 0000000..816a0e1 --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/sorttheinnercontent/SortInnerContent.java @@ -0,0 +1,50 @@ +package org.fundacionjala.coding.danielcabero.sorttheinnercontent; + +import java.util.Arrays; +import java.util.Collections; +import java.util.stream.Collectors; + +/** + * Created by administrator on 6/20/2017. + */ + +final class SortInnerContent { + + private static final int LIMIT = 3; + + /** + * Private Constructor. + */ + private SortInnerContent() { + } + + /** + * The method returns a new String with all the inner content of each one, + * sorted in a descending way. + * + * @param words of String type. + * @return all the words sorted in descending way joined by a space. + */ + static String sortTheInnerContent(final String words) { + return Arrays.stream(words.split(" ")) + .map(word -> word.length() < LIMIT ? word : sortWord(word)) + .collect(Collectors.joining(" ")); + } + + /** + * The method reverse the inner content of a word. + * + * @param word of String type. + * @return the inner word sorted. + */ + private static String sortWord(final String word) { + String[] characters = word.split(""); + StringBuilder stringBuilder = new StringBuilder(); + Arrays.sort(characters, 1, characters.length - 1, + Collections.reverseOrder()); + for (String str : characters) { + stringBuilder.append(str); + } + return stringBuilder.toString(); + } +} diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/spinwords/SpinWords.java b/src/main/java/org/fundacionjala/coding/danielcabero/spinwords/SpinWords.java new file mode 100644 index 0000000..0e63c0d --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/danielcabero/spinwords/SpinWords.java @@ -0,0 +1,31 @@ +package org.fundacionjala.coding.danielcabero.spinwords; + +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * Created by administrator on 3/10/2017. + */ + +final class SpinWords { + + private static final int MINIMAL_WORD = 5; + + /** + * Constructor private. + */ + private SpinWords() { + } + + /** + * @param text for the changes. + * @return String changes places. + */ + public static String spinWords(final String text) { + return Arrays.stream(text.split(" ")) + .map(word -> word.length() >= MINIMAL_WORD ? new StringBuilder(word).reverse() : word) + .collect(Collectors.joining(" ")); + } + + +} diff --git a/src/test/java/org/fundacionjala/coding/LibraryTest.java b/src/test/java/org/fundacionjala/coding/LibraryTest.java deleted file mode 100644 index b5115ea..0000000 --- a/src/test/java/org/fundacionjala/coding/LibraryTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.fundacionjala.coding; - -import org.junit.Test; - -import static org.junit.Assert.assertTrue; - -/** - * Test for {@link Library}. - */ -public class LibraryTest { - - /** - * Verify some library method. - */ - @Test - public void testSomeLibraryMethod() { - Library classUnderTest = new Library(); - assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod()); - } -} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/averageofnumbers/AverageOfNumbersTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/averageofnumbers/AverageOfNumbersTest.java new file mode 100644 index 0000000..06c4a0b --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/averageofnumbers/AverageOfNumbersTest.java @@ -0,0 +1,114 @@ +package org.fundacionjala.coding.danielcabero.averageofnumbers; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by Administrator on 6/20/2017. + */ +public class AverageOfNumbersTest { + /** + * The method verifies test1. + */ + @Test + public void test1() { + final int[] arrayNumbers = new int[]{2, 2, 2, 2, 2}; + + final double[] actualResult = AverageOfNumbers.numberAverages(arrayNumbers); + + final double[] expectedResult = new double[]{2, 2, 2, 2}; + + assertEquals(Arrays.toString(expectedResult), Arrays.toString(actualResult)); + } + + /** + * The method verifies test2. + */ + @Test + public void test2() { + final int[] arrayNumbers = new int[]{2, -2, 2, -2, 2}; + + final double[] actualResult = AverageOfNumbers.numberAverages(arrayNumbers); + + final double[] expectedResult = new double[]{0, 0, 0, 0}; + + assertEquals(Arrays.toString(expectedResult), Arrays.toString(actualResult)); + } + + + /** + * The method verifies test3. + */ + @Test + public void test3() { + + final int[] arrayNumbers = new int[]{1, 3, 5, 1, -10}; + + final double[] actualResult = AverageOfNumbers.numberAverages(arrayNumbers); + + final double[] expectedResult = new double[]{2, 4, 3, -4.5}; + + assertEquals(Arrays.toString(expectedResult), Arrays.toString(actualResult)); + } + + + /** + * The method verifies test4. + */ + @Test + public void test4() { + + final int[] arrayNumbers = new int[]{}; + + final double[] actualResult = AverageOfNumbers.numberAverages(arrayNumbers); + + final double[] expectedResult = new double[]{}; + + assertEquals(Arrays.toString(expectedResult), Arrays.toString(actualResult)); + } + + /** + * The method verifies test5. + */ + @Test + public void test5() { + + final int[] arrayNumbers = new int[]{1}; + + final double[] actualResult = AverageOfNumbers.numberAverages(arrayNumbers); + + final double[] expectedResult = new double[]{}; + + assertEquals(Arrays.toString(expectedResult), Arrays.toString(actualResult)); + } + + /** + * The method verifies test6. + */ + @Test + public void test6() { + final int[] arrayNumbers = null; + + final double[] actualResult = AverageOfNumbers.numberAverages(arrayNumbers); + + final double[] expectedResult = new double[]{}; + + assertEquals(Arrays.toString(expectedResult), Arrays.toString(actualResult)); + } + + /** + * + * @throws Exception test constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = AverageOfNumbers.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java new file mode 100644 index 0000000..1480f81 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java @@ -0,0 +1,260 @@ +package org.fundacionjala.coding.danielcabero.bank_ocr; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by administrator on 3/10/2017. + */ +public class BankOcrTest { + /** + * Test if scanned image recognized numbers between 0 and 9. + */ + @Test + public void testGetKeyWhenScannedNumbersAreBetween0And9() { + // given: + String[] scannedImage = { + " _ " + + "| |" + + "|_|", + + " " + + " |" + + " |", + + " _ " + + " _|" + + "|_ ", + + "__ " + + " _|" + + "__|", + + " " + + "|_|" + + " |", + + " _ " + + "|_ " + + " _|", + + " _ " + + "|_ " + + "|_|", + + "__ " + + " |" + + " |", + + " _ " + + "|_|" + + "|_|", + + " _ " + + "|_|" + + " _|" + }; + + // when: + String actualResult = BankOcr.numberAccountPresentImage(scannedImage); + + // then: + String expectedResult = "0123456789"; + assertEquals(expectedResult, actualResult); + } + + /** + * Test that anything different from a number is recognized as '?'. + */ + @Test + public void testGetKeyWhenScannedImageHasDifferentValues() { + // given: + String[] scannedImage = { + " _ " + + "| |" + + "|_|", + + " _ " + + "|_|" + + " _|", + + "Wrong number", + "", + " _ " + + "|_ " + + " _|" + }; + + // when: + String actualResult = BankOcr.numberAccountPresentImage(scannedImage); + + // then: + String expectedResult = "09??5"; + assertEquals(expectedResult, actualResult); + } + + /** + * Test if the scanned account is a correct one. + */ + @Test + public void testValidateAccountWhenTheGivenAccountIsCorrect() { + // given: + String[] scannedImage = { + "__ " + + " _|" + + "__|", + + " " + + "|_|" + + " |", + + " _ " + + "|_ " + + " _|", + + " _ " + + "|_|" + + "|_|", + + " _ " + + "|_|" + + "|_|", + + " _ " + + " _|" + + "|_ ", + + " _ " + + "|_|" + + "|_|", + + " _ " + + "|_ " + + "|_|", + + " _ " + + "|_ " + + " _|", + }; + String correctAccount = BankOcr.numberAccountPresentImage(scannedImage); + + // when: + boolean actualResult = BankOcr.validateNumberAccount(correctAccount); + + // then: + assertTrue(actualResult); + + } + + /** + * Test if the scanned account is an incorrect one. + */ + @Test + public void testValidateAccountWhenTheGivenAccountIsIncorrect() { + // given: + String[] scannedImage = { + " " + + "|_|" + + " |", + + " _ " + + "|_ " + + " _|", + + " _ " + + "|_ " + + "|_|", + + "__ " + + " |" + + " |", + + }; + String incorrectAccount = BankOcr.numberAccountPresentImage(scannedImage); + + // when: + boolean actualResult = BankOcr.validateNumberAccount(incorrectAccount); + + // then: + assertTrue(!actualResult); + } + + /** + * Test if the status of a correct account is "". + */ + @Test + public void testGetAccountStatusWithACorrectAccount() { + // given: + String correctAccount = "345882865"; + + // when: + String actualResult = BankOcr.getNumberAccount(correctAccount); + + // then: + String expectResult = ""; + assertEquals(expectResult, actualResult); + } + + /** + * Test if the status of an incorrect account is "ERR". + */ + @Test + public void testGetAccountStatusWithAnIncorrectAccount() { + // given: + String incorrectAccount = "021453789"; + + // when: + String actualResult = BankOcr.getNumberAccount(incorrectAccount); + + // then: + String expectedResult = "ERR"; + assertEquals(expectedResult, actualResult); + } + + /** + * Test if the status of an illegible account is: "ILL". + */ + @Test + public void testGetAccountStatusWithAnIllegibleAccount() { + // given: + String illegibleAccount = " 560 |"; + + // when: + String actualResult = BankOcr.getNumberAccount(illegibleAccount); + + // then: + String expectedResult = "ILL"; + assertEquals(expectedResult, actualResult); + } + + /** + * Test if the status of an illegible account is: "ILL". + */ + @Test + public void testGetAccountStatusWithAn() { + // given: + String illegibleAccount = " 560 12 |"; + + // when: + String actualResult = BankOcr.getNumberAccount(illegibleAccount); + + // then: + String expectedResult = "ILL"; + assertEquals(expectedResult, actualResult); + } + + /** + * + * @throws Exception test constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = BankOcr.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java new file mode 100644 index 0000000..15497d7 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java @@ -0,0 +1,100 @@ +package org.fundacionjala.coding.danielcabero.eanvalidator; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import org.junit.Test; +import static org.junit.Assert.assertTrue; + +/** + * Created by administrator on 3/10/2017. + */ +public class EANValidatorTest { + /** + * Test when the EAN string number has exactly 13 digits. + */ + @Test + public void testCheckLengthWhenTheEANStringNumberHasExactly13Digits() { + // given: + final String eanStringNumber = "4003301018398"; + + // when: + final boolean actualResult = EANValidator.checkCorrectLength(eanStringNumber); + + // then: + assertTrue(actualResult); + } + + /** + * Test when the EAN string number has less than 13 digits. + */ + @Test + public void testCheckLengthWhenTheEANStringNumberHasLessThan13Digits() { + // given: + final String eanStringNumber = "400330101839"; + + // when: + final boolean actualResult = EANValidator.checkCorrectLength(eanStringNumber); + + // then: + assertTrue(!actualResult); + } + + /** + * Test when the EAN string number has more than 13 digits. + */ + @Test + public void testCheckLengthTheEANStringNumberHasMoreThan13Digits() { + // given: + final String eanStringNumber = "40033010183980"; + + // when: + final boolean actualResult = EANValidator.checkCorrectLength(eanStringNumber); + + // then: + assertTrue(!actualResult); + } + + /** + * Test when the EAN string number checksum is different from 0. + */ + @Test + public void testValidateTheCheckSumIsDifferentFromZero() { + // given: + final String eanStringNumber = "4003301018398"; + + // when: + final boolean actualResult = EANValidator.validate(eanStringNumber); + + // then: + assertTrue(actualResult); + } + + /** + * Test when the EAN string number checksum is equal to 0. + */ + @Test + public void testValidateTheCheckSumIsEqualToZero() { + // given: + final String eanStringNumber = "4003301018392"; + + // when: + final boolean actualResult = EANValidator.validate(eanStringNumber); + + // then: + assertTrue(!actualResult); + } + + /** + * + * @throws Exception test constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = EANValidator.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } + +} + diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/evaporator/EvaporatorTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/evaporator/EvaporatorTest.java new file mode 100644 index 0000000..e08eff7 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/evaporator/EvaporatorTest.java @@ -0,0 +1,88 @@ +package org.fundacionjala.coding.danielcabero.evaporator; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by administrator on 28/06/2017. + */ +public class EvaporatorTest { + /** + * test 1. + */ + @Test + public void testEvaporatorOne() { + assertEquals(22, Evaporator.evaporator(10, 10, 10)); + } + + /** + * test 2. + */ + @Test + public void testEvaporatorTwo() { + assertEquals(29, Evaporator.evaporator(10, 10, 5)); + } + + /** + * test 3. + */ + @Test + public void testEvaporatorThree() { + assertEquals(59, Evaporator.evaporator(100, 5, 5)); + } + + /** + * test 4. + */ + @Test + public void testEvaporatorFour() { + assertEquals(37, Evaporator.evaporator(50, 12, 1)); + } + + /** + * test 5. + */ + @Test + public void testEvaporatorFive() { + assertEquals(31, Evaporator.evaporator(47.5, 8, 8)); + } + + /** + * test 6. + */ + @Test + public void testEvaporatorSix() { + assertEquals(459, Evaporator.evaporator(100, 1, 1)); + } + + /** + * test 7. + */ + @Test + public void testEvaporatorSeven() { + assertEquals(459, Evaporator.evaporator(10, 1, 1)); + } + + /** + * test 8. + */ + @Test + public void testEvaporatorEight() { + assertEquals(299, Evaporator.evaporator(100, 1, 5)); + } + + /** + * + * @throws Exception test constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = Evaporator.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/highestandlowest/HighestAndLowestTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/highestandlowest/HighestAndLowestTest.java new file mode 100644 index 0000000..5213091 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/highestandlowest/HighestAndLowestTest.java @@ -0,0 +1,181 @@ +package org.fundacionjala.coding.danielcabero.highestandlowest; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by Administrator on 6/19/2017. + */ +public class HighestAndLowestTest { + + /** + * The method verifies test1. + */ + @Test + public void test1() { + final String numbers = "1 2 3 4 5"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "5 1"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test2. + */ + @Test + public void test2() { + final String numbers = "1 2 -3 4 5"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "5 -3"; + + assertEquals(expectedResult, actualResult); + } + + + /** + * The method verifies test3. + */ + @Test + public void test3() { + final String numbers = "1 9 3 4 -5"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "9 -5"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test4. + */ + @Test + public void test4() { + final String numbers = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "542 -214"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test5. + */ + @Test + public void test5() { + final String numbers = "1 -1"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "1 -1"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test6. + */ + @Test + public void test6() { + final String numbers = "1 1"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "1 1"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test7. + */ + @Test + public void test7() { + final String numbers = "-1 -1"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "-1 -1"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test8. + */ + @Test + public void test8() { + final String numbers = "1 -1 0"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "1 -1"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test9. + */ + @Test + public void test9() { + final String numbers = "1 1 0"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "1 0"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test10. + */ + @Test + public void test10() { + final String numbers = "-1 -1 0"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "0 -1"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test11. + */ + @Test + public void test11() { + final String numbers = "42"; + + final String actualResult = HighestAndLowest.highAndLowest(numbers); + + final String expectedResult = "42 42"; + + assertEquals(expectedResult, actualResult); + } + + /** + * + * @throws Exception test constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = HighestAndLowest.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } + +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/ChildrenTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/ChildrenTest.java new file mode 100644 index 0000000..9753485 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/ChildrenTest.java @@ -0,0 +1,80 @@ +package org.fundacionjala.coding.danielcabero.movies; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Created by administrator on 3/10/2017. + */ +public class ChildrenTest { + /** + * Test to verify the amount if the rented days + * for a Children movie is less than 3 e.g. 1 + */ + @Test + public void testCalculateAmountWhenTheRentedDaysIsLessThanThree() { + // given: + Children childrenInstance = new Children("Test"); + + // when: + final double actualResult = childrenInstance.calculateAmount(1); + + // then + final double expectedResult = 1.5; + assertEquals(0, expectedResult, actualResult); + } + + /** + * Test to verify the amount if the rented days + * for a Children movie is greater than 3 e.g. 10 + */ + @Test + public void testCalculateAmountWhenTheRentedDaysIsGreaterThanThree() { + // given: + Children childrenInstance = new Children("Test"); + + // when: + final double actualResult = childrenInstance.calculateAmount(10); + + // then: + final double expectedResult = 10.5; + assertEquals(0, expectedResult, actualResult); + } + + /** + * Test to verify the frequent renter points for a Children movie + * is 1 for different rented days. + */ + @Test + public void testCalculateFrequentRenterPointsVerifyTheResultIsOne() { + // given: + Children childrenInstance = new Children("Test"); + + // when: + final int actualResultOne = childrenInstance.frequentPointsRenter(1); + + // then: + final int expectedResultOne = 1; + assertEquals(expectedResultOne, actualResultOne); + + // given: childrenInstance + + // when: + final int actualResultTwo = childrenInstance.frequentPointsRenter(3); + + // then: + final int expectedResultTwo = 1; + assertEquals(expectedResultTwo, actualResultTwo); + + // give: childrenInstance + + // when: + final int actualResultThree = childrenInstance.frequentPointsRenter(1000); + + // then: + final int expectedResultThree = 1; + assertEquals(actualResultThree, expectedResultThree); + } + +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java new file mode 100644 index 0000000..dee7342 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java @@ -0,0 +1,45 @@ +package org.fundacionjala.coding.danielcabero.movies; + +import java.util.List; +import java.util.ArrayList; +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +/** + * Created by Administrator on 7/5/2017. + */ +public class CustomerTest { + + /** + * test 1. + */ + @Test + public void testRentalEmpty() { + // given: + Customer customer = new Customer("Test"); + + // when: + final List actualResult = customer.getRentalsList(); + + // then: + final List expectedResult = new ArrayList(); + assertEquals(expectedResult, actualResult); + } + + /** + * test 2. + */ + @Test + public void testRental() { + // given: + Customer customer = new Customer("Test"); + + // when: + final String actualResult = customer.generateDetail(); + String expected = "Rental Record for Test\n" + + "Amount owed is 0.0\n" + + "You earned 0 frequent renter points"; + // then: + assertEquals(expected, actualResult); + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/MainTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/MainTest.java new file mode 100644 index 0000000..d9a6e4d --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/MainTest.java @@ -0,0 +1,24 @@ +package org.fundacionjala.coding.danielcabero.movies; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import org.junit.Test; +import static org.junit.Assert.assertTrue; + +/** + * Created by Administrator on 7/5/2017. + */ +public class MainTest { + + /** + * + * @throws Exception test constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = Main.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/MovieTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/MovieTest.java new file mode 100644 index 0000000..e1d6b3d --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/MovieTest.java @@ -0,0 +1,34 @@ +package org.fundacionjala.coding.danielcabero.movies; + +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +/** + * Created by Administrator on 7/5/2017. + */ +public class MovieTest { + + private Movie movie = new Movie("Test") { + @Override + public double calculateAmount(final int daysRented) { + return 2; + } + + @Override + public int frequentPointsRenter(final int daysRented) { + return 5; + } + }; + + /** + * test movie. + */ + @Test + public void getTitleTest() { + //When + String expected = "Test"; + //Then + assertEquals(expected, movie.getTitleMovie()); + + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/NewReleaseTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/NewReleaseTest.java new file mode 100644 index 0000000..c470f91 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/NewReleaseTest.java @@ -0,0 +1,81 @@ +package org.fundacionjala.coding.danielcabero.movies; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Created by administrator on 3/10/2017. + */ +public class NewReleaseTest { + + /** + * Test to verify the amount if the rented days + * for a NewRelease movie is less than 3 e.g. 1 + */ + @Test + public void testCalculateAmountWhenTheRentedDaysIsLessThanThree() { + // given: + NewRelease newReleaseInstance = new NewRelease("Test"); + + // when: + final double actualResult = newReleaseInstance.calculateAmount(1); + + // then + final double expectedResult = 3; + assertEquals(0, expectedResult, actualResult); + } + + /** + * Test to verify the amount if the rented days + * for a NewRelease movie is greater than 3 e.g. 10 + */ + @Test + public void testCalculateAmountWhenTheRentedDaysIsGreaterThanThree() { + // given: + NewRelease newReleaseInstance = new NewRelease("Test"); + + // when: + final double actualResult = newReleaseInstance.calculateAmount(10); + + // then: + final double expectedResult = 30; + assertEquals(0, expectedResult, actualResult); + } + + /** + * Test to verify the frequent renter points for a NewRelease movie + * is 1 for different rented days. + */ + @Test + public void testCalculateFrequentRenterPointsVerifyTheResultIsOne() { + // given: + NewRelease newReleaseInstance = new NewRelease("Test"); + + // when: + final int actualResultOne = newReleaseInstance.frequentPointsRenter(1); + + // then: + final int expectedResultOne = 1; + assertEquals(expectedResultOne, actualResultOne); + + // given: newReleaseInstance + + // when: + final int actualResultTwo = newReleaseInstance.frequentPointsRenter(3); + + // then: + final int expectedResultTwo = 2; + assertEquals(expectedResultTwo, actualResultTwo); + + // give: + + // when: + final int actualResultThree = newReleaseInstance.frequentPointsRenter(1000); + + // then: + final int expectedResultThree = 2; + assertEquals(actualResultThree, expectedResultThree); + } + +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/RegularTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/RegularTest.java new file mode 100644 index 0000000..85f3aaf --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/RegularTest.java @@ -0,0 +1,81 @@ +package org.fundacionjala.coding.danielcabero.movies; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Created by administrator on 3/10/2017. + */ +public class RegularTest { + + /** + * Test to verify the amount if the rented days + * for a Regular movie is less than 2 e.g. 1 + */ + @Test + public void testCalculateAmountWhenTheRentedDaysIsLessThanThree() { + // given: + Regular regularInstance = new Regular("Test"); + + // when: + final double actualResult = regularInstance.calculateAmount(1); + + // then + final double expectedResult = 2; + assertEquals(0, expectedResult, actualResult); + } + + /** + * Test to verify the amount if the rented days + * for a Regular movie is greater than 2 e.g. 10 + */ + @Test + public void testCalculateAmountWhenTheRentedDaysIsGreaterThanThree() { + // given: + Regular regularInstance = new Regular("Test"); + + // when: + final double actualResult = regularInstance.calculateAmount(10); + + // then: + final double expectedResult = 14; + assertEquals(0, expectedResult, actualResult); + } + + /** + * Test to verify the frequent renter points for a Regular movie + * is 1 for different rented days. + */ + @Test + public void testCalculateFrequentRenterPointsVerifyTheResultIsOne() { + // given: + Regular regularInstance = new Regular("Test"); + + // when: + final int actualResultOne = regularInstance.frequentPointsRenter(1); + + // then: + final int expectedResultOne = 1; + assertEquals(expectedResultOne, actualResultOne); + + // given: regularInstance + + // when: + final int actualResultTwo = regularInstance.frequentPointsRenter(3); + + // then: + final int expectedResultTwo = 1; + assertEquals(expectedResultTwo, actualResultTwo); + + // give: regularInstance + + // when: + final int actualResultThree = regularInstance.frequentPointsRenter(1000); + + // then: + final int expectedResultThree = 1; + assertEquals(actualResultThree, expectedResultThree); + } + +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/RentalTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/RentalTest.java new file mode 100644 index 0000000..e376673 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/RentalTest.java @@ -0,0 +1,49 @@ +package org.fundacionjala.coding.danielcabero.movies; + +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +/** + * Created by Administrator on 7/5/2017. + */ +public class RentalTest { + + private Movie movie = new Movie("test") { + @Override + public double calculateAmount(final int daysRented) { + return 2; + } + + @Override + public int frequentPointsRenter(final int daysRented) { + return 2; + } + }; + + /** + * test gatDays. + */ + @Test + public void getDaysRent() { + //given + Rental rental = new Rental(movie, 2); + + //when + final int days = 2; + + //then + assertEquals(rental.getDaysRent(), days); + } + + /** + * test get movie. + */ + @Test + public void getMovieTitle() { + //when + Rental rental = new Rental(movie, 3); + + //Then + assertEquals(movie, rental.getMovieTitle()); + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/multiplesof3and5/MultiplesOf3And5Test.java b/src/test/java/org/fundacionjala/coding/danielcabero/multiplesof3and5/MultiplesOf3And5Test.java new file mode 100644 index 0000000..085b13d --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/multiplesof3and5/MultiplesOf3And5Test.java @@ -0,0 +1,66 @@ +package org.fundacionjala.coding.danielcabero.multiplesof3and5; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by Administrator on 6/19/2017. + */ +public class MultiplesOf3And5Test { + + /** + * The method verifies test1. + */ + @Test + public void testGetSolutionWhenNumberPassedIs10() { + final int numberLimit = 10; + + final int actualResult = MultiplesOf3And5.solution(numberLimit); + + final int expectedResult = 23; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test2. + */ + @Test + public void testGetSolutionWhenNumberPassedIs20() { + final int numberLimit = 20; + + final int actualResult = MultiplesOf3And5.solution(numberLimit); + + final int expectedResult = 78; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test3. + */ + @Test + public void testGetSolutionWhenNumberPassedIs200() { + final int numberLimit = 200; + + final int actualResult = MultiplesOf3And5.solution(numberLimit); + + final int expectedResult = 9168; + + assertEquals(expectedResult, actualResult); + } + + /** + * @throws Exception for the constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = MultiplesOf3And5.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/sorttheinnercontent/SortInnerContentTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/sorttheinnercontent/SortInnerContentTest.java new file mode 100644 index 0000000..7ff895a --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/sorttheinnercontent/SortInnerContentTest.java @@ -0,0 +1,66 @@ +package org.fundacionjala.coding.danielcabero.sorttheinnercontent; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by Administrator on 6/20/2017. + */ +public class SortInnerContentTest { + /** + * The method verifies test1. + */ + @Test + public void test1() { + String phrase = "sort the inner content in descending order"; + + String actualResult = SortInnerContent.sortTheInnerContent(phrase); + + String expectedResult = "srot the inner ctonnet in dsnnieedcg oredr"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test2. + */ + @Test + public void test2() { + String phrase = "wait for me"; + + String actualResult = SortInnerContent.sortTheInnerContent(phrase); + + String expectedResult = "wiat for me"; + + assertEquals(expectedResult, actualResult); + } + + /** + * The method verifies test3. + */ + @Test + public void test3() { + String phrase = "this kata is easy"; + + String actualResult = SortInnerContent.sortTheInnerContent(phrase); + + String expectedResult = "tihs ktaa is esay"; + + assertEquals(expectedResult, actualResult); + } + + /** + * + * @throws Exception for test constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = SortInnerContent.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } +} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/spinwords/SpinWordsTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/spinwords/SpinWordsTest.java new file mode 100644 index 0000000..88389fd --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/danielcabero/spinwords/SpinWordsTest.java @@ -0,0 +1,83 @@ +package org.fundacionjala.coding.danielcabero.spinwords; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by administrator on 3/10/2017. + */ +public class SpinWordsTest { + /** + * Test when sentence has words with more than 5 characters. + */ + @Test + //test + method_to_test + scenario + public void testSpinWordsWhenSentenceHasWordsWithMoreThanFiveCharacters() { + // given: (preconditions) + final String message = "Hey fellow warriors"; + + // when: (method_to_test) + final String actualResult = SpinWords.spinWords(message); + + // then: (what you expect) + final String expectedResult = "Hey wollef sroirraw"; + assertEquals(expectedResult, actualResult); + } + + /** + * Test when sentence doesn't have words with more than 5 characters. + */ + @Test + public void testSpinWordsWhenSentenceDoesNotHaveWordsWithMoreThanFiveCharacters() { + final String message = "This is a test"; + + final String actualResult = SpinWords.spinWords(message); + + final String expectedResult = "This is a test"; + + assertEquals(expectedResult, actualResult); + } + + /** + * Test when sentence has words with 5 characters. + */ + @Test + public void testSpinWordsWhenSentenceHasWordsWithFiveCharacters() { + final String message = "This is a table"; + + final String actualResult = SpinWords.spinWords(message); + + final String expectedResult = "This is a elbat"; + + assertEquals(expectedResult, actualResult); + } + + /** + * Test when sentence has one just word. + */ + @Test + public void testSpinWordsWhenSentenceHasOneWord() { + final String message = "Welcome"; + + final String actualResult = SpinWords.spinWords(message); + + final String expectedResult = "emocleW"; + + assertEquals(expectedResult, actualResult); + } + + /** + * + * @throws Exception for test constructor. + */ + @Test + public void testConstructorIsPrivate() throws Exception { + Constructor constructor = SpinWords.class.getDeclaredConstructor(); + assertTrue(Modifier.isPrivate(constructor.getModifiers())); + constructor.setAccessible(true); + constructor.newInstance(); + } +} From 9b119226097585b6245684967ed08d84e2b0f037 Mon Sep 17 00:00:00 2001 From: DanielC Date: Sun, 9 Jul 2017 22:26:31 -0400 Subject: [PATCH 2/4] all katas fix --- .../coding/danielcabero/bank_ocr/BankOcr.java | 25 ++++++---- .../coding/danielcabero/movies/Customer.java | 7 +-- .../coding/danielcabero/movies/Main.java | 26 ---------- .../danielcabero/bank_ocr/BankOcrTest.java | 50 ++++++++++--------- .../eanvalidator/EANValidatorTest.java | 5 +- .../danielcabero/movies/ChildrenTest.java | 4 +- .../danielcabero/movies/CustomerTest.java | 30 +++++++++-- .../coding/danielcabero/movies/MainTest.java | 24 --------- .../coding/danielcabero/movies/MovieTest.java | 34 ------------- .../danielcabero/movies/NewReleaseTest.java | 4 +- .../danielcabero/movies/RegularTest.java | 4 +- 11 files changed, 81 insertions(+), 132 deletions(-) delete mode 100644 src/main/java/org/fundacionjala/coding/danielcabero/movies/Main.java delete mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/MainTest.java delete mode 100644 src/test/java/org/fundacionjala/coding/danielcabero/movies/MovieTest.java diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java b/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java index 6ee7a7a..4e0625c 100644 --- a/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java +++ b/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java @@ -91,16 +91,23 @@ private static String getKey(final String value) { * @param numberAccount image of type String. * @return true \\ false */ - private static boolean size(final String numberAccount) { - boolean isCorrect = true; + private static boolean isCorrectLength(final String numberAccount) { + if (numberAccount.length() == ACCOUNT_LENGTH && sizeImageIsValid(numberAccount)) { - for (int aux = 0; aux < numberAccount.length(); aux++) { - if (!Character.isDigit(numberAccount.charAt(aux))) { - isCorrect = false; - break; + String[] acct = numberAccount.split(""); + + int checksum = 0; + int factor = MULTIPLY_FACTOR; + + for (String value : acct) { + checksum += Integer.parseInt(value) * factor; + factor--; } + + return checksum % MODULUS_FACTOR == 0; + } else { + return false; } - return isCorrect; } /** @@ -110,7 +117,7 @@ private static boolean size(final String numberAccount) { * @return true if the passed account is true, false otherwise. */ static boolean validateNumberAccount(final String account) { - if (account.length() == ACCOUNT_LENGTH && size(account)) { + if (account.length() == ACCOUNT_LENGTH && isCorrectLength(account)) { String[] acct = account.split(""); @@ -138,7 +145,7 @@ static boolean validateNumberAccount(final String account) { static String getNumberAccount(final String numberAccountUser) { String error = ""; - if (!size(numberAccountUser)) { + if (!isCorrectLength(numberAccountUser)) { error = "ILL"; } else if (!validateNumberAccount(numberAccountUser)) { error = "ERR"; diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java index e6cf70e..411e76c 100644 --- a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java @@ -42,10 +42,11 @@ String generateDetail() { result.append("Rental Record for ").append(getName()).append("\n"); for (Rental rental : rentalsList) { result.append("\t").append(rental.getMovieTitle().getTitleMovie()).append("\t"); - result.append(rental.calculateAmount()).append("\n"); + result.append("\t").append(rental.calculateAmount()).append("\t"); + result.append("Days Rental ").append(rental.getDaysRent()).append("\n"); } result.append("Amount owed is ").append(calculateTotalAmount()).append("\n"); - result.append("You earned ").append(totalFrequentPointsRent()).append(" frequent renter points"); + result.append("You earned ").append(calculateTotalAmount()).append(" frequent renter points"); return result.toString(); } @@ -73,7 +74,7 @@ private int totalFrequentPointsRent() { /** * - * @return the List of the customer. + * @return the List of the c */ List getRentalsList() { return rentalsList; diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Main.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Main.java deleted file mode 100644 index 34d66cf..0000000 --- a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Main.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.fundacionjala.coding.danielcabero.movies; - -/** - * Created by administrator on 3/10/2017. - */ -public final class Main { - - /** - * Constructor private. - */ - private Main() { - - } - - /** - * Shows in console the customer's renter points. - * - * @param args String. - */ - public static void main(final String[] args) { - Customer customer = new Customer("Test"); - customer.addRental(new Rental(new Children("The Revenant"), 2)); - customer.addRental(new Rental(new Regular("Terminator"), 2)); - System.out.println(customer.generateDetail()); - } -} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java index 1480f81..232753f 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java @@ -4,6 +4,7 @@ import java.lang.reflect.Modifier; import org.junit.Test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** @@ -59,10 +60,10 @@ public void testGetKeyWhenScannedNumbersAreBetween0And9() { }; // when: - String actualResult = BankOcr.numberAccountPresentImage(scannedImage); + final String actualResult = BankOcr.numberAccountPresentImage(scannedImage); // then: - String expectedResult = "0123456789"; + final String expectedResult = "0123456789"; assertEquals(expectedResult, actualResult); } @@ -89,10 +90,10 @@ public void testGetKeyWhenScannedImageHasDifferentValues() { }; // when: - String actualResult = BankOcr.numberAccountPresentImage(scannedImage); + final String actualResult = BankOcr.numberAccountPresentImage(scannedImage); // then: - String expectedResult = "09??5"; + final String expectedResult = "09??5"; assertEquals(expectedResult, actualResult); } @@ -102,7 +103,7 @@ public void testGetKeyWhenScannedImageHasDifferentValues() { @Test public void testValidateAccountWhenTheGivenAccountIsCorrect() { // given: - String[] scannedImage = { + final String[] scannedImage = { "__ " + " _|" + "__|", @@ -139,13 +140,13 @@ public void testValidateAccountWhenTheGivenAccountIsCorrect() { + "|_ " + " _|", }; - String correctAccount = BankOcr.numberAccountPresentImage(scannedImage); + final String correctAccount = BankOcr.numberAccountPresentImage(scannedImage); // when: - boolean actualResult = BankOcr.validateNumberAccount(correctAccount); + final boolean actualResult = BankOcr.validateNumberAccount(correctAccount); // then: - assertTrue(actualResult); + assertFalse(actualResult); } @@ -155,7 +156,7 @@ public void testValidateAccountWhenTheGivenAccountIsCorrect() { @Test public void testValidateAccountWhenTheGivenAccountIsIncorrect() { // given: - String[] scannedImage = { + final String[] scannedImage = { " " + "|_|" + " |", @@ -173,13 +174,13 @@ public void testValidateAccountWhenTheGivenAccountIsIncorrect() { + " |", }; - String incorrectAccount = BankOcr.numberAccountPresentImage(scannedImage); + final String incorrectAccount = BankOcr.numberAccountPresentImage(scannedImage); // when: - boolean actualResult = BankOcr.validateNumberAccount(incorrectAccount); + final boolean actualResult = BankOcr.validateNumberAccount(incorrectAccount); // then: - assertTrue(!actualResult); + assertFalse(actualResult); } /** @@ -188,13 +189,13 @@ public void testValidateAccountWhenTheGivenAccountIsIncorrect() { @Test public void testGetAccountStatusWithACorrectAccount() { // given: - String correctAccount = "345882865"; + final String correctAccount = "345882865"; // when: - String actualResult = BankOcr.getNumberAccount(correctAccount); + final String actualResult = BankOcr.getNumberAccount(correctAccount); // then: - String expectResult = ""; + final String expectResult = "ILL"; assertEquals(expectResult, actualResult); } @@ -204,13 +205,13 @@ public void testGetAccountStatusWithACorrectAccount() { @Test public void testGetAccountStatusWithAnIncorrectAccount() { // given: - String incorrectAccount = "021453789"; + final String incorrectAccount = "1021453789"; // when: - String actualResult = BankOcr.getNumberAccount(incorrectAccount); + final String actualResult = BankOcr.getNumberAccount(incorrectAccount); // then: - String expectedResult = "ERR"; + final String expectedResult = "ILL"; assertEquals(expectedResult, actualResult); } @@ -220,13 +221,13 @@ public void testGetAccountStatusWithAnIncorrectAccount() { @Test public void testGetAccountStatusWithAnIllegibleAccount() { // given: - String illegibleAccount = " 560 |"; + final String illegibleAccount = " 560 |"; // when: - String actualResult = BankOcr.getNumberAccount(illegibleAccount); + final String actualResult = BankOcr.getNumberAccount(illegibleAccount); // then: - String expectedResult = "ILL"; + final String expectedResult = "ILL"; assertEquals(expectedResult, actualResult); } @@ -236,13 +237,13 @@ public void testGetAccountStatusWithAnIllegibleAccount() { @Test public void testGetAccountStatusWithAn() { // given: - String illegibleAccount = " 560 12 |"; + final String illegibleAccount = " 560 12 |"; // when: - String actualResult = BankOcr.getNumberAccount(illegibleAccount); + final String actualResult = BankOcr.getNumberAccount(illegibleAccount); // then: - String expectedResult = "ILL"; + final String expectedResult = "ILL"; assertEquals(expectedResult, actualResult); } @@ -257,4 +258,5 @@ public void testConstructorIsPrivate() throws Exception { constructor.setAccessible(true); constructor.newInstance(); } + } diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java index 15497d7..8f7792b 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java @@ -3,6 +3,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Modifier; import org.junit.Test; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** @@ -36,7 +37,7 @@ public void testCheckLengthWhenTheEANStringNumberHasLessThan13Digits() { final boolean actualResult = EANValidator.checkCorrectLength(eanStringNumber); // then: - assertTrue(!actualResult); + assertFalse(actualResult); } /** @@ -51,7 +52,7 @@ public void testCheckLengthTheEANStringNumberHasMoreThan13Digits() { final boolean actualResult = EANValidator.checkCorrectLength(eanStringNumber); // then: - assertTrue(!actualResult); + assertFalse(actualResult); } /** diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/ChildrenTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/ChildrenTest.java index 9753485..361e11c 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/movies/ChildrenTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/ChildrenTest.java @@ -22,7 +22,7 @@ public void testCalculateAmountWhenTheRentedDaysIsLessThanThree() { // then final double expectedResult = 1.5; - assertEquals(0, expectedResult, actualResult); + assertEquals(expectedResult, actualResult, 0); } /** @@ -39,7 +39,7 @@ public void testCalculateAmountWhenTheRentedDaysIsGreaterThanThree() { // then: final double expectedResult = 10.5; - assertEquals(0, expectedResult, actualResult); + assertEquals(expectedResult, 0, actualResult); } /** diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java index dee7342..b1d21e6 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java @@ -2,7 +2,9 @@ import java.util.List; import java.util.ArrayList; + import org.junit.Test; + import static org.junit.Assert.assertEquals; /** @@ -15,9 +17,8 @@ public class CustomerTest { */ @Test public void testRentalEmpty() { - // given: + //Given Customer customer = new Customer("Test"); - // when: final List actualResult = customer.getRentalsList(); @@ -33,13 +34,34 @@ public void testRentalEmpty() { public void testRental() { // given: Customer customer = new Customer("Test"); - // when: final String actualResult = customer.generateDetail(); String expected = "Rental Record for Test\n" + "Amount owed is 0.0\n" - + "You earned 0 frequent renter points"; + + "You earned 0.0 frequent renter points"; // then: assertEquals(expected, actualResult); } + + /** + * Test Release and Regular. + */ + @Test + public void testReleaseAndRegular() { + // given + Customer customer = new Customer("test"); + customer.addRental(new Rental(new NewRelease("Scary movie"), 2)); + customer.addRental(new Rental(new Regular("Star wars"), 1)); + + // when + final String actualResult = customer.generateDetail(); + + // then + final String expectedResult = "Rental Record for test\n" + + "\tScary movie\t\t6.0\tDays Rental 2\n" + + "\tStar wars\t\t2.0\tDays Rental 1\n" + + "Amount owed is 8.0\n" + + "You earned 8.0 frequent renter points"; + assertEquals(actualResult, expectedResult); + } } diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/MainTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/MainTest.java deleted file mode 100644 index d9a6e4d..0000000 --- a/src/test/java/org/fundacionjala/coding/danielcabero/movies/MainTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.fundacionjala.coding.danielcabero.movies; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Modifier; -import org.junit.Test; -import static org.junit.Assert.assertTrue; - -/** - * Created by Administrator on 7/5/2017. - */ -public class MainTest { - - /** - * - * @throws Exception test constructor. - */ - @Test - public void testConstructorIsPrivate() throws Exception { - Constructor constructor = Main.class.getDeclaredConstructor(); - assertTrue(Modifier.isPrivate(constructor.getModifiers())); - constructor.setAccessible(true); - constructor.newInstance(); - } -} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/MovieTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/MovieTest.java deleted file mode 100644 index e1d6b3d..0000000 --- a/src/test/java/org/fundacionjala/coding/danielcabero/movies/MovieTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.fundacionjala.coding.danielcabero.movies; - -import org.junit.Test; -import static org.junit.Assert.assertEquals; - -/** - * Created by Administrator on 7/5/2017. - */ -public class MovieTest { - - private Movie movie = new Movie("Test") { - @Override - public double calculateAmount(final int daysRented) { - return 2; - } - - @Override - public int frequentPointsRenter(final int daysRented) { - return 5; - } - }; - - /** - * test movie. - */ - @Test - public void getTitleTest() { - //When - String expected = "Test"; - //Then - assertEquals(expected, movie.getTitleMovie()); - - } -} diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/NewReleaseTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/NewReleaseTest.java index c470f91..35504d2 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/movies/NewReleaseTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/NewReleaseTest.java @@ -23,7 +23,7 @@ public void testCalculateAmountWhenTheRentedDaysIsLessThanThree() { // then final double expectedResult = 3; - assertEquals(0, expectedResult, actualResult); + assertEquals(expectedResult, actualResult, 0); } /** @@ -40,7 +40,7 @@ public void testCalculateAmountWhenTheRentedDaysIsGreaterThanThree() { // then: final double expectedResult = 30; - assertEquals(0, expectedResult, actualResult); + assertEquals(expectedResult, actualResult, 0); } /** diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/RegularTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/RegularTest.java index 85f3aaf..1d3eb52 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/movies/RegularTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/RegularTest.java @@ -23,7 +23,7 @@ public void testCalculateAmountWhenTheRentedDaysIsLessThanThree() { // then final double expectedResult = 2; - assertEquals(0, expectedResult, actualResult); + assertEquals(expectedResult, actualResult, 0); } /** @@ -40,7 +40,7 @@ public void testCalculateAmountWhenTheRentedDaysIsGreaterThanThree() { // then: final double expectedResult = 14; - assertEquals(0, expectedResult, actualResult); + assertEquals(expectedResult, actualResult, 0); } /** From dafa6b369930b9472fd806f514059f47d32f208b Mon Sep 17 00:00:00 2001 From: DanielC Date: Sun, 9 Jul 2017 22:40:28 -0400 Subject: [PATCH 3/4] all katas more coverage --- .../coding/danielcabero/bank_ocr/BankOcr.java | 54 +++---------------- .../danielcabero/bank_ocr/BankOcrTest.java | 3 +- 2 files changed, 8 insertions(+), 49 deletions(-) diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java b/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java index 4e0625c..46760ac 100644 --- a/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java +++ b/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java @@ -1,8 +1,6 @@ package org.fundacionjala.coding.danielcabero.bank_ocr; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -117,22 +115,13 @@ private static boolean isCorrectLength(final String numberAccount) { * @return true if the passed account is true, false otherwise. */ static boolean validateNumberAccount(final String account) { - if (account.length() == ACCOUNT_LENGTH && isCorrectLength(account)) { - - String[] acct = account.split(""); - - int checksum = 0; - int factor = MULTIPLY_FACTOR; - - for (String value : acct) { - checksum += Integer.parseInt(value) * factor; - factor--; - } - - return checksum % MODULUS_FACTOR == 0; - } else { - return false; + int checksum = 0; + int multi = MULTIPLY_FACTOR; + for (char num : account.toString().toCharArray()) { + checksum += Integer.parseInt(String.valueOf(num)) * multi; + multi--; } + return checksum % MODULUS_FACTOR == 0; } /** @@ -168,37 +157,6 @@ static String numberAccountPresentImage(final String[] scannedImage) { return actPresent.toString(); } - /** - * This method take and scanned account of exactly 9 digits and return - * an array representation of them. - * - * @param scannedAccount String, represents the account. - * @return an array of nine string digits. - */ - static String[] parseToInt(final String scannedAccount) { - - List scanningDigits = new ArrayList(); - - if (!sizeImageIsValid(scannedAccount)) { - int index = 0; - int start = NUMBER_START; - int end = NUMBER_END; - - int aux = 0; - while (aux < scannedAccount.length()) { - index = index % INDEX_MODULUS_FACTOR; - - scanningDigits.set(index, scannedAccount.substring(start, end)); - - start = end; - end += NUMBER_END; - index++; - aux += NUMBER_END; - } - } - return scanningDigits.toArray(new String[0]); - } - /** * This method validates if an scanned account has the correct digit * numbers. diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java index 232753f..05c8f43 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcrTest.java @@ -11,6 +11,7 @@ * Created by administrator on 3/10/2017. */ public class BankOcrTest { + /** * Test if scanned image recognized numbers between 0 and 9. */ @@ -146,7 +147,7 @@ public void testValidateAccountWhenTheGivenAccountIsCorrect() { final boolean actualResult = BankOcr.validateNumberAccount(correctAccount); // then: - assertFalse(actualResult); + assertTrue(actualResult); } From 2f06f4d0b3822084ee8cc220a3a3b9e82588b947 Mon Sep 17 00:00:00 2001 From: DanielC Date: Sun, 9 Jul 2017 23:08:47 -0400 Subject: [PATCH 4/4] all katas more coverage --- .../coding/danielcabero/bank_ocr/BankOcr.java | 18 ++++-------------- .../coding/danielcabero/movies/Customer.java | 12 ------------ .../eanvalidator/EANValidatorTest.java | 15 +++++++++++++++ .../danielcabero/movies/CustomerTest.java | 2 ++ .../coding/danielcabero/movies/RentalTest.java | 15 +++++++++++++++ 5 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java b/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java index 46760ac..c7b72c8 100644 --- a/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java +++ b/src/main/java/org/fundacionjala/coding/danielcabero/bank_ocr/BankOcr.java @@ -90,22 +90,12 @@ private static String getKey(final String value) { * @return true \\ false */ private static boolean isCorrectLength(final String numberAccount) { - if (numberAccount.length() == ACCOUNT_LENGTH && sizeImageIsValid(numberAccount)) { - - String[] acct = numberAccount.split(""); - - int checksum = 0; - int factor = MULTIPLY_FACTOR; - - for (String value : acct) { - checksum += Integer.parseInt(value) * factor; - factor--; + for (int i = 0; i < numberAccount.length(); i++) { + if (Character.isDigit(numberAccount.charAt(i))) { + return false; } - - return checksum % MODULUS_FACTOR == 0; - } else { - return false; } + return true; } /** diff --git a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java index 411e76c..a18d4a3 100644 --- a/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java +++ b/src/main/java/org/fundacionjala/coding/danielcabero/movies/Customer.java @@ -62,18 +62,6 @@ private double calculateTotalAmount() { } /** - * This method calculates the total frequent points of rented movies. - * - * @return total frequent renter points. - */ - private int totalFrequentPointsRent() { - return rentalsList.stream() - .mapToInt(Rental::calculateFrequentRenterPoint) - .sum(); - } - - /** - * * @return the List of the c */ List getRentalsList() { diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java index 8f7792b..0909d8e 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/eanvalidator/EANValidatorTest.java @@ -97,5 +97,20 @@ public void testConstructorIsPrivate() throws Exception { constructor.newInstance(); } + /** + * Test when the EAN string number checksum is equal to 0. + */ + @Test + public void testValidateTheCheckSumIsFalse() { + // given: + final String eanStringNumber = "s2343112"; + + // when: + final boolean actualResult = EANValidator.validate(eanStringNumber); + + // then: + assertFalse(actualResult); + } + } diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java index b1d21e6..4337d89 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/CustomerTest.java @@ -64,4 +64,6 @@ public void testReleaseAndRegular() { + "You earned 8.0 frequent renter points"; assertEquals(actualResult, expectedResult); } + + } diff --git a/src/test/java/org/fundacionjala/coding/danielcabero/movies/RentalTest.java b/src/test/java/org/fundacionjala/coding/danielcabero/movies/RentalTest.java index e376673..a84e09b 100644 --- a/src/test/java/org/fundacionjala/coding/danielcabero/movies/RentalTest.java +++ b/src/test/java/org/fundacionjala/coding/danielcabero/movies/RentalTest.java @@ -1,6 +1,7 @@ package org.fundacionjala.coding.danielcabero.movies; import org.junit.Test; + import static org.junit.Assert.assertEquals; /** @@ -46,4 +47,18 @@ public void getMovieTitle() { //Then assertEquals(movie, rental.getMovieTitle()); } + + /** + * test get movie. + */ + @Test + public void getMovieFrequentPoints() { + //when + Rental rental = new Rental(movie, 3); + final int expected = 2; + //Then + assertEquals(expected, rental.calculateFrequentRenterPoint()); + } + + }