Java 11 migrate remaining (g,h,i) (#1116)

* Moves game-loop to Java 11

* Moves guarded-suspension to Java 11

* Moves half-sync-half-async to Java 11

* Moves hexagonal to Java 11

* Moves intercepting-filter to Java 11

* Moves interpreter to Java 11

* Moves iterator to Java 11
This commit is contained in:
Anurag Agarwal
2019-12-20 10:41:30 +05:30
committed by Ilkka Seppälä
parent 7d0a5c0edb
commit f835d3d516
68 changed files with 454 additions and 533 deletions

View File

@ -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

View File

@ -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)) {

View File

@ -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?");
}

View File

@ -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<Document> 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;

View File

@ -38,17 +38,12 @@ public class InMemoryTicketRepository implements LotteryTicketRepository {
@Override
public Optional<LotteryTicket> 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<LotteryTicketId> save(LotteryTicket ticket) {
LotteryTicketId id = new LotteryTicketId();
var id = new LotteryTicketId();
tickets.put(id, ticket);
return Optional.of(id);
}

View File

@ -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<LotteryTicket> findById(LotteryTicketId id) {
Document find = new Document("ticketId", id.getId());
List<Document> 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<LotteryTicketId> 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<LotteryTicketId, LotteryTicket> findAll() {
Map<LotteryTicketId, LotteryTicket> map = new HashMap<>();
List<Document> 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<Integer> 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);
}
}

View File

@ -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<LotteryTicketId, LotteryTicket> 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;

View File

@ -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;
}
}

View File

@ -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<LotteryTicketId> 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<LotteryTicketId> optional = repository.save(ticket);
var optional = repository.save(ticket);
if (optional.isPresent()) {
notifications.ticketSubmitted(ticket.getPlayerDetails());
notifications.ticketSubmitted(playerDetails);
}
return optional;
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -59,10 +59,9 @@ public class LotteryTicketId {
return false;
}
LotteryTicketId that = (LotteryTicketId) o;
var that = (LotteryTicketId) o;
return id == that.id;
}
@Override

View File

@ -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<LotteryTicket> 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);

View File

@ -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;
}
}

View File

@ -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

View File

@ -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

View File

@ -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"));

View File

@ -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()));
}
}

View File

@ -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)) {

View File

@ -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<Integer> 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<Integer> chosen = Arrays.stream(parts).map(Integer::parseInt).collect(Collectors.toSet());
LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen);
LotteryTicket lotteryTicket =
new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers);
Optional<LotteryTicketId> 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));
}

View File

@ -32,7 +32,6 @@ class AppTest {
@Test
void testApp() {
String[] args = {};
App.main(args);
App.main(new String[]{});
}
}

View File

@ -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"));

View File

@ -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();

View File

@ -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<LotteryTicketId> id = repository.save(ticket);
var ticket = LotteryTestUtils.createLotteryTicket();
var id = repository.save(ticket);
assertTrue(id.isPresent());
assertEquals(1, repository.findAll().size());
Optional<LotteryTicket> optionalTicket = repository.findById(id.get());
var optionalTicket = repository.findById(id.get());
assertTrue(optionalTicket.isPresent());
}
}

View File

@ -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<LotteryTicketId> 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<LotteryTicket> 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());

View File

@ -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);
}
}

View File

@ -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<LotteryTicketId> 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<LotteryTicketId> 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<LotteryTicketId> 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<LotteryTicketId> 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<LotteryTicketId, LotteryTicket> 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());
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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);

View File

@ -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<Integer> givenNumbers) {
PlayerDetails details = new PlayerDetails(email, account, phone);
LotteryNumbers numbers = LotteryNumbers.create(givenNumbers);
Set<Integer> givenNumbers) {
var details = new PlayerDetails(email, account, phone);
var numbers = LotteryNumbers.create(givenNumbers);
return new LotteryTicket(new LotteryTicketId(), details, numbers);
}
}