diff --git a/game-loop/src/main/java/com/iluwatar/gameloop/GameLoop.java b/game-loop/src/main/java/com/iluwatar/gameloop/GameLoop.java index 474103822..cbb456ccf 100644 --- a/game-loop/src/main/java/com/iluwatar/gameloop/GameLoop.java +++ b/game-loop/src/main/java/com/iluwatar/gameloop/GameLoop.java @@ -70,7 +70,7 @@ public abstract class GameLoop { * @return {@code true} if the game is running. */ public boolean isGameRunning() { - return status == GameStatus.RUNNING ? true : false; + return status == GameStatus.RUNNING; } /** @@ -80,7 +80,7 @@ public abstract class GameLoop { */ protected void processInput() { try { - int lag = new Random().nextInt(200) + 50; + var lag = new Random().nextInt(200) + 50; Thread.sleep(lag); } catch (InterruptedException e) { logger.error(e.getMessage()); diff --git a/game-loop/src/test/java/com/iluwatar/gameloop/AppTest.java b/game-loop/src/test/java/com/iluwatar/gameloop/AppTest.java index 187fe1537..447e4f411 100644 --- a/game-loop/src/test/java/com/iluwatar/gameloop/AppTest.java +++ b/game-loop/src/test/java/com/iluwatar/gameloop/AppTest.java @@ -32,8 +32,7 @@ public class AppTest { @Test public void testMain() { - String[] args = {}; - new App().main(args); + new App().main(new String[]{}); } } diff --git a/game-loop/src/test/java/com/iluwatar/gameloop/GameLoopTest.java b/game-loop/src/test/java/com/iluwatar/gameloop/GameLoopTest.java index 61e2a3bb6..4873cfd47 100644 --- a/game-loop/src/test/java/com/iluwatar/gameloop/GameLoopTest.java +++ b/game-loop/src/test/java/com/iluwatar/gameloop/GameLoopTest.java @@ -65,7 +65,7 @@ public class GameLoopTest { @Test public void testIsGameRunning() { - Assert.assertEquals(false, gameLoop.isGameRunning()); + Assert.assertFalse(gameLoop.isGameRunning()); } } diff --git a/guarded-suspension/src/main/java/com/iluwatar/guarded/suspension/App.java b/guarded-suspension/src/main/java/com/iluwatar/guarded/suspension/App.java index 7c9bc1429..7e300575d 100644 --- a/guarded-suspension/src/main/java/com/iluwatar/guarded/suspension/App.java +++ b/guarded-suspension/src/main/java/com/iluwatar/guarded/suspension/App.java @@ -23,7 +23,6 @@ package com.iluwatar.guarded.suspension; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -45,14 +44,11 @@ public class App { * @param args - command line args */ public static void main(String[] args) { - GuardedQueue guardedQueue = new GuardedQueue(); - ExecutorService executorService = Executors.newFixedThreadPool(3); + var guardedQueue = new GuardedQueue(); + var executorService = Executors.newFixedThreadPool(3); //here we create first thread which is supposed to get from guardedQueue - executorService.execute(() -> { - guardedQueue.get(); - } - ); + executorService.execute(guardedQueue::get); // here we wait two seconds to show that the thread which is trying // to get from guardedQueue will be waiting @@ -63,10 +59,7 @@ public class App { } // now we execute second thread which will put number to guardedQueue // and notify first thread that it could get - executorService.execute(() -> { - guardedQueue.put(20); - } - ); + executorService.execute(() -> guardedQueue.put(20)); executorService.shutdown(); try { executorService.awaitTermination(30, TimeUnit.SECONDS); diff --git a/guarded-suspension/src/test/java/com/iluwatar/guarded/suspension/GuardedQueueTest.java b/guarded-suspension/src/test/java/com/iluwatar/guarded/suspension/GuardedQueueTest.java index 0cd358822..38d451ced 100644 --- a/guarded-suspension/src/test/java/com/iluwatar/guarded/suspension/GuardedQueueTest.java +++ b/guarded-suspension/src/test/java/com/iluwatar/guarded/suspension/GuardedQueueTest.java @@ -23,13 +23,11 @@ package com.iluwatar.guarded.suspension; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; - -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; /** * Test for Guarded Queue @@ -39,8 +37,8 @@ public class GuardedQueueTest { @Test public void testGet() { - GuardedQueue g = new GuardedQueue(); - ExecutorService executorService = Executors.newFixedThreadPool(2); + var g = new GuardedQueue(); + var executorService = Executors.newFixedThreadPool(2); executorService.submit(() -> value = g.get()); executorService.submit(() -> g.put(10)); executorService.shutdown(); @@ -54,7 +52,7 @@ public class GuardedQueueTest { @Test public void testPut() { - GuardedQueue g = new GuardedQueue(); + var g = new GuardedQueue(); g.put(12); assertEquals(Integer.valueOf(12), g.get()); } diff --git a/half-sync-half-async/src/main/java/com/iluwatar/halfsynchalfasync/App.java b/half-sync-half-async/src/main/java/com/iluwatar/halfsynchalfasync/App.java index c559fca59..7df2264ab 100644 --- a/half-sync-half-async/src/main/java/com/iluwatar/halfsynchalfasync/App.java +++ b/half-sync-half-async/src/main/java/com/iluwatar/halfsynchalfasync/App.java @@ -70,7 +70,7 @@ public class App { * @param args command line args */ public static void main(String[] args) { - AsynchronousService service = new AsynchronousService(new LinkedBlockingQueue<>()); + var service = new AsynchronousService(new LinkedBlockingQueue<>()); /* * A new task to calculate sum is received but as this is main thread, it should not block. So * it passes it to the asynchronous task layer to compute and proceeds with handling other diff --git a/half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync/AppTest.java b/half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync/AppTest.java index d0526085a..b3cf4839b 100644 --- a/half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync/AppTest.java +++ b/half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync/AppTest.java @@ -25,12 +25,8 @@ package com.iluwatar.halfsynchalfasync; import org.junit.jupiter.api.Test; -import java.util.concurrent.ExecutionException; - /** - * * Application test - * */ public class AppTest { diff --git a/half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync/AsynchronousServiceTest.java b/half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync/AsynchronousServiceTest.java index f8974bf1c..91f9f9e2d 100644 --- a/half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync/AsynchronousServiceTest.java +++ b/half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync/AsynchronousServiceTest.java @@ -57,13 +57,13 @@ public class AsynchronousServiceTest { @Test public void testPerfectExecution() throws Exception { - final Object result = new Object(); + final var result = new Object(); when(task.call()).thenReturn(result); service.execute(task); verify(task, timeout(2000)).onPostCall(eq(result)); - final InOrder inOrder = inOrder(task); + final var inOrder = inOrder(task); inOrder.verify(task, times(1)).onPreCall(); inOrder.verify(task, times(1)).call(); inOrder.verify(task, times(1)).onPostCall(eq(result)); @@ -73,13 +73,13 @@ public class AsynchronousServiceTest { @Test public void testCallException() throws Exception { - final IOException exception = new IOException(); + final var exception = new IOException(); when(task.call()).thenThrow(exception); service.execute(task); verify(task, timeout(2000)).onError(eq(exception)); - final InOrder inOrder = inOrder(task); + final var inOrder = inOrder(task); inOrder.verify(task, times(1)).onPreCall(); inOrder.verify(task, times(1)).call(); inOrder.verify(task, times(1)).onError(exception); @@ -89,13 +89,13 @@ public class AsynchronousServiceTest { @Test public void testPreCallException() { - final IllegalStateException exception = new IllegalStateException(); + final var exception = new IllegalStateException(); doThrow(exception).when(task).onPreCall(); service.execute(task); verify(task, timeout(2000)).onError(eq(exception)); - final InOrder inOrder = inOrder(task); + final var inOrder = inOrder(task); inOrder.verify(task, times(1)).onPreCall(); inOrder.verify(task, times(1)).onError(exception); diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/App.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/App.java index 4255b3359..1733ea2ea 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/App.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/App.java @@ -24,7 +24,6 @@ package com.iluwatar.hexagonal; import com.google.inject.Guice; -import com.google.inject.Injector; import com.iluwatar.hexagonal.domain.LotteryAdministration; import com.iluwatar.hexagonal.domain.LotteryService; import com.iluwatar.hexagonal.module.LotteryTestingModule; @@ -63,14 +62,14 @@ public class App { */ public static void main(String[] args) { - Injector injector = Guice.createInjector(new LotteryTestingModule()); + var injector = Guice.createInjector(new LotteryTestingModule()); // start new lottery round - LotteryAdministration administration = injector.getInstance(LotteryAdministration.class); + var administration = injector.getInstance(LotteryAdministration.class); administration.resetLottery(); // submit some lottery tickets - LotteryService service = injector.getInstance(LotteryService.class); + var service = injector.getInstance(LotteryService.class); SampleData.submitTickets(service, 20); // perform lottery diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java index ca61b7649..4a62d2d90 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministration.java @@ -24,7 +24,6 @@ package com.iluwatar.hexagonal.administration; import com.google.inject.Guice; -import com.google.inject.Injector; import com.iluwatar.hexagonal.domain.LotteryAdministration; import com.iluwatar.hexagonal.domain.LotteryService; import com.iluwatar.hexagonal.module.LotteryModule; @@ -46,17 +45,16 @@ public class ConsoleAdministration { */ public static void main(String[] args) { MongoConnectionPropertiesLoader.load(); - Injector injector = Guice.createInjector(new LotteryModule()); - LotteryAdministration administration = injector.getInstance(LotteryAdministration.class); - LotteryService service = injector.getInstance(LotteryService.class); + var injector = Guice.createInjector(new LotteryModule()); + var administration = injector.getInstance(LotteryAdministration.class); + var service = injector.getInstance(LotteryService.class); SampleData.submitTickets(service, 20); - ConsoleAdministrationSrv consoleAdministration = - new ConsoleAdministrationSrvImpl(administration, LOGGER); - try (Scanner scanner = new Scanner(System.in)) { - boolean exit = false; + var consoleAdministration = new ConsoleAdministrationSrvImpl(administration, LOGGER); + try (var scanner = new Scanner(System.in)) { + var exit = false; while (!exit) { printMainMenu(); - String cmd = readString(scanner); + var cmd = readString(scanner); if ("1".equals(cmd)) { consoleAdministration.getAllSubmittedTickets(); } else if ("2".equals(cmd)) { diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrvImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrvImpl.java index fbd00aa1f..7de34ca15 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrvImpl.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/administration/ConsoleAdministrationSrvImpl.java @@ -50,7 +50,7 @@ public class ConsoleAdministrationSrvImpl implements ConsoleAdministrationSrv { @Override public void performLottery() { - LotteryNumbers numbers = administration.performLottery(); + var numbers = administration.performLottery(); logger.info("The winning numbers: {}", numbers.getNumbersAsString()); logger.info("Time to reset the database for next round, eh?"); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/banking/MongoBank.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/banking/MongoBank.java index e1c720c11..b34da3e17 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/banking/MongoBank.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/banking/MongoBank.java @@ -28,7 +28,6 @@ import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.UpdateOptions; import java.util.ArrayList; -import java.util.List; import org.bson.Document; /** @@ -107,30 +106,31 @@ public class MongoBank implements WireTransfers { @Override public void setFunds(String bankAccount, int amount) { - Document search = new Document("_id", bankAccount); - Document update = new Document("_id", bankAccount).append("funds", amount); - accountsCollection - .updateOne(search, new Document("$set", update), new UpdateOptions().upsert(true)); + var search = new Document("_id", bankAccount); + var update = new Document("_id", bankAccount).append("funds", amount); + var updateOptions = new UpdateOptions().upsert(true); + accountsCollection.updateOne(search, new Document("$set", update), updateOptions); } @Override public int getFunds(String bankAccount) { - Document search = new Document("_id", bankAccount); - List results = accountsCollection.find(search).limit(1).into(new ArrayList<>()); - if (results.size() > 0) { - return results.get(0).getInteger("funds"); - } else { - return 0; - } + return accountsCollection + .find(new Document("_id", bankAccount)) + .limit(1) + .into(new ArrayList<>()) + .stream() + .findFirst() + .map(x -> x.getInteger("funds")) + .orElse(0); } @Override public boolean transferFunds(int amount, String sourceAccount, String destinationAccount) { - int sourceFunds = getFunds(sourceAccount); + var sourceFunds = getFunds(sourceAccount); if (sourceFunds < amount) { return false; } else { - int destFunds = getFunds(destinationAccount); + var destFunds = getFunds(destinationAccount); setFunds(sourceAccount, sourceFunds - amount); setFunds(destinationAccount, destFunds + amount); return true; diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/database/InMemoryTicketRepository.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/database/InMemoryTicketRepository.java index a580a7cf5..973747acc 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/database/InMemoryTicketRepository.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/database/InMemoryTicketRepository.java @@ -38,17 +38,12 @@ public class InMemoryTicketRepository implements LotteryTicketRepository { @Override public Optional findById(LotteryTicketId id) { - LotteryTicket ticket = tickets.get(id); - if (ticket == null) { - return Optional.empty(); - } else { - return Optional.of(ticket); - } + return Optional.ofNullable(tickets.get(id)); } @Override public Optional save(LotteryTicket ticket) { - LotteryTicketId id = new LotteryTicketId(); + var id = new LotteryTicketId(); tickets.put(id, ticket); return Optional.of(id); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/database/MongoTicketRepository.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/database/MongoTicketRepository.java index 794cd363f..96ab74ba3 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/database/MongoTicketRepository.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/database/MongoTicketRepository.java @@ -32,11 +32,9 @@ import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; import org.bson.Document; @@ -95,7 +93,7 @@ public class MongoTicketRepository implements LotteryTicketRepository { } private void initCounters() { - Document doc = new Document("_id", "ticketId").append("seq", 1); + var doc = new Document("_id", "ticketId").append("seq", 1); countersCollection.insertOne(doc); } @@ -105,10 +103,10 @@ public class MongoTicketRepository implements LotteryTicketRepository { * @return next ticket id */ public int getNextId() { - Document find = new Document("_id", "ticketId"); - Document increase = new Document("seq", 1); - Document update = new Document("$inc", increase); - Document result = countersCollection.findOneAndUpdate(find, update); + var find = new Document("_id", "ticketId"); + var increase = new Document("seq", 1); + var update = new Document("$inc", increase); + var result = countersCollection.findOneAndUpdate(find, update); return result.getInteger("seq"); } @@ -132,20 +130,19 @@ public class MongoTicketRepository implements LotteryTicketRepository { @Override public Optional findById(LotteryTicketId id) { - Document find = new Document("ticketId", id.getId()); - List results = ticketsCollection.find(find).limit(1).into(new ArrayList<>()); - if (results.size() > 0) { - LotteryTicket lotteryTicket = docToTicket(results.get(0)); - return Optional.of(lotteryTicket); - } else { - return Optional.empty(); - } + return ticketsCollection + .find(new Document("ticketId", id.getId())) + .limit(1) + .into(new ArrayList<>()) + .stream() + .findFirst() + .map(this::docToTicket); } @Override public Optional save(LotteryTicket ticket) { - int ticketId = getNextId(); - Document doc = new Document("ticketId", ticketId); + var ticketId = getNextId(); + var doc = new Document("ticketId", ticketId); doc.put("email", ticket.getPlayerDetails().getEmail()); doc.put("bank", ticket.getPlayerDetails().getBankAccount()); doc.put("phone", ticket.getPlayerDetails().getPhoneNumber()); @@ -156,13 +153,12 @@ public class MongoTicketRepository implements LotteryTicketRepository { @Override public Map findAll() { - Map map = new HashMap<>(); - List docs = ticketsCollection.find(new Document()).into(new ArrayList<>()); - for (Document doc : docs) { - LotteryTicket lotteryTicket = docToTicket(doc); - map.put(lotteryTicket.getId(), lotteryTicket); - } - return map; + return ticketsCollection + .find(new Document()) + .into(new ArrayList<>()) + .stream() + .map(this::docToTicket) + .collect(Collectors.toMap(LotteryTicket::getId, Function.identity())); } @Override @@ -171,13 +167,13 @@ public class MongoTicketRepository implements LotteryTicketRepository { } private LotteryTicket docToTicket(Document doc) { - PlayerDetails playerDetails = new PlayerDetails(doc.getString("email"), doc.getString("bank"), + var playerDetails = new PlayerDetails(doc.getString("email"), doc.getString("bank"), doc.getString("phone")); - Set numbers = Arrays.stream(doc.getString("numbers").split(",")) + var numbers = Arrays.stream(doc.getString("numbers").split(",")) .map(Integer::parseInt) .collect(Collectors.toSet()); - LotteryNumbers lotteryNumbers = LotteryNumbers.create(numbers); - return new LotteryTicket(new LotteryTicketId(doc - .getInteger("ticketId")), playerDetails, lotteryNumbers); + var lotteryNumbers = LotteryNumbers.create(numbers); + var ticketId = new LotteryTicketId(doc.getInteger("ticketId")); + return new LotteryTicket(ticketId, playerDetails, lotteryNumbers); } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java index b9ebff446..b174a4372 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java @@ -23,6 +23,9 @@ package com.iluwatar.hexagonal.domain; +import static com.iluwatar.hexagonal.domain.LotteryConstants.PRIZE_AMOUNT; +import static com.iluwatar.hexagonal.domain.LotteryConstants.SERVICE_BANK_ACCOUNT; + import com.google.inject.Inject; import com.iluwatar.hexagonal.banking.WireTransfers; import com.iluwatar.hexagonal.database.LotteryTicketRepository; @@ -60,23 +63,21 @@ public class LotteryAdministration { * Draw lottery numbers. */ public LotteryNumbers performLottery() { - LotteryNumbers numbers = LotteryNumbers.createRandom(); - Map tickets = getAllSubmittedTickets(); - for (LotteryTicketId id : tickets.keySet()) { - LotteryTicketCheckResult result = LotteryUtils.checkTicketForPrize(repository, id, numbers); - if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) { - boolean transferred = wireTransfers.transferFunds(LotteryConstants.PRIZE_AMOUNT, - LotteryConstants.SERVICE_BANK_ACCOUNT, tickets.get(id).getPlayerDetails() - .getBankAccount()); - if (transferred) { - notifications - .ticketWon(tickets.get(id).getPlayerDetails(), LotteryConstants.PRIZE_AMOUNT); + var numbers = LotteryNumbers.createRandom(); + var tickets = getAllSubmittedTickets(); + for (var id : tickets.keySet()) { + var lotteryTicket = tickets.get(id); + var playerDetails = lotteryTicket.getPlayerDetails(); + var playerAccount = playerDetails.getBankAccount(); + var result = LotteryUtils.checkTicketForPrize(repository, id, numbers).getResult(); + if (result == LotteryTicketCheckResult.CheckResult.WIN_PRIZE) { + if (wireTransfers.transferFunds(PRIZE_AMOUNT, SERVICE_BANK_ACCOUNT, playerAccount)) { + notifications.ticketWon(playerDetails, PRIZE_AMOUNT); } else { - notifications - .prizeError(tickets.get(id).getPlayerDetails(), LotteryConstants.PRIZE_AMOUNT); + notifications.prizeError(playerDetails, PRIZE_AMOUNT); } - } else if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.NO_PRIZE)) { - notifications.ticketDidNotWin(tickets.get(id).getPlayerDetails()); + } else if (result == LotteryTicketCheckResult.CheckResult.NO_PRIZE) { + notifications.ticketDidNotWin(playerDetails); } } return numbers; diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryNumbers.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryNumbers.java index 9dc00ec76..8988bba88 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryNumbers.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryNumbers.java @@ -99,9 +99,9 @@ public class LotteryNumbers { */ private void generateRandomNumbers() { numbers.clear(); - RandomNumberGenerator generator = new RandomNumberGenerator(MIN_NUMBER, MAX_NUMBER); + var generator = new RandomNumberGenerator(MIN_NUMBER, MAX_NUMBER); while (numbers.size() < NUM_NUMBERS) { - int num = generator.nextInt(); + var num = generator.nextInt(); numbers.add(num); } } @@ -141,8 +141,8 @@ public class LotteryNumbers { @Override public int hashCode() { - final int prime = 31; - int result = 1; + final var prime = 31; + var result = 1; result = prime * result + ((numbers == null) ? 0 : numbers.hashCode()); return result; } @@ -158,14 +158,11 @@ public class LotteryNumbers { if (getClass() != obj.getClass()) { return false; } - LotteryNumbers other = (LotteryNumbers) obj; + var other = (LotteryNumbers) obj; if (numbers == null) { - if (other.numbers != null) { - return false; - } - } else if (!numbers.equals(other.numbers)) { - return false; + return other.numbers == null; + } else { + return numbers.equals(other.numbers); } - return true; } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryService.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryService.java index 212671d77..cfd04c45f 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryService.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryService.java @@ -23,6 +23,9 @@ package com.iluwatar.hexagonal.domain; +import static com.iluwatar.hexagonal.domain.LotteryConstants.SERVICE_BANK_ACCOUNT; +import static com.iluwatar.hexagonal.domain.LotteryConstants.TICKET_PRIZE; + import com.google.inject.Inject; import com.iluwatar.hexagonal.banking.WireTransfers; import com.iluwatar.hexagonal.database.LotteryTicketRepository; @@ -53,15 +56,16 @@ public class LotteryService { * Submit lottery ticket to participate in the lottery. */ public Optional submitTicket(LotteryTicket ticket) { - boolean result = wireTransfers.transferFunds(LotteryConstants.TICKET_PRIZE, - ticket.getPlayerDetails().getBankAccount(), LotteryConstants.SERVICE_BANK_ACCOUNT); + var playerDetails = ticket.getPlayerDetails(); + var playerAccount = playerDetails.getBankAccount(); + var result = wireTransfers.transferFunds(TICKET_PRIZE, playerAccount, SERVICE_BANK_ACCOUNT); if (!result) { - notifications.ticketSubmitError(ticket.getPlayerDetails()); + notifications.ticketSubmitError(playerDetails); return Optional.empty(); } - Optional optional = repository.save(ticket); + var optional = repository.save(ticket); if (optional.isPresent()) { - notifications.ticketSubmitted(ticket.getPlayerDetails()); + notifications.ticketSubmitted(playerDetails); } return optional; } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicket.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicket.java index 91c041273..86a5a5487 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicket.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicket.java @@ -82,8 +82,8 @@ public class LotteryTicket { @Override public int hashCode() { - final int prime = 31; - int result = 1; + final var prime = 31; + var result = 1; result = prime * result + ((lotteryNumbers == null) ? 0 : lotteryNumbers.hashCode()); result = prime * result + ((playerDetails == null) ? 0 : playerDetails.hashCode()); return result; @@ -100,7 +100,7 @@ public class LotteryTicket { if (getClass() != obj.getClass()) { return false; } - LotteryTicket other = (LotteryTicket) obj; + var other = (LotteryTicket) obj; if (lotteryNumbers == null) { if (other.lotteryNumbers != null) { return false; @@ -109,12 +109,9 @@ public class LotteryTicket { return false; } if (playerDetails == null) { - if (other.playerDetails != null) { - return false; - } - } else if (!playerDetails.equals(other.playerDetails)) { - return false; + return other.playerDetails == null; + } else { + return playerDetails.equals(other.playerDetails); } - return true; } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResult.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResult.java index c7f07c1df..640300b62 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResult.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResult.java @@ -76,8 +76,8 @@ public class LotteryTicketCheckResult { @Override public int hashCode() { - final int prime = 31; - int result = 1; + final var prime = 31; + var result = 1; result = prime * result + ((checkResult == null) ? 0 : checkResult.hashCode()); result = prime * result + prizeAmount; return result; @@ -94,7 +94,7 @@ public class LotteryTicketCheckResult { if (getClass() != obj.getClass()) { return false; } - LotteryTicketCheckResult other = (LotteryTicketCheckResult) obj; + var other = (LotteryTicketCheckResult) obj; return checkResult == other.checkResult && prizeAmount == other.prizeAmount; } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketId.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketId.java index d4c036ece..dfa324449 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketId.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicketId.java @@ -59,10 +59,9 @@ public class LotteryTicketId { return false; } - LotteryTicketId that = (LotteryTicketId) o; + var that = (LotteryTicketId) o; return id == that.id; - } @Override diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryUtils.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryUtils.java index 84f9af9e8..ce7cc8aef 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryUtils.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryUtils.java @@ -25,7 +25,6 @@ package com.iluwatar.hexagonal.domain; import com.iluwatar.hexagonal.database.LotteryTicketRepository; import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult; -import java.util.Optional; /** * Lottery utilities. @@ -43,7 +42,7 @@ public class LotteryUtils { LotteryTicketId id, LotteryNumbers winningNumbers ) { - Optional optional = repository.findById(id); + var optional = repository.findById(id); if (optional.isPresent()) { if (optional.get().getNumbers().equals(winningNumbers)) { return new LotteryTicketCheckResult(CheckResult.WIN_PRIZE, 1000); diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/PlayerDetails.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/PlayerDetails.java index f2c09744c..70a2aa452 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/PlayerDetails.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/PlayerDetails.java @@ -77,8 +77,8 @@ public class PlayerDetails { @Override public int hashCode() { - final int prime = 31; - int result = 1; + final var prime = 31; + var result = 1; result = prime * result + ((bankAccountNumber == null) ? 0 : bankAccountNumber.hashCode()); result = prime * result + ((emailAddress == null) ? 0 : emailAddress.hashCode()); result = prime * result + ((phoneNumber == null) ? 0 : phoneNumber.hashCode()); @@ -96,7 +96,7 @@ public class PlayerDetails { if (getClass() != obj.getClass()) { return false; } - PlayerDetails other = (PlayerDetails) obj; + var other = (PlayerDetails) obj; if (bankAccountNumber == null) { if (other.bankAccountNumber != null) { return false; @@ -112,12 +112,9 @@ public class PlayerDetails { return false; } if (phoneNumber == null) { - if (other.phoneNumber != null) { - return false; - } - } else if (!phoneNumber.equals(other.phoneNumber)) { - return false; + return other.phoneNumber == null; + } else { + return phoneNumber.equals(other.phoneNumber); } - return true; } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/eventlog/MongoEventLog.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/eventlog/MongoEventLog.java index f979506e4..ba46f2d97 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/eventlog/MongoEventLog.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/eventlog/MongoEventLog.java @@ -107,7 +107,7 @@ public class MongoEventLog implements LotteryEventLog { @Override public void ticketSubmitted(PlayerDetails details) { - Document document = new Document("email", details.getEmail()); + var document = new Document("email", details.getEmail()); document.put("phone", details.getPhoneNumber()); document.put("bank", details.getBankAccount()); document @@ -118,7 +118,7 @@ public class MongoEventLog implements LotteryEventLog { @Override public void ticketSubmitError(PlayerDetails details) { - Document document = new Document("email", details.getEmail()); + var document = new Document("email", details.getEmail()); document.put("phone", details.getPhoneNumber()); document.put("bank", details.getBankAccount()); document.put("message", "Lottery ticket could not be submitted because lack of funds."); @@ -128,7 +128,7 @@ public class MongoEventLog implements LotteryEventLog { @Override public void ticketDidNotWin(PlayerDetails details) { - Document document = new Document("email", details.getEmail()); + var document = new Document("email", details.getEmail()); document.put("phone", details.getPhoneNumber()); document.put("bank", details.getBankAccount()); document.put("message", "Lottery ticket was checked and unfortunately did not win this time."); @@ -138,7 +138,7 @@ public class MongoEventLog implements LotteryEventLog { @Override public void ticketWon(PlayerDetails details, int prizeAmount) { - Document document = new Document("email", details.getEmail()); + var document = new Document("email", details.getEmail()); document.put("phone", details.getPhoneNumber()); document.put("bank", details.getBankAccount()); document.put("message", String @@ -150,7 +150,7 @@ public class MongoEventLog implements LotteryEventLog { @Override public void prizeError(PlayerDetails details, int prizeAmount) { - Document document = new Document("email", details.getEmail()); + var document = new Document("email", details.getEmail()); document.put("phone", details.getPhoneNumber()); document.put("bank", details.getBankAccount()); document.put("message", String diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/eventlog/StdOutEventLog.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/eventlog/StdOutEventLog.java index 284fc4d1c..474ab980e 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/eventlog/StdOutEventLog.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/eventlog/StdOutEventLog.java @@ -42,9 +42,8 @@ public class StdOutEventLog implements LotteryEventLog { @Override public void ticketDidNotWin(PlayerDetails details) { - LOGGER - .info("Lottery ticket for {} was checked and unfortunately did not win this time.", details - .getEmail()); + LOGGER.info("Lottery ticket for {} was checked and unfortunately did not win this time.", + details.getEmail()); } @Override @@ -55,9 +54,8 @@ public class StdOutEventLog implements LotteryEventLog { @Override public void prizeError(PlayerDetails details, int prizeAmount) { - LOGGER - .error("Lottery ticket for {} has won! Unfortunately the bank credit transfer of" - + " {} failed.", details.getEmail(), prizeAmount); + LOGGER.error("Lottery ticket for {} has won! Unfortunately the bank credit transfer of" + + " {} failed.", details.getEmail(), prizeAmount); } @Override diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/mongo/MongoConnectionPropertiesLoader.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/mongo/MongoConnectionPropertiesLoader.java index 2d8463f7f..c5888cd8f 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/mongo/MongoConnectionPropertiesLoader.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/mongo/MongoConnectionPropertiesLoader.java @@ -38,12 +38,12 @@ public class MongoConnectionPropertiesLoader { * Try to load connection properties from file. Fall back to default connection properties. */ public static void load() { - String host = DEFAULT_HOST; - int port = DEFAULT_PORT; - String path = System.getProperty("hexagonal.properties.path"); - Properties properties = new Properties(); + var host = DEFAULT_HOST; + var port = DEFAULT_PORT; + var path = System.getProperty("hexagonal.properties.path"); + var properties = new Properties(); if (path != null) { - try (FileInputStream fin = new FileInputStream(path)) { + try (var fin = new FileInputStream(path)) { properties.load(fin); host = properties.getProperty("mongo-host"); port = Integer.parseInt(properties.getProperty("mongo-port")); diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java index ccda4a208..42e49713d 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java @@ -30,8 +30,10 @@ import com.iluwatar.hexagonal.domain.LotteryService; import com.iluwatar.hexagonal.domain.LotteryTicket; import com.iluwatar.hexagonal.domain.LotteryTicketId; import com.iluwatar.hexagonal.domain.PlayerDetails; +import java.util.AbstractMap.SimpleEntry; import java.util.List; import java.util.Random; +import java.util.stream.Collectors; /** * Utilities for creating sample lottery tickets. @@ -83,26 +85,28 @@ public class SampleData { new PlayerDetails("xavier@google.com", "143-947", "+375245"), new PlayerDetails("harriet@google.com", "842-404", "+131243252") ); - InMemoryBank wireTransfers = new InMemoryBank(); - for (PlayerDetails player : PLAYERS) { - wireTransfers.setFunds(player.getBankAccount(), - RANDOM.nextInt(LotteryConstants.PLAYER_MAX_BALANCE)); - } + var wireTransfers = new InMemoryBank(); + PLAYERS.stream() + .map(PlayerDetails::getBankAccount) + .map(e -> new SimpleEntry<>(e, RANDOM.nextInt(LotteryConstants.PLAYER_MAX_BALANCE))) + .collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue)) + .forEach(wireTransfers::setFunds); } /** * Inserts lottery tickets into the database based on the sample data. */ public static void submitTickets(LotteryService lotteryService, int numTickets) { - for (int i = 0; i < numTickets; i++) { - LotteryTicket ticket = new LotteryTicket(new LotteryTicketId(), - getRandomPlayerDetails(), LotteryNumbers.createRandom()); + for (var i = 0; i < numTickets; i++) { + var randomPlayerDetails = getRandomPlayerDetails(); + var lotteryNumbers = LotteryNumbers.createRandom(); + var lotteryTicketId = new LotteryTicketId(); + var ticket = new LotteryTicket(lotteryTicketId, randomPlayerDetails, lotteryNumbers); lotteryService.submitTicket(ticket); } } private static PlayerDetails getRandomPlayerDetails() { - int idx = RANDOM.nextInt(PLAYERS.size()); - return PLAYERS.get(idx); + return PLAYERS.get(RANDOM.nextInt(PLAYERS.size())); } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java index dccbf68eb..d77204b92 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java @@ -24,7 +24,6 @@ package com.iluwatar.hexagonal.service; import com.google.inject.Guice; -import com.google.inject.Injector; import com.iluwatar.hexagonal.banking.WireTransfers; import com.iluwatar.hexagonal.domain.LotteryService; import com.iluwatar.hexagonal.module.LotteryModule; @@ -45,15 +44,15 @@ public class ConsoleLottery { */ public static void main(String[] args) { MongoConnectionPropertiesLoader.load(); - Injector injector = Guice.createInjector(new LotteryModule()); - LotteryService service = injector.getInstance(LotteryService.class); - WireTransfers bank = injector.getInstance(WireTransfers.class); + var injector = Guice.createInjector(new LotteryModule()); + var service = injector.getInstance(LotteryService.class); + var bank = injector.getInstance(WireTransfers.class); try (Scanner scanner = new Scanner(System.in)) { - boolean exit = false; + var exit = false; while (!exit) { printMainMenu(); - String cmd = readString(scanner); - LotteryConsoleService lotteryConsoleService = new LotteryConsoleServiceImpl(LOGGER); + var cmd = readString(scanner); + var lotteryConsoleService = new LotteryConsoleServiceImpl(LOGGER); if ("1".equals(cmd)) { lotteryConsoleService.queryLotteryAccountFunds(bank, scanner); } else if ("2".equals(cmd)) { diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java index d100dba03..c32ede62e 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/service/LotteryConsoleServiceImpl.java @@ -31,10 +31,7 @@ import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult; import com.iluwatar.hexagonal.domain.LotteryTicketId; import com.iluwatar.hexagonal.domain.PlayerDetails; import java.util.Arrays; -import java.util.HashSet; -import java.util.Optional; import java.util.Scanner; -import java.util.Set; import java.util.stream.Collectors; import org.slf4j.Logger; @@ -55,20 +52,18 @@ public class LotteryConsoleServiceImpl implements LotteryConsoleService { @Override public void checkTicket(LotteryService service, Scanner scanner) { logger.info("What is the ID of the lottery ticket?"); - String id = readString(scanner); + var id = readString(scanner); logger.info("Give the 4 comma separated winning numbers?"); - String numbers = readString(scanner); + var numbers = readString(scanner); try { - String[] parts = numbers.split(","); - Set winningNumbers = new HashSet<>(); - for (int i = 0; i < 4; i++) { - winningNumbers.add(Integer.parseInt(parts[i])); - } + var winningNumbers = Arrays.stream(numbers.split(",")) + .map(Integer::parseInt) + .limit(4) + .collect(Collectors.toSet()); - final LotteryTicketId lotteryTicketId = new LotteryTicketId(Integer.parseInt(id)); - final LotteryNumbers lotteryNumbers = LotteryNumbers.create(winningNumbers); - LotteryTicketCheckResult result = - service.checkTicketForPrize(lotteryTicketId, lotteryNumbers); + final var lotteryTicketId = new LotteryTicketId(Integer.parseInt(id)); + final var lotteryNumbers = LotteryNumbers.create(winningNumbers); + var result = service.checkTicketForPrize(lotteryTicketId, lotteryNumbers); if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) { logger.info("Congratulations! The lottery ticket has won!"); @@ -85,26 +80,24 @@ public class LotteryConsoleServiceImpl implements LotteryConsoleService { @Override public void submitTicket(LotteryService service, Scanner scanner) { logger.info("What is your email address?"); - String email = readString(scanner); + var email = readString(scanner); logger.info("What is your bank account number?"); - String account = readString(scanner); + var account = readString(scanner); logger.info("What is your phone number?"); - String phone = readString(scanner); - PlayerDetails details = new PlayerDetails(email, account, phone); + var phone = readString(scanner); + var details = new PlayerDetails(email, account, phone); logger.info("Give 4 comma separated lottery numbers?"); - String numbers = readString(scanner); + var numbers = readString(scanner); try { - String[] parts = numbers.split(","); - Set chosen = Arrays.stream(parts).map(Integer::parseInt).collect(Collectors.toSet()); - LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen); - LotteryTicket lotteryTicket = - new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers); - Optional id = service.submitTicket(lotteryTicket); - if (id.isPresent()) { - logger.info("Submitted lottery ticket with id: {}", id.get()); - } else { - logger.info("Failed submitting lottery ticket - please try again."); - } + var chosen = Arrays.stream(numbers.split(",")) + .map(Integer::parseInt) + .collect(Collectors.toSet()); + var lotteryNumbers = LotteryNumbers.create(chosen); + var lotteryTicket = new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers); + service.submitTicket(lotteryTicket).ifPresentOrElse( + (id) -> logger.info("Submitted lottery ticket with id: {}", id), + () -> logger.info("Failed submitting lottery ticket - please try again.") + ); } catch (Exception e) { logger.info("Failed submitting lottery ticket - please try again."); } @@ -113,9 +106,9 @@ public class LotteryConsoleServiceImpl implements LotteryConsoleService { @Override public void addFundsToLotteryAccount(WireTransfers bank, Scanner scanner) { logger.info("What is the account number?"); - String account = readString(scanner); + var account = readString(scanner); logger.info("How many credits do you want to deposit?"); - String amount = readString(scanner); + var amount = readString(scanner); bank.setFunds(account, Integer.parseInt(amount)); logger.info("The account {} now has {} credits.", account, bank.getFunds(account)); } @@ -123,7 +116,7 @@ public class LotteryConsoleServiceImpl implements LotteryConsoleService { @Override public void queryLotteryAccountFunds(WireTransfers bank, Scanner scanner) { logger.info("What is the account number?"); - String account = readString(scanner); + var account = readString(scanner); logger.info("The account {} has {} credits.", account, bank.getFunds(account)); } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/AppTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/AppTest.java index c3fd915bd..05d51a283 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/AppTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/AppTest.java @@ -32,7 +32,6 @@ class AppTest { @Test void testApp() { - String[] args = {}; - App.main(args); + App.main(new String[]{}); } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/banking/InMemoryBankTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/banking/InMemoryBankTest.java index d7c511357..5c8ca44e4 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/banking/InMemoryBankTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/banking/InMemoryBankTest.java @@ -23,20 +23,18 @@ package com.iluwatar.hexagonal.banking; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; + /** - * * Tests for banking - * */ class InMemoryBankTest { private final WireTransfers bank = new InMemoryBank(); - + @Test void testInit() { assertEquals(0, bank.getFunds("foo")); diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/banking/MongoBankTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/banking/MongoBankTest.java index 3815a7899..b6a7e2a37 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/banking/MongoBankTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/banking/MongoBankTest.java @@ -23,14 +23,14 @@ package com.iluwatar.hexagonal.banking; +import static org.junit.jupiter.api.Assertions.assertEquals; + import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader; import com.mongodb.MongoClient; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; - /** * Tests for Mongo banking adapter */ @@ -45,7 +45,7 @@ class MongoBankTest { @BeforeEach void init() { MongoConnectionPropertiesLoader.load(); - MongoClient mongoClient = new MongoClient(System.getProperty("mongo-host"), + var mongoClient = new MongoClient(System.getProperty("mongo-host"), Integer.parseInt(System.getProperty("mongo-port"))); mongoClient.dropDatabase(TEST_DB); mongoClient.close(); diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/database/InMemoryTicketRepositoryTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/database/InMemoryTicketRepositoryTest.java index 065425dee..d016b0966 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/database/InMemoryTicketRepositoryTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/database/InMemoryTicketRepositoryTest.java @@ -23,40 +23,34 @@ package com.iluwatar.hexagonal.database; -import java.util.Optional; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -import com.iluwatar.hexagonal.domain.LotteryTicket; -import com.iluwatar.hexagonal.domain.LotteryTicketId; import com.iluwatar.hexagonal.test.LotteryTestUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - /** - * * Tests for {@link LotteryTicketRepository} - * */ class InMemoryTicketRepositoryTest { private final LotteryTicketRepository repository = new InMemoryTicketRepository(); - + @BeforeEach void clear() { repository.deleteAll(); } - + @Test void testCrudOperations() { - LotteryTicketRepository repository = new InMemoryTicketRepository(); + var repository = new InMemoryTicketRepository(); assertTrue(repository.findAll().isEmpty()); - LotteryTicket ticket = LotteryTestUtils.createLotteryTicket(); - Optional id = repository.save(ticket); + var ticket = LotteryTestUtils.createLotteryTicket(); + var id = repository.save(ticket); assertTrue(id.isPresent()); assertEquals(1, repository.findAll().size()); - Optional optionalTicket = repository.findById(id.get()); + var optionalTicket = repository.findById(id.get()); assertTrue(optionalTicket.isPresent()); } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/database/MongoTicketRepositoryTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/database/MongoTicketRepositoryTest.java index fb3d0c425..e926e1afb 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/database/MongoTicketRepositoryTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/database/MongoTicketRepositoryTest.java @@ -23,6 +23,9 @@ package com.iluwatar.hexagonal.database; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import com.iluwatar.hexagonal.domain.LotteryNumbers; import com.iluwatar.hexagonal.domain.LotteryTicket; import com.iluwatar.hexagonal.domain.LotteryTicketId; @@ -33,11 +36,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - /** * Tests for Mongo based ticket repository */ @@ -53,7 +51,7 @@ class MongoTicketRepositoryTest { @BeforeEach void init() { MongoConnectionPropertiesLoader.load(); - MongoClient mongoClient = new MongoClient(System.getProperty("mongo-host"), + var mongoClient = new MongoClient(System.getProperty("mongo-host"), Integer.parseInt(System.getProperty("mongo-port"))); mongoClient.dropDatabase(TEST_DB); mongoClient.close(); @@ -77,16 +75,16 @@ class MongoTicketRepositoryTest { @Test void testCrudOperations() { // create new lottery ticket and save it - PlayerDetails details = new PlayerDetails("foo@bar.com", "123-123", "07001234"); - LotteryNumbers random = LotteryNumbers.createRandom(); - LotteryTicket original = new LotteryTicket(new LotteryTicketId(), details, random); - Optional saved = repository.save(original); + var details = new PlayerDetails("foo@bar.com", "123-123", "07001234"); + var random = LotteryNumbers.createRandom(); + var original = new LotteryTicket(new LotteryTicketId(), details, random); + var saved = repository.save(original); assertEquals(1, repository.getTicketsCollection().count()); assertTrue(saved.isPresent()); // fetch the saved lottery ticket from database and check its contents - Optional found = repository.findById(saved.get()); + var found = repository.findById(saved.get()); assertTrue(found.isPresent()); - LotteryTicket ticket = found.get(); + var ticket = found.get(); assertEquals("foo@bar.com", ticket.getPlayerDetails().getEmail()); assertEquals("123-123", ticket.getPlayerDetails().getBankAccount()); assertEquals("07001234", ticket.getPlayerDetails().getPhoneNumber()); diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java index c17c5c1fd..696fd0f98 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryNumbersTest.java @@ -23,47 +23,47 @@ package com.iluwatar.hexagonal.domain; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Set; - -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; /** - * * Unit tests for {@link LotteryNumbers} - * */ class LotteryNumbersTest { - + @Test void testGivenNumbers() { - LotteryNumbers numbers = LotteryNumbers.create(Set.of(1, 2, 3, 4)); + var numbers = LotteryNumbers.create(Set.of(1, 2, 3, 4)); assertEquals(numbers.getNumbers().size(), 4); assertTrue(numbers.getNumbers().contains(1)); assertTrue(numbers.getNumbers().contains(2)); assertTrue(numbers.getNumbers().contains(3)); assertTrue(numbers.getNumbers().contains(4)); } - + @Test void testNumbersCantBeModified() { - LotteryNumbers numbers = LotteryNumbers.create(Set.of(1, 2, 3, 4)); + var numbers = LotteryNumbers.create(Set.of(1, 2, 3, 4)); assertThrows(UnsupportedOperationException.class, () -> numbers.getNumbers().add(5)); } - + @Test void testRandomNumbers() { - LotteryNumbers numbers = LotteryNumbers.createRandom(); + var numbers = LotteryNumbers.createRandom(); assertEquals(numbers.getNumbers().size(), LotteryNumbers.NUM_NUMBERS); } - + @Test void testEquals() { - LotteryNumbers numbers1 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); - LotteryNumbers numbers2 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); + var numbers1 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); + var numbers2 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); assertEquals(numbers1, numbers2); - LotteryNumbers numbers3 = LotteryNumbers.create(Set.of(11, 12, 13, 14)); + var numbers3 = LotteryNumbers.create(Set.of(11, 12, 13, 14)); assertNotEquals(numbers1, numbers3); } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java index 927e2fcd1..6d3ba8bc5 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTest.java @@ -23,6 +23,10 @@ package com.iluwatar.hexagonal.domain; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; @@ -30,17 +34,12 @@ import com.iluwatar.hexagonal.banking.WireTransfers; import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult; import com.iluwatar.hexagonal.module.LotteryTestingModule; import com.iluwatar.hexagonal.test.LotteryTestUtils; +import java.util.Set; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.util.*; - -import static org.junit.jupiter.api.Assertions.*; - /** - * * Test the lottery system - * */ class LotteryTest { @@ -62,38 +61,38 @@ class LotteryTest { // add funds to the test player's bank account wireTransfers.setFunds("123-12312", 100); } - + @Test void testLottery() { // admin resets the lottery administration.resetLottery(); assertEquals(0, administration.getAllSubmittedTickets().size()); - + // players submit the lottery tickets - Optional ticket1 = service.submitTicket(LotteryTestUtils.createLotteryTicket("cvt@bbb.com", + var ticket1 = service.submitTicket(LotteryTestUtils.createLotteryTicket("cvt@bbb.com", "123-12312", "+32425255", Set.of(1, 2, 3, 4))); assertTrue(ticket1.isPresent()); - Optional ticket2 = service.submitTicket(LotteryTestUtils.createLotteryTicket("ant@bac.com", + var ticket2 = service.submitTicket(LotteryTestUtils.createLotteryTicket("ant@bac.com", "123-12312", "+32423455", Set.of(11, 12, 13, 14))); assertTrue(ticket2.isPresent()); - Optional ticket3 = service.submitTicket(LotteryTestUtils.createLotteryTicket("arg@boo.com", + var ticket3 = service.submitTicket(LotteryTestUtils.createLotteryTicket("arg@boo.com", "123-12312", "+32421255", Set.of(6, 8, 13, 19))); assertTrue(ticket3.isPresent()); assertEquals(3, administration.getAllSubmittedTickets().size()); - + // perform lottery - LotteryNumbers winningNumbers = administration.performLottery(); + var winningNumbers = administration.performLottery(); // cheat a bit for testing sake, use winning numbers to submit another ticket - Optional ticket4 = service.submitTicket(LotteryTestUtils.createLotteryTicket("lucky@orb.com", + var ticket4 = service.submitTicket(LotteryTestUtils.createLotteryTicket("lucky@orb.com", "123-12312", "+12421255", winningNumbers.getNumbers())); assertTrue(ticket4.isPresent()); assertEquals(4, administration.getAllSubmittedTickets().size()); - + // check winners - Map tickets = administration.getAllSubmittedTickets(); - for (LotteryTicketId id: tickets.keySet()) { - LotteryTicketCheckResult checkResult = service.checkTicketForPrize(id, winningNumbers); + var tickets = administration.getAllSubmittedTickets(); + for (var id : tickets.keySet()) { + var checkResult = service.checkTicketForPrize(id, winningNumbers); assertNotEquals(CheckResult.TICKET_NOT_SUBMITTED, checkResult.getResult()); if (checkResult.getResult().equals(CheckResult.WIN_PRIZE)) { assertTrue(checkResult.getPrizeAmount() > 0); @@ -101,9 +100,9 @@ class LotteryTest { assertEquals(0, checkResult.getPrizeAmount()); } } - + // check another ticket that has not been submitted - LotteryTicketCheckResult checkResult = service.checkTicketForPrize(new LotteryTicketId(), winningNumbers); + var checkResult = service.checkTicketForPrize(new LotteryTicketId(), winningNumbers); assertEquals(CheckResult.TICKET_NOT_SUBMITTED, checkResult.getResult()); assertEquals(0, checkResult.getPrizeAmount()); } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResultTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResultTest.java index 06de81726..4ad872f69 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResultTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketCheckResultTest.java @@ -23,25 +23,23 @@ package com.iluwatar.hexagonal.domain; -import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult; +import org.junit.jupiter.api.Test; + /** - * * Unit tests for {@link LotteryTicketCheckResult} - * */ class LotteryTicketCheckResultTest { @Test void testEquals() { - LotteryTicketCheckResult result1 = new LotteryTicketCheckResult(CheckResult.NO_PRIZE); - LotteryTicketCheckResult result2 = new LotteryTicketCheckResult(CheckResult.NO_PRIZE); + var result1 = new LotteryTicketCheckResult(CheckResult.NO_PRIZE); + var result2 = new LotteryTicketCheckResult(CheckResult.NO_PRIZE); assertEquals(result1, result2); - LotteryTicketCheckResult result3 = new LotteryTicketCheckResult(CheckResult.WIN_PRIZE, 300000); + var result3 = new LotteryTicketCheckResult(CheckResult.WIN_PRIZE, 300000); assertNotEquals(result1, result3); - } + } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketIdTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketIdTest.java index b60e550d2..e6815ea08 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketIdTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketIdTest.java @@ -23,11 +23,11 @@ package com.iluwatar.hexagonal.domain; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import org.junit.jupiter.api.Test; + /** * Tests for lottery ticket id */ @@ -35,12 +35,12 @@ class LotteryTicketIdTest { @Test void testEquals() { - LotteryTicketId ticketId1 = new LotteryTicketId(); - LotteryTicketId ticketId2 = new LotteryTicketId(); - LotteryTicketId ticketId3 = new LotteryTicketId(); + var ticketId1 = new LotteryTicketId(); + var ticketId2 = new LotteryTicketId(); + var ticketId3 = new LotteryTicketId(); assertNotEquals(ticketId1, ticketId2); assertNotEquals(ticketId2, ticketId3); - LotteryTicketId ticketId4 = new LotteryTicketId(ticketId1.getId()); + var ticketId4 = new LotteryTicketId(ticketId1.getId()); assertEquals(ticketId1, ticketId4); } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java index 6d2e371c4..445bdd27c 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java @@ -23,13 +23,12 @@ package com.iluwatar.hexagonal.domain; -import org.junit.jupiter.api.Test; - -import java.util.Set; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import java.util.Set; +import org.junit.jupiter.api.Test; + /** * Test Lottery Tickets for equality */ @@ -37,16 +36,16 @@ class LotteryTicketTest { @Test void testEquals() { - PlayerDetails details1 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322"); - LotteryNumbers numbers1 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); - LotteryTicket ticket1 = new LotteryTicket(new LotteryTicketId(), details1, numbers1); - PlayerDetails details2 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322"); - LotteryNumbers numbers2 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); - LotteryTicket ticket2 = new LotteryTicket(new LotteryTicketId(), details2, numbers2); + var details1 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322"); + var numbers1 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); + var ticket1 = new LotteryTicket(new LotteryTicketId(), details1, numbers1); + var details2 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322"); + var numbers2 = LotteryNumbers.create(Set.of(1, 2, 3, 4)); + var ticket2 = new LotteryTicket(new LotteryTicketId(), details2, numbers2); assertEquals(ticket1, ticket2); - PlayerDetails details3 = new PlayerDetails("elsa@foo.bar", "1223-121212", "+49332322"); - LotteryNumbers numbers3 = LotteryNumbers.create(Set.of(1, 2, 3, 8)); - LotteryTicket ticket3 = new LotteryTicket(new LotteryTicketId(), details3, numbers3); + var details3 = new PlayerDetails("elsa@foo.bar", "1223-121212", "+49332322"); + var numbers3 = LotteryNumbers.create(Set.of(1, 2, 3, 8)); + var ticket3 = new LotteryTicket(new LotteryTicketId(), details3, numbers3); assertNotEquals(ticket1, ticket3); } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/PlayerDetailsTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/PlayerDetailsTest.java index 2ecc0ab03..ba6b5f557 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/PlayerDetailsTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/PlayerDetailsTest.java @@ -23,24 +23,22 @@ package com.iluwatar.hexagonal.domain; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import org.junit.jupiter.api.Test; + /** - * * Unit tests for {@link PlayerDetails} - * */ class PlayerDetailsTest { @Test void testEquals() { - PlayerDetails details1 = new PlayerDetails("tom@foo.bar", "11212-123434", "+12323425"); - PlayerDetails details2 = new PlayerDetails("tom@foo.bar", "11212-123434", "+12323425"); + var details1 = new PlayerDetails("tom@foo.bar", "11212-123434", "+12323425"); + var details2 = new PlayerDetails("tom@foo.bar", "11212-123434", "+12323425"); assertEquals(details1, details2); - PlayerDetails details3 = new PlayerDetails("john@foo.bar", "16412-123439", "+34323432"); + var details3 = new PlayerDetails("john@foo.bar", "16412-123439", "+34323432"); assertNotEquals(details1, details3); - } + } } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/eventlog/MongoEventLogTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/eventlog/MongoEventLogTest.java index 632220958..b0c4e1383 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/eventlog/MongoEventLogTest.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/eventlog/MongoEventLogTest.java @@ -23,6 +23,8 @@ package com.iluwatar.hexagonal.eventlog; +import static org.junit.jupiter.api.Assertions.assertEquals; + import com.iluwatar.hexagonal.domain.PlayerDetails; import com.iluwatar.hexagonal.mongo.MongoConnectionPropertiesLoader; import com.mongodb.MongoClient; @@ -30,8 +32,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; - /** * Tests for Mongo event log */ @@ -46,7 +46,7 @@ class MongoEventLogTest { @BeforeEach void init() { MongoConnectionPropertiesLoader.load(); - MongoClient mongoClient = new MongoClient(System.getProperty("mongo-host"), + var mongoClient = new MongoClient(System.getProperty("mongo-host"), Integer.parseInt(System.getProperty("mongo-port"))); mongoClient.dropDatabase(TEST_DB); mongoClient.close(); @@ -60,7 +60,7 @@ class MongoEventLogTest { @Test void testFundTransfers() { - PlayerDetails playerDetails = new PlayerDetails("john@wayne.com", "000-000", "03432534543"); + var playerDetails = new PlayerDetails("john@wayne.com", "000-000", "03432534543"); mongoEventLog.prizeError(playerDetails, 1000); assertEquals(1, mongoEventLog.getEventsCollection().count()); mongoEventLog.prizeError(playerDetails, 1000); diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java index 2f02ca34e..4686478d3 100644 --- a/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/test/LotteryTestUtils.java @@ -27,13 +27,10 @@ import com.iluwatar.hexagonal.domain.LotteryNumbers; import com.iluwatar.hexagonal.domain.LotteryTicket; import com.iluwatar.hexagonal.domain.LotteryTicketId; import com.iluwatar.hexagonal.domain.PlayerDetails; - import java.util.Set; /** - * * Utilities for lottery tests - * */ public class LotteryTestUtils { @@ -43,14 +40,14 @@ public class LotteryTestUtils { public static LotteryTicket createLotteryTicket() { return createLotteryTicket("foo@bar.com", "12231-213132", "+99324554", Set.of(1, 2, 3, 4)); } - + /** * @return lottery ticket */ public static LotteryTicket createLotteryTicket(String email, String account, String phone, - Set givenNumbers) { - PlayerDetails details = new PlayerDetails(email, account, phone); - LotteryNumbers numbers = LotteryNumbers.create(givenNumbers); + Set givenNumbers) { + var details = new PlayerDetails(email, account, phone); + var numbers = LotteryNumbers.create(givenNumbers); return new LotteryTicket(new LotteryTicketId(), details, numbers); } } diff --git a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/AddressFilter.java b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/AddressFilter.java index 6b9a15382..5f13aa7d7 100644 --- a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/AddressFilter.java +++ b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/AddressFilter.java @@ -33,7 +33,7 @@ public class AddressFilter extends AbstractFilter { @Override public String execute(Order order) { - String result = super.execute(order); + var result = super.execute(order); if (order.getAddress() == null || order.getAddress().isEmpty()) { return result + "Invalid address! "; } else { diff --git a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/App.java b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/App.java index b81f1e229..db1c4830f 100644 --- a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/App.java +++ b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/App.java @@ -54,14 +54,14 @@ public class App { * @param args command line args */ public static void main(String[] args) { - FilterManager filterManager = new FilterManager(); + var filterManager = new FilterManager(); filterManager.addFilter(new NameFilter()); filterManager.addFilter(new ContactFilter()); filterManager.addFilter(new AddressFilter()); filterManager.addFilter(new DepositFilter()); filterManager.addFilter(new OrderFilter()); - Client client = new Client(); + var client = new Client(); client.setFilterManager(filterManager); } } diff --git a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/Client.java b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/Client.java index 865dbbb38..656008c10 100644 --- a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/Client.java +++ b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/Client.java @@ -25,7 +25,8 @@ package com.iluwatar.intercepting.filter; import java.awt.BorderLayout; import java.awt.GridLayout; - +import java.awt.event.ActionEvent; +import java.util.Arrays; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; @@ -65,11 +66,11 @@ public class Client extends JFrame { // NOSONAR setSize(300, 300); jl = new JLabel("RUNNING..."); jtFields = new JTextField[3]; - for (int i = 0; i < 3; i++) { + for (var i = 0; i < 3; i++) { jtFields[i] = new JTextField(); } jtAreas = new JTextArea[2]; - for (int i = 0; i < 2; i++) { + for (var i = 0; i < 2; i++) { jtAreas[i] = new JTextArea(); } clearButton = new JButton("Clear"); @@ -80,7 +81,7 @@ public class Client extends JFrame { // NOSONAR private void setup() { setLayout(new BorderLayout()); - JPanel panel = new JPanel(); + var panel = new JPanel(); add(jl, BorderLayout.SOUTH); add(panel, BorderLayout.CENTER); panel.setLayout(new GridLayout(6, 2)); @@ -98,21 +99,11 @@ public class Client extends JFrame { // NOSONAR panel.add(processButton); clearButton.addActionListener(e -> { - for (JTextArea i : jtAreas) { - i.setText(""); - } - for (JTextField i : jtFields) { - i.setText(""); - } + Arrays.stream(jtAreas).forEach(i -> i.setText("")); + Arrays.stream(jtFields).forEach(i -> i.setText("")); }); - processButton.addActionListener(e -> { - Order order = - new Order(jtFields[0].getText(), jtFields[1].getText(), jtAreas[0].getText(), jtFields[2] - .getText(), - jtAreas[1].getText()); - jl.setText(sendRequest(order)); - }); + processButton.addActionListener(this::actionPerformed); JRootPane rootPane = SwingUtilities.getRootPane(processButton); rootPane.setDefaultButton(processButton); @@ -126,4 +117,14 @@ public class Client extends JFrame { // NOSONAR public String sendRequest(Order order) { return filterManager.filterRequest(order); } + + private void actionPerformed(ActionEvent e) { + var fieldText1 = jtFields[0].getText(); + var fieldText2 = jtFields[1].getText(); + var areaText1 = jtAreas[0].getText(); + var fieldText3 = jtFields[2].getText(); + var areaText2 = jtAreas[1].getText(); + var order = new Order(fieldText1, fieldText2, areaText1, fieldText3, areaText2); + jl.setText(sendRequest(order)); + } } diff --git a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/ContactFilter.java b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/ContactFilter.java index 9acdec319..0e76ac1c0 100644 --- a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/ContactFilter.java +++ b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/ContactFilter.java @@ -34,10 +34,11 @@ public class ContactFilter extends AbstractFilter { @Override public String execute(Order order) { - String result = super.execute(order); - if (order.getContactNumber() == null || order.getContactNumber().isEmpty() - || order.getContactNumber().matches(".*[^\\d]+.*") - || order.getContactNumber().length() != 11) { + var result = super.execute(order); + var contactNumber = order.getContactNumber(); + if (contactNumber == null || contactNumber.isEmpty() + || contactNumber.matches(".*[^\\d]+.*") + || contactNumber.length() != 11) { return result + "Invalid contact number! "; } else { return result; diff --git a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/DepositFilter.java b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/DepositFilter.java index e7457c9be..da802616d 100644 --- a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/DepositFilter.java +++ b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/DepositFilter.java @@ -32,8 +32,9 @@ public class DepositFilter extends AbstractFilter { @Override public String execute(Order order) { - String result = super.execute(order); - if (order.getDepositNumber() == null || order.getDepositNumber().isEmpty()) { + var result = super.execute(order); + var depositNumber = order.getDepositNumber(); + if (depositNumber == null || depositNumber.isEmpty()) { return result + "Invalid deposit number! "; } else { return result; diff --git a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/NameFilter.java b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/NameFilter.java index 95ef54fe1..358c9fd85 100644 --- a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/NameFilter.java +++ b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/NameFilter.java @@ -33,9 +33,9 @@ public class NameFilter extends AbstractFilter { @Override public String execute(Order order) { - String result = super.execute(order); - if (order.getName() == null || order.getName().isEmpty() - || order.getName().matches(".*[^\\w|\\s]+.*")) { + var result = super.execute(order); + var name = order.getName(); + if (name == null || name.isEmpty() || name.matches(".*[^\\w|\\s]+.*")) { return result + "Invalid name! "; } else { return result; diff --git a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/OrderFilter.java b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/OrderFilter.java index de91386f3..c555322f7 100644 --- a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/OrderFilter.java +++ b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/OrderFilter.java @@ -32,8 +32,9 @@ public class OrderFilter extends AbstractFilter { @Override public String execute(Order order) { - String result = super.execute(order); - if (order.getOrderItem() == null || order.getOrderItem().isEmpty()) { + var result = super.execute(order); + var orderItem = order.getOrderItem(); + if (orderItem == null || orderItem.isEmpty()) { return result + "Invalid order! "; } else { return result; diff --git a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/Target.java b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/Target.java index 9ded355c7..08ed715b1 100644 --- a/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/Target.java +++ b/intercepting-filter/src/main/java/com/iluwatar/intercepting/filter/Target.java @@ -27,11 +27,10 @@ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; - +import java.util.stream.IntStream; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; -import javax.swing.JRootPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingUtilities; @@ -58,9 +57,8 @@ public class Target extends JFrame { //NOSONAR super("Order System"); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setSize(640, 480); - dtm = - new DefaultTableModel(new Object[]{"Name", "Contact Number", "Address", "Deposit Number", - "Order"}, 0); + dtm = new DefaultTableModel( + new Object[]{"Name", "Contact Number", "Address", "Deposit Number", "Order"}, 0); jt = new JTable(dtm); del = new JButton("Delete"); setup(); @@ -68,18 +66,18 @@ public class Target extends JFrame { //NOSONAR private void setup() { setLayout(new BorderLayout()); - JPanel bot = new JPanel(); + var bot = new JPanel(); add(jt.getTableHeader(), BorderLayout.NORTH); bot.setLayout(new BorderLayout()); bot.add(del, BorderLayout.EAST); add(bot, BorderLayout.SOUTH); - JScrollPane jsp = new JScrollPane(jt); + var jsp = new JScrollPane(jt); jsp.setPreferredSize(new Dimension(500, 250)); add(jsp, BorderLayout.CENTER); del.addActionListener(new DListener()); - JRootPane rootPane = SwingUtilities.getRootPane(del); + var rootPane = SwingUtilities.getRootPane(del); rootPane.setDefaultButton(del); setVisible(true); } @@ -91,14 +89,12 @@ public class Target extends JFrame { //NOSONAR class DListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { - int temp = jt.getSelectedRow(); + var temp = jt.getSelectedRow(); if (temp == -1) { return; } - int temp2 = jt.getSelectedRowCount(); - for (int i = 0; i < temp2; i++) { - dtm.removeRow(temp); - } + var temp2 = jt.getSelectedRowCount(); + IntStream.range(0, temp2).forEach(i -> dtm.removeRow(temp)); } } } diff --git a/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/AppTest.java b/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/AppTest.java index 4ee7897ed..8fbe9f1d2 100644 --- a/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/AppTest.java +++ b/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/AppTest.java @@ -26,15 +26,12 @@ package com.iluwatar.intercepting.filter; import org.junit.jupiter.api.Test; /** - * * Application test. - * */ public class AppTest { @Test public void test() { - String[] args = {}; - App.main(args); + App.main(new String[]{}); } } diff --git a/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/FilterManagerTest.java b/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/FilterManagerTest.java index feffbd7be..605db4de2 100644 --- a/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/FilterManagerTest.java +++ b/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/FilterManagerTest.java @@ -23,8 +23,6 @@ package com.iluwatar.intercepting.filter; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; @@ -33,6 +31,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; +import org.junit.jupiter.api.Test; + /** * Date: 12/13/15 - 3:01 PM * @@ -42,20 +42,20 @@ public class FilterManagerTest { @Test public void testFilterRequest() { - final Target target = mock(Target.class); - final FilterManager filterManager = new FilterManager(); + final var target = mock(Target.class); + final var filterManager = new FilterManager(); assertEquals("RUNNING...", filterManager.filterRequest(mock(Order.class))); verifyZeroInteractions(target); } @Test public void testAddFilter() { - final Target target = mock(Target.class); - final FilterManager filterManager = new FilterManager(); + final var target = mock(Target.class); + final var filterManager = new FilterManager(); verifyZeroInteractions(target); - final Filter filter = mock(Filter.class); + final var filter = mock(Filter.class); when(filter.execute(any(Order.class))).thenReturn("filter"); filterManager.addFilter(filter); diff --git a/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/FilterTest.java b/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/FilterTest.java index 2e9a9641f..7a0ce9150 100644 --- a/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/FilterTest.java +++ b/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/FilterTest.java @@ -23,17 +23,15 @@ package com.iluwatar.intercepting.filter; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; - -import java.util.ArrayList; -import java.util.List; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; +import java.util.List; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + /** * Date: 12/13/15 - 2:17 PM * @@ -41,7 +39,8 @@ import static org.junit.jupiter.api.Assertions.assertSame; */ public class FilterTest { - private static final Order PERFECT_ORDER = new Order("name", "12345678901", "addr", "dep", "order"); + private static final Order PERFECT_ORDER = + new Order("name", "12345678901", "addr", "dep", "order"); private static final Order WRONG_ORDER = new Order("name", "12345678901", "addr", "dep", ""); private static final Order WRONG_DEPOSIT = new Order("name", "12345678901", "addr", "", "order"); private static final Order WRONG_ADDRESS = new Order("name", "12345678901", "", "dep", "order"); @@ -49,49 +48,48 @@ public class FilterTest { private static final Order WRONG_NAME = new Order("", "12345678901", "addr", "dep", "order"); static List getTestData() { - final List testData = new ArrayList<>(); - testData.add(new Object[]{new NameFilter(), PERFECT_ORDER, ""}); - testData.add(new Object[]{new NameFilter(), WRONG_NAME, "Invalid name!"}); - testData.add(new Object[]{new NameFilter(), WRONG_CONTACT, ""}); - testData.add(new Object[]{new NameFilter(), WRONG_ADDRESS, ""}); - testData.add(new Object[]{new NameFilter(), WRONG_DEPOSIT, ""}); - testData.add(new Object[]{new NameFilter(), WRONG_ORDER, ""}); + return List.of( + new Object[]{new NameFilter(), PERFECT_ORDER, ""}, + new Object[]{new NameFilter(), WRONG_NAME, "Invalid name!"}, + new Object[]{new NameFilter(), WRONG_CONTACT, ""}, + new Object[]{new NameFilter(), WRONG_ADDRESS, ""}, + new Object[]{new NameFilter(), WRONG_DEPOSIT, ""}, + new Object[]{new NameFilter(), WRONG_ORDER, ""}, - testData.add(new Object[]{new ContactFilter(), PERFECT_ORDER, ""}); - testData.add(new Object[]{new ContactFilter(), WRONG_NAME, ""}); - testData.add(new Object[]{new ContactFilter(), WRONG_CONTACT, "Invalid contact number!"}); - testData.add(new Object[]{new ContactFilter(), WRONG_ADDRESS, ""}); - testData.add(new Object[]{new ContactFilter(), WRONG_DEPOSIT, ""}); - testData.add(new Object[]{new ContactFilter(), WRONG_ORDER, ""}); + new Object[]{new ContactFilter(), PERFECT_ORDER, ""}, + new Object[]{new ContactFilter(), WRONG_NAME, ""}, + new Object[]{new ContactFilter(), WRONG_CONTACT, "Invalid contact number!"}, + new Object[]{new ContactFilter(), WRONG_ADDRESS, ""}, + new Object[]{new ContactFilter(), WRONG_DEPOSIT, ""}, + new Object[]{new ContactFilter(), WRONG_ORDER, ""}, - testData.add(new Object[]{new AddressFilter(), PERFECT_ORDER, ""}); - testData.add(new Object[]{new AddressFilter(), WRONG_NAME, ""}); - testData.add(new Object[]{new AddressFilter(), WRONG_CONTACT, ""}); - testData.add(new Object[]{new AddressFilter(), WRONG_ADDRESS, "Invalid address!"}); - testData.add(new Object[]{new AddressFilter(), WRONG_DEPOSIT, ""}); - testData.add(new Object[]{new AddressFilter(), WRONG_ORDER, ""}); + new Object[]{new AddressFilter(), PERFECT_ORDER, ""}, + new Object[]{new AddressFilter(), WRONG_NAME, ""}, + new Object[]{new AddressFilter(), WRONG_CONTACT, ""}, + new Object[]{new AddressFilter(), WRONG_ADDRESS, "Invalid address!"}, + new Object[]{new AddressFilter(), WRONG_DEPOSIT, ""}, + new Object[]{new AddressFilter(), WRONG_ORDER, ""}, - testData.add(new Object[]{new DepositFilter(), PERFECT_ORDER, ""}); - testData.add(new Object[]{new DepositFilter(), WRONG_NAME, ""}); - testData.add(new Object[]{new DepositFilter(), WRONG_CONTACT, ""}); - testData.add(new Object[]{new DepositFilter(), WRONG_ADDRESS, ""}); - testData.add(new Object[]{new DepositFilter(), WRONG_DEPOSIT, "Invalid deposit number!"}); - testData.add(new Object[]{new DepositFilter(), WRONG_ORDER, ""}); + new Object[]{new DepositFilter(), PERFECT_ORDER, ""}, + new Object[]{new DepositFilter(), WRONG_NAME, ""}, + new Object[]{new DepositFilter(), WRONG_CONTACT, ""}, + new Object[]{new DepositFilter(), WRONG_ADDRESS, ""}, + new Object[]{new DepositFilter(), WRONG_DEPOSIT, "Invalid deposit number!"}, + new Object[]{new DepositFilter(), WRONG_ORDER, ""}, - testData.add(new Object[]{new OrderFilter(), PERFECT_ORDER, ""}); - testData.add(new Object[]{new OrderFilter(), WRONG_NAME, ""}); - testData.add(new Object[]{new OrderFilter(), WRONG_CONTACT, ""}); - testData.add(new Object[]{new OrderFilter(), WRONG_ADDRESS, ""}); - testData.add(new Object[]{new OrderFilter(), WRONG_DEPOSIT, ""}); - testData.add(new Object[]{new OrderFilter(), WRONG_ORDER, "Invalid order!"}); - - return testData; + new Object[]{new OrderFilter(), PERFECT_ORDER, ""}, + new Object[]{new OrderFilter(), WRONG_NAME, ""}, + new Object[]{new OrderFilter(), WRONG_CONTACT, ""}, + new Object[]{new OrderFilter(), WRONG_ADDRESS, ""}, + new Object[]{new OrderFilter(), WRONG_DEPOSIT, ""}, + new Object[]{new OrderFilter(), WRONG_ORDER, "Invalid order!"} + ); } @ParameterizedTest @MethodSource("getTestData") public void testExecute(Filter filter, Order order, String expectedResult) { - final String result = filter.execute(order); + final var result = filter.execute(order); assertNotNull(result); assertEquals(expectedResult, result.trim()); } diff --git a/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/OrderTest.java b/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/OrderTest.java index a4862c4a8..21643986e 100644 --- a/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/OrderTest.java +++ b/intercepting-filter/src/test/java/com/iluwatar/intercepting/filter/OrderTest.java @@ -23,10 +23,10 @@ package com.iluwatar.intercepting.filter; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + /** * Date: 12/13/15 - 2:57 PM * @@ -38,35 +38,35 @@ public class OrderTest { @Test public void testSetName() { - final Order order = new Order(); + final var order = new Order(); order.setName(EXPECTED_VALUE); assertEquals(EXPECTED_VALUE, order.getName()); } @Test public void testSetContactNumber() { - final Order order = new Order(); + final var order = new Order(); order.setContactNumber(EXPECTED_VALUE); assertEquals(EXPECTED_VALUE, order.getContactNumber()); } @Test public void testSetAddress() { - final Order order = new Order(); + final var order = new Order(); order.setAddress(EXPECTED_VALUE); assertEquals(EXPECTED_VALUE, order.getAddress()); } @Test public void testSetDepositNumber() { - final Order order = new Order(); + final var order = new Order(); order.setDepositNumber(EXPECTED_VALUE); assertEquals(EXPECTED_VALUE, order.getDepositNumber()); } @Test public void testSetOrder() { - final Order order = new Order(); + final var order = new Order(); order.setOrderItem(EXPECTED_VALUE); assertEquals(EXPECTED_VALUE, order.getOrderItem()); } diff --git a/interpreter/src/main/java/com/iluwatar/interpreter/App.java b/interpreter/src/main/java/com/iluwatar/interpreter/App.java index d63c78506..909c33345 100644 --- a/interpreter/src/main/java/com/iluwatar/interpreter/App.java +++ b/interpreter/src/main/java/com/iluwatar/interpreter/App.java @@ -49,24 +49,24 @@ public class App { * @param args command line args */ public static void main(String[] args) { - String tokenString = "4 3 2 - 1 + *"; - Stack stack = new Stack<>(); + var tokenString = "4 3 2 - 1 + *"; + var stack = new Stack(); - String[] tokenList = tokenString.split(" "); - for (String s : tokenList) { + var tokenList = tokenString.split(" "); + for (var s : tokenList) { if (isOperator(s)) { - Expression rightExpression = stack.pop(); - Expression leftExpression = stack.pop(); + var rightExpression = stack.pop(); + var leftExpression = stack.pop(); LOGGER.info("popped from stack left: {} right: {}", leftExpression.interpret(), rightExpression.interpret()); - Expression operator = getOperatorInstance(s, leftExpression, rightExpression); + var operator = getOperatorInstance(s, leftExpression, rightExpression); LOGGER.info("operator: {}", operator); - int result = operator.interpret(); - NumberExpression resultExpression = new NumberExpression(result); + var result = operator.interpret(); + var resultExpression = new NumberExpression(result); stack.push(resultExpression); LOGGER.info("push result to stack: {}", resultExpression.interpret()); } else { - Expression i = new NumberExpression(s); + var i = new NumberExpression(s); stack.push(i); LOGGER.info("push to stack: {}", i.interpret()); } diff --git a/interpreter/src/test/java/com/iluwatar/interpreter/AppTest.java b/interpreter/src/test/java/com/iluwatar/interpreter/AppTest.java index 1bc978735..505dc559c 100644 --- a/interpreter/src/test/java/com/iluwatar/interpreter/AppTest.java +++ b/interpreter/src/test/java/com/iluwatar/interpreter/AppTest.java @@ -26,15 +26,12 @@ package com.iluwatar.interpreter; import org.junit.jupiter.api.Test; /** - * * Application test - * */ public class AppTest { @Test public void test() { - String[] args = {}; - App.main(args); + App.main(new String[]{}); } } diff --git a/interpreter/src/test/java/com/iluwatar/interpreter/ExpressionTest.java b/interpreter/src/test/java/com/iluwatar/interpreter/ExpressionTest.java index be12e00b5..85f836dab 100644 --- a/interpreter/src/test/java/com/iluwatar/interpreter/ExpressionTest.java +++ b/interpreter/src/test/java/com/iluwatar/interpreter/ExpressionTest.java @@ -23,25 +23,23 @@ package com.iluwatar.interpreter; -import org.junit.jupiter.api.Disabled; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.ArrayList; +import java.util.function.BiFunction; +import java.util.function.IntBinaryOperator; +import java.util.stream.Stream; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.util.ArrayList; -import java.util.List; -import java.util.function.BiFunction; -import java.util.function.IntBinaryOperator; -import java.util.stream.Stream; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - /** * Date: 12/14/15 - 11:48 AM - * + *

* Test Case for Expressions + * * @param Type of Expression * @author Jeroen Meulemeester */ @@ -55,13 +53,13 @@ public abstract class ExpressionTest { * @return A stream with test entries */ static Stream prepareParameters(final IntBinaryOperator resultCalc) { - final List testData = new ArrayList<>(); - for (int i = -10; i < 10; i++) { - for (int j = -10; j < 10; j++) { + final var testData = new ArrayList(); + for (var i = -10; i < 10; i++) { + for (var j = -10; j < 10; j++) { testData.add(Arguments.of( - new NumberExpression(i), - new NumberExpression(j), - resultCalc.applyAsInt(i, j) + new NumberExpression(i), + new NumberExpression(j), + resultCalc.applyAsInt(i, j) )); } } @@ -104,7 +102,7 @@ public abstract class ExpressionTest { @ParameterizedTest @MethodSource("expressionProvider") public void testInterpret(NumberExpression first, NumberExpression second, int result) { - final E expression = factory.apply(first, second); + final var expression = factory.apply(first, second); assertNotNull(expression); assertEquals(result, expression.interpret()); } @@ -115,7 +113,7 @@ public abstract class ExpressionTest { @ParameterizedTest @MethodSource("expressionProvider") public void testToString(NumberExpression first, NumberExpression second) { - final E expression = factory.apply(first, second); + final var expression = factory.apply(first, second); assertNotNull(expression); assertEquals(expectedToString, expression.toString()); } diff --git a/interpreter/src/test/java/com/iluwatar/interpreter/MinusExpressionTest.java b/interpreter/src/test/java/com/iluwatar/interpreter/MinusExpressionTest.java index f5c51f723..19f74171b 100644 --- a/interpreter/src/test/java/com/iluwatar/interpreter/MinusExpressionTest.java +++ b/interpreter/src/test/java/com/iluwatar/interpreter/MinusExpressionTest.java @@ -23,9 +23,8 @@ package com.iluwatar.interpreter; -import org.junit.jupiter.params.provider.Arguments; - import java.util.stream.Stream; +import org.junit.jupiter.params.provider.Arguments; /** * Date: 12/14/15 - 12:08 PM diff --git a/interpreter/src/test/java/com/iluwatar/interpreter/MultiplyExpressionTest.java b/interpreter/src/test/java/com/iluwatar/interpreter/MultiplyExpressionTest.java index 5c956beb2..678048e1c 100644 --- a/interpreter/src/test/java/com/iluwatar/interpreter/MultiplyExpressionTest.java +++ b/interpreter/src/test/java/com/iluwatar/interpreter/MultiplyExpressionTest.java @@ -23,9 +23,8 @@ package com.iluwatar.interpreter; -import org.junit.jupiter.params.provider.Arguments; - import java.util.stream.Stream; +import org.junit.jupiter.params.provider.Arguments; /** * Date: 12/14/15 - 12:08 PM @@ -46,7 +45,6 @@ public class MultiplyExpressionTest extends ExpressionTest { /** * Create a new test instance using the given test parameters and expected result - * */ public MultiplyExpressionTest() { super("*", MultiplyExpression::new); diff --git a/interpreter/src/test/java/com/iluwatar/interpreter/NumberExpressionTest.java b/interpreter/src/test/java/com/iluwatar/interpreter/NumberExpressionTest.java index 593c08a9b..16fc0a429 100644 --- a/interpreter/src/test/java/com/iluwatar/interpreter/NumberExpressionTest.java +++ b/interpreter/src/test/java/com/iluwatar/interpreter/NumberExpressionTest.java @@ -23,14 +23,13 @@ package com.iluwatar.interpreter; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.util.stream.Stream; - -import static org.junit.jupiter.api.Assertions.assertEquals; - /** * Date: 12/14/15 - 12:08 PM * @@ -61,9 +60,9 @@ public class NumberExpressionTest extends ExpressionTest { @ParameterizedTest @MethodSource("expressionProvider") public void testFromString(NumberExpression first) throws Exception { - final int expectedValue = first.interpret(); - final String testStringValue = String.valueOf(expectedValue); - final NumberExpression numberExpression = new NumberExpression(testStringValue); + final var expectedValue = first.interpret(); + final var testStringValue = String.valueOf(expectedValue); + final var numberExpression = new NumberExpression(testStringValue); assertEquals(expectedValue, numberExpression.interpret()); } diff --git a/interpreter/src/test/java/com/iluwatar/interpreter/PlusExpressionTest.java b/interpreter/src/test/java/com/iluwatar/interpreter/PlusExpressionTest.java index 7fc5efa12..1f53f3606 100644 --- a/interpreter/src/test/java/com/iluwatar/interpreter/PlusExpressionTest.java +++ b/interpreter/src/test/java/com/iluwatar/interpreter/PlusExpressionTest.java @@ -23,9 +23,8 @@ package com.iluwatar.interpreter; -import org.junit.jupiter.params.provider.Arguments; - import java.util.stream.Stream; +import org.junit.jupiter.params.provider.Arguments; /** * Date: 12/14/15 - 12:08 PM @@ -41,7 +40,7 @@ public class PlusExpressionTest extends ExpressionTest { */ @Override public Stream expressionProvider() { - return prepareParameters((f, s) -> f + s); + return prepareParameters(Integer::sum); } /** diff --git a/iterator/src/main/java/com/iluwatar/iterator/App.java b/iterator/src/main/java/com/iluwatar/iterator/App.java index 6e72b4ae9..b81e765be 100644 --- a/iterator/src/main/java/com/iluwatar/iterator/App.java +++ b/iterator/src/main/java/com/iluwatar/iterator/App.java @@ -30,7 +30,6 @@ import static com.iluwatar.iterator.list.ItemType.WEAPON; import com.iluwatar.iterator.bst.BstIterator; import com.iluwatar.iterator.bst.TreeNode; -import com.iluwatar.iterator.list.Item; import com.iluwatar.iterator.list.ItemType; import com.iluwatar.iterator.list.TreasureChest; import org.slf4j.Logger; @@ -53,7 +52,7 @@ public class App { private static void demonstrateTreasureChestIteratorForType(ItemType itemType) { LOGGER.info("------------------------"); LOGGER.info("Item Iterator for ItemType " + itemType + ": "); - Iterator itemIterator = TREASURE_CHEST.iterator(itemType); + var itemIterator = TREASURE_CHEST.iterator(itemType); while (itemIterator.hasNext()) { LOGGER.info(itemIterator.next().toString()); } @@ -62,15 +61,15 @@ public class App { private static void demonstrateBstIterator() { LOGGER.info("------------------------"); LOGGER.info("BST Iterator: "); - TreeNode root = buildIntegerBst(); - BstIterator bstIterator = new BstIterator<>(root); + var root = buildIntegerBst(); + var bstIterator = new BstIterator(root); while (bstIterator.hasNext()) { LOGGER.info("Next node: " + bstIterator.next().getVal()); } } private static TreeNode buildIntegerBst() { - TreeNode root = new TreeNode<>(8); + var root = new TreeNode<>(8); root.insert(3); root.insert(10); diff --git a/iterator/src/main/java/com/iluwatar/iterator/bst/BstIterator.java b/iterator/src/main/java/com/iluwatar/iterator/bst/BstIterator.java index 87511c7ea..b3e0dc3d6 100644 --- a/iterator/src/main/java/com/iluwatar/iterator/bst/BstIterator.java +++ b/iterator/src/main/java/com/iluwatar/iterator/bst/BstIterator.java @@ -78,7 +78,7 @@ public class BstIterator> implements Iterator next = pathStack.pop(); + var next = pathStack.pop(); pushPathToNextSmallest(next.getRight()); return next; } diff --git a/iterator/src/main/java/com/iluwatar/iterator/bst/README.md b/iterator/src/main/java/com/iluwatar/iterator/bst/README.md index 02e8eefcb..816d1a4fe 100644 --- a/iterator/src/main/java/com/iluwatar/iterator/bst/README.md +++ b/iterator/src/main/java/com/iluwatar/iterator/bst/README.md @@ -63,7 +63,7 @@ public TreeNode next() throws IllegalStateException { if (pathStack.isEmpty()) { throw new IllegalStateException(); } - TreeNode next = pathStack.pop(); + var next = pathStack.pop(); // follow right child to next smallest node pushPathToNextSmallest(next.getRight()); return next; diff --git a/iterator/src/main/java/com/iluwatar/iterator/bst/TreeNode.java b/iterator/src/main/java/com/iluwatar/iterator/bst/TreeNode.java index 9d03fdf86..87f16e96c 100644 --- a/iterator/src/main/java/com/iluwatar/iterator/bst/TreeNode.java +++ b/iterator/src/main/java/com/iluwatar/iterator/bst/TreeNode.java @@ -72,7 +72,7 @@ public class TreeNode> { * @param valToInsert The value to insert as a new TreeNode */ public void insert(T valToInsert) { - TreeNode parent = getParentNodeOfValueToBeInserted(valToInsert); + var parent = getParentNodeOfValueToBeInserted(valToInsert); parent.insertNewChild(valToInsert); } @@ -84,7 +84,7 @@ public class TreeNode> { */ private TreeNode getParentNodeOfValueToBeInserted(T valToInsert) { TreeNode parent = null; - TreeNode curr = this; + var curr = this; while (curr != null) { parent = curr; diff --git a/iterator/src/main/java/com/iluwatar/iterator/list/TreasureChestItemIterator.java b/iterator/src/main/java/com/iluwatar/iterator/list/TreasureChestItemIterator.java index 43dbc82fa..90461c420 100644 --- a/iterator/src/main/java/com/iluwatar/iterator/list/TreasureChestItemIterator.java +++ b/iterator/src/main/java/com/iluwatar/iterator/list/TreasureChestItemIterator.java @@ -24,7 +24,6 @@ package com.iluwatar.iterator.list; import com.iluwatar.iterator.Iterator; -import java.util.List; /** * TreasureChestItemIterator. @@ -59,10 +58,9 @@ public class TreasureChestItemIterator implements Iterator { } private int findNextIdx() { - List items = chest.getItems(); - boolean found = false; - int tempIdx = idx; - while (!found) { + var items = chest.getItems(); + var tempIdx = idx; + while (true) { tempIdx++; if (tempIdx >= items.size()) { tempIdx = -1; diff --git a/iterator/src/test/java/com/iluwatar/iterator/AppTest.java b/iterator/src/test/java/com/iluwatar/iterator/AppTest.java index 9076c5174..ccb33307c 100644 --- a/iterator/src/test/java/com/iluwatar/iterator/AppTest.java +++ b/iterator/src/test/java/com/iluwatar/iterator/AppTest.java @@ -32,7 +32,6 @@ class AppTest { @Test void testApp() { - String[] args = {}; - App.main(args); + App.main(new String[]{}); } } \ No newline at end of file diff --git a/iterator/src/test/java/com/iluwatar/iterator/bst/BstIteratorTest.java b/iterator/src/test/java/com/iluwatar/iterator/bst/BstIteratorTest.java index e7f81e0d3..fba9ae8e3 100644 --- a/iterator/src/test/java/com/iluwatar/iterator/bst/BstIteratorTest.java +++ b/iterator/src/test/java/com/iluwatar/iterator/bst/BstIteratorTest.java @@ -28,13 +28,12 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import java.util.NoSuchElementException; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; -import java.util.NoSuchElementException; - @TestInstance(Lifecycle.PER_CLASS) class BstIteratorTest { @@ -55,14 +54,14 @@ class BstIteratorTest { @Test void nextForEmptyTree() { - BstIterator iter = new BstIterator<>(emptyRoot); + var iter = new BstIterator<>(emptyRoot); assertThrows(NoSuchElementException.class, iter::next, "next() should throw an IllegalStateException if hasNext() is false."); } @Test void nextOverEntirePopulatedTree() { - BstIterator iter = new BstIterator<>(nonEmptyRoot); + var iter = new BstIterator<>(nonEmptyRoot); assertEquals(Integer.valueOf(1), iter.next().getVal(), "First Node is 1."); assertEquals(Integer.valueOf(3), iter.next().getVal(), "Second Node is 3."); assertEquals(Integer.valueOf(4), iter.next().getVal(), "Third Node is 4."); @@ -73,19 +72,19 @@ class BstIteratorTest { @Test void hasNextForEmptyTree() { - BstIterator iter = new BstIterator<>(emptyRoot); + var iter = new BstIterator<>(emptyRoot); assertFalse(iter.hasNext(), "hasNext() should return false for empty tree."); } @Test void hasNextForPopulatedTree() { - BstIterator iter = new BstIterator<>(nonEmptyRoot); + var iter = new BstIterator<>(nonEmptyRoot); assertTrue(iter.hasNext(), "hasNext() should return true for populated tree."); } @Test void nextAndHasNextOverEntirePopulatedTree() { - BstIterator iter = new BstIterator<>(nonEmptyRoot); + var iter = new BstIterator<>(nonEmptyRoot); assertTrue(iter.hasNext(), "Iterator hasNext() should be true."); assertEquals(Integer.valueOf(1), iter.next().getVal(), "First Node is 1."); assertTrue(iter.hasNext(), "Iterator hasNext() should be true."); diff --git a/iterator/src/test/java/com/iluwatar/iterator/list/TreasureChestTest.java b/iterator/src/test/java/com/iluwatar/iterator/list/TreasureChestTest.java index 350934590..5e4f85e6b 100644 --- a/iterator/src/test/java/com/iluwatar/iterator/list/TreasureChestTest.java +++ b/iterator/src/test/java/com/iluwatar/iterator/list/TreasureChestTest.java @@ -27,7 +27,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.fail; -import com.iluwatar.iterator.Iterator; import java.util.List; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -46,16 +45,16 @@ public class TreasureChestTest { */ public static List dataProvider() { return List.of( - new Object[]{new Item(ItemType.POTION, "Potion of courage")}, - new Object[]{new Item(ItemType.RING, "Ring of shadows")}, - new Object[]{new Item(ItemType.POTION, "Potion of wisdom")}, - new Object[]{new Item(ItemType.POTION, "Potion of blood")}, - new Object[]{new Item(ItemType.WEAPON, "Sword of silver +1")}, - new Object[]{new Item(ItemType.POTION, "Potion of rust")}, - new Object[]{new Item(ItemType.POTION, "Potion of healing")}, - new Object[]{new Item(ItemType.RING, "Ring of armor")}, - new Object[]{new Item(ItemType.WEAPON, "Steel halberd")}, - new Object[]{new Item(ItemType.WEAPON, "Dagger of poison")} + new Object[]{new Item(ItemType.POTION, "Potion of courage")}, + new Object[]{new Item(ItemType.RING, "Ring of shadows")}, + new Object[]{new Item(ItemType.POTION, "Potion of wisdom")}, + new Object[]{new Item(ItemType.POTION, "Potion of blood")}, + new Object[]{new Item(ItemType.WEAPON, "Sword of silver +1")}, + new Object[]{new Item(ItemType.POTION, "Potion of rust")}, + new Object[]{new Item(ItemType.POTION, "Potion of healing")}, + new Object[]{new Item(ItemType.RING, "Ring of armor")}, + new Object[]{new Item(ItemType.WEAPON, "Steel halberd")}, + new Object[]{new Item(ItemType.WEAPON, "Dagger of poison")} ); } @@ -66,16 +65,16 @@ public class TreasureChestTest { @ParameterizedTest @MethodSource("dataProvider") public void testIterator(Item expectedItem) { - final TreasureChest chest = new TreasureChest(); - final Iterator iterator = chest.iterator(expectedItem.getType()); + final var chest = new TreasureChest(); + final var iterator = chest.iterator(expectedItem.getType()); assertNotNull(iterator); while (iterator.hasNext()) { - final Item item = iterator.next(); + final var item = iterator.next(); assertNotNull(item); assertEquals(expectedItem.getType(), item.getType()); - final String name = item.toString(); + final var name = item.toString(); assertNotNull(name); if (expectedItem.toString().equals(name)) { return; @@ -93,17 +92,17 @@ public class TreasureChestTest { @ParameterizedTest @MethodSource("dataProvider") public void testGetItems(Item expectedItem) throws Exception { - final TreasureChest chest = new TreasureChest(); - final List items = chest.getItems(); + final var chest = new TreasureChest(); + final var items = chest.getItems(); assertNotNull(items); - for (final Item item : items) { + for (final var item : items) { assertNotNull(item); assertNotNull(item.getType()); assertNotNull(item.toString()); - final boolean sameType = expectedItem.getType() == item.getType(); - final boolean sameName = expectedItem.toString().equals(item.toString()); + final var sameType = expectedItem.getType() == item.getType(); + final var sameName = expectedItem.toString().equals(item.toString()); if (sameType && sameName) { return; }