Compare commits

..

3 Commits

116 changed files with 527 additions and 355 deletions
abstract-document/src/test/java/com/iluwatar/abstractdocument
acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor
aggregator-microservices/inventory-microservice/src/test/java/com/iluwatar/inventory/microservice
bridge/src/test/java/com/iluwatar/bridge
callback/src
main
java
com
iluwatar
callback
test
java
com
iluwatar
chain/src/test/java/com/iluwatar/chain
collection-pipeline/src/main/java/com/iluwatar/collectionpipeline
converter/src/test/java/com/iluwatar/converter
cqrs/src/test/java/com/iluwatar/cqrs
dao/src/test/java/com/iluwatar/dao
data-mapper/src/test/java/com/iluwatar/datamapper
data-transfer-object/src/test/java/com/iluwatar/datatransfer
delegation/src/main/java/com/iluwatar/delegation/simple
dirty-flag/src/test/java/org/dirty/flag
eip-aggregator/src/main/java/com/iluwatar/eip/aggregator/routes
eip-message-channel/src/main/java/com/iluwatar/eip/message/channel
eip-publish-subscribe/src/main/java/com/iluwatar/eip/publish/subscribe
event-aggregator/src/test/java/com/iluwatar/event/aggregator
event-asynchronous/src/test/java/com/iluwatar/event/asynchronous
event-queue
etc
src
main
java
com
iluwatar
test
java
com
iluwatar
event
event-sourcing/src/main/java/com/iluwatar/event/sourcing
execute-around/src/test/java/com/iluwatar/execute/around
extension-objects/src
factory-kit/src/test/java/com/iluwatar/factorykit/factorykit
feature-toggle/src/test/java/com/iluwatar/featuretoggle/pattern
fluentinterface/src
main
java
com
iluwatar
fluentinterface
fluentiterable
test
java
com
iluwatar
fluentinterface
front-controller/src
main
java
com
iluwatar
front
test
java
com
iluwatar
guarded-suspension/src/test/java/com/iluwatar/guarded/suspension
half-sync-half-async/src/test/java/com/iluwatar/halfsynchalfasync
intercepting-filter/src
main
java
com
iluwatar
intercepting
test
iterator/src/test/java/com/iluwatar/iterator/bst
layers/src
lazy-loading/src/main/java/com/iluwatar/lazy/loading
module/src/test/java/com/iluwatar/module
monostate/src
main
java
com
iluwatar
test
java
com
iluwatar
mute-idiom/src/test/java/com/iluwatar/mute
null-object/src/test/java/com/iluwatar/nullobject
object-mother/src/main/java/com/iluwatar/objectmother
object-pool/src
main
java
com
iluwatar
object
test
java
com
iluwatar
observer/src/test/java/com/iluwatar/observer/generic
poison-pill/src/test/java/com/iluwatar/poison/pill
producer-consumer/src/test/java/com/iluwatar/producer/consumer
promise/src
main
java
com
iluwatar
test
java
com
iluwatar
property/src/test/java/com/iluwatar/property
prototype/src/main/java/com/iluwatar/prototype
queue-load-leveling/src
main
java
test
java
com
iluwatar
repository/src/test/java/com/iluwatar/repository
retry/src/test/java/com/iluwatar/retry
semaphore/src/test/java/com/iluwatar/semaphore
servant/src/test/java/com/iluwatar/servant
serverless/src/main/java/com/iluwatar/serverless/baas/api
service-layer
bin
src
main
java
com
iluwatar
servicelayer
test
specification/src
main
java
com
iluwatar
specification
test
java
com
iluwatar
specification
tls/src/test/java/com/iluwatar/tls
tolerant-reader/src/test/java/com/iluwatar/tolerantreader
trampoline/src/test/java/com/iluwatar/trampoline
twin/src/test/java/com/iluwatar/twin
unit-of-work/src/test/java/com/iluwatar/unitofwork
visitor/src/test/java/com/iluwatar/visitor

@ -32,7 +32,6 @@ import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* AbstractDocument test class
@ -82,8 +81,8 @@ public class AbstractDocumentTest {
Map<String, Object> props = new HashMap<>();
props.put(KEY, VALUE);
DocumentImplementation document = new DocumentImplementation(props);
assertTrue(document.toString().contains(KEY));
assertTrue(document.toString().contains(VALUE));
assertNotNull(document.toString().contains(KEY));
assertNotNull(document.toString().contains(VALUE));
}
}

@ -25,19 +25,27 @@ package com.iluwatar.acyclicvisitor;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.groups.Tuple.tuple;
import static uk.org.lidalia.slf4jext.Level.INFO;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import static org.mockito.Mockito.mock;
import uk.org.lidalia.slf4jtest.TestLogger;
import uk.org.lidalia.slf4jtest.TestLoggerFactory;
import org.junit.jupiter.api.Test;
import com.iluwatar.acyclicvisitor.ConfigureForUnixVisitor;
import com.iluwatar.acyclicvisitor.Hayes;
import com.iluwatar.acyclicvisitor.HayesVisitor;
import com.iluwatar.acyclicvisitor.Zoom;
import com.iluwatar.acyclicvisitor.ZoomVisitor;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
/**
* ConfigureForUnixVisitor test class
*/
public class ConfigureForUnixVisitorTest {
private static final TestLogger LOGGER = TestLoggerFactory.getTestLogger(ConfigureForUnixVisitor.class);
TestLogger logger = TestLoggerFactory.getTestLogger(ConfigureForUnixVisitor.class);
@AfterEach
public void clearLoggers() {
@ -51,7 +59,7 @@ public class ConfigureForUnixVisitorTest {
conUnix.visit(zoom);
assertThat(LOGGER.getLoggingEvents()).extracting("level", "message").contains(
assertThat(logger.getLoggingEvents()).extracting("level", "message").contains(
tuple(INFO, zoom + " used with Unix configurator."));
}
}

@ -31,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
*/
public class InventoryControllerTest {
@Test
public void testGetProductInventories() {
public void testGetProductInventories() throws Exception {
InventoryController inventoryController = new InventoryController();
int numberOfInventories = inventoryController.getProductInventories();

@ -37,7 +37,7 @@ public class HammerTest extends WeaponTest {
* underlying weapon implementation.
*/
@Test
public void testHammer() {
public void testHammer() throws Exception {
final Hammer hammer = spy(new Hammer(mock(FlyingEnchantment.class)));
testBasicWeaponActions(hammer);
}

@ -37,7 +37,7 @@ public class SwordTest extends WeaponTest {
* underlying weapon implementation.
*/
@Test
public void testSword() {
public void testSword() throws Exception {
final Sword sword = spy(new Sword(mock(FlyingEnchantment.class)));
testBasicWeaponActions(sword);
}

@ -41,7 +41,12 @@ public class App {
*/
public static void main(String[] args) {
Task task = new SimpleTask();
Callback callback = () -> LOGGER.info("I'm done now.");
Callback callback = new Callback() {
@Override
public void call() {
LOGGER.info("I'm done now.");
}
};
task.executeWith(callback);
}
}

@ -38,6 +38,29 @@ public class CallbackTest {
@Test
public void test() {
Callback callback = new Callback() {
@Override
public void call() {
callingCount++;
}
};
Task task = new SimpleTask();
assertEquals(new Integer(0), callingCount, "Initial calling count of 0");
task.executeWith(callback);
assertEquals(new Integer(1), callingCount, "Callback called once");
task.executeWith(callback);
assertEquals(new Integer(2), callingCount, "Callback called twice");
}
@Test
public void testWithLambdasExample() {
Callback callback = () -> callingCount++;
Task task = new SimpleTask();

@ -43,7 +43,7 @@ public class OrcKingTest {
};
@Test
public void testMakeRequest() {
public void testMakeRequest() throws Exception {
final OrcKing king = new OrcKing();
for (final Request request : REQUESTS) {

@ -26,10 +26,10 @@ package com.iluwatar.collectionpipeline;
* A Car class that has the properties of make, model, year and category.
*/
public class Car {
private final String make;
private final String model;
private final int year;
private final Category category;
private String make;
private String model;
private int year;
private Category category;
/**
* Constructor to create an instance of car.

@ -71,7 +71,7 @@ public class ConverterTest {
user.getFirstName().toLowerCase() + user.getLastName().toLowerCase() + "@whatever.com"));
User u1 = new User("John", "Doe", false, "12324");
UserDto userDto = converter.convertFromEntity(u1);
assertEquals("johndoe@whatever.com", userDto.getEmail());
assertEquals(userDto.getEmail(), "johndoe@whatever.com");
}
/**
@ -83,6 +83,6 @@ public class ConverterTest {
ArrayList<User> users = Lists.newArrayList(new User("Camile", "Tough", false, "124sad"),
new User("Marti", "Luther", true, "42309fd"), new User("Kate", "Smith", true, "if0243"));
List<User> fromDtos = userConverter.createFromDtos(userConverter.createFromEntities(users));
assertEquals(users, fromDtos);
assertEquals(fromDtos, users);
}
}

@ -96,7 +96,7 @@ public class IntegrationTest {
@Test
public void testGetAuthorBooks() {
List<Book> books = queryService.getAuthorBooks("username1");
assertEquals(2, books.size());
assertTrue(books.size() == 2);
assertTrue(books.contains(new Book("title1", 10)));
assertTrue(books.contains(new Book("new_title2", 30)));
}

@ -88,7 +88,13 @@ public class CustomerTest {
@Test
public void testToString() {
assertEquals(String.format("Customer{id=%s, firstName='%s', lastName='%s'}",
customer.getId(), customer.getFirstName(), customer.getLastName()), customer.toString());
final StringBuffer buffer = new StringBuffer();
buffer.append("Customer{id=")
.append("" + customer.getId())
.append(", firstName='")
.append(customer.getFirstName())
.append("\', lastName='")
.append(customer.getLastName() + "\'}");
assertEquals(buffer.toString(), customer.toString());
}
}

@ -257,7 +257,7 @@ public class DbCustomerDaoTest {
private void assertCustomerCountIs(int count) throws Exception {
try (Stream<Customer> allCustomers = dao.getAll()) {
assertEquals(count, allCustomers.count());
assertTrue(allCustomers.count() == count);
}
}

@ -156,7 +156,7 @@ public class InMemoryCustomerDaoTest {
private void assertCustomerCountIs(int count) throws Exception {
try (Stream<Customer> allCustomers = dao.getAll()) {
assertEquals(count, allCustomers.count());
assertTrue(allCustomers.count() == count);
}
}
}

@ -21,7 +21,6 @@ package com.iluwatar.datamapper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
/**
* The Data Mapper (DM) is a layer of software that separates the in-memory objects from the
@ -44,29 +43,27 @@ public class DataMapperTest {
final StudentDataMapper mapper = new StudentDataMapperImpl();
/* Create new student */
int studentId = 1;
Student student = new Student(studentId, "Adam", 'A');
Student student = new Student(1, "Adam", 'A');
/* Add student in respectibe db */
mapper.insert(student);
/* Check if student is added in db */
assertEquals(studentId, mapper.find(student.getStudentId()).get().getStudentId());
assertEquals(student.getStudentId(), mapper.find(student.getStudentId()).get().getStudentId());
/* Update existing student object */
String updatedName = "AdamUpdated";
student = new Student(student.getStudentId(), updatedName, 'A');
student = new Student(student.getStudentId(), "AdamUpdated", 'A');
/* Update student in respectibe db */
mapper.update(student);
/* Check if student is updated in db */
assertEquals(updatedName, mapper.find(student.getStudentId()).get().getName());
assertEquals(mapper.find(student.getStudentId()).get().getName(), "AdamUpdated");
/* Delete student in db */
mapper.delete(student);
/* Result should be false */
assertFalse(mapper.find(student.getStudentId()).isPresent());
assertEquals(false, mapper.find(student.getStudentId()).isPresent());
}
}

@ -20,9 +20,7 @@ package com.iluwatar.datamapper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
@ -30,27 +28,28 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
*/
public final class StudentTest {
@Test
/**
* This API tests the equality behaviour of Student object
* Object Equality should work as per logic defined in equals method
*
* @throws Exception if any execution error during test
*/
@Test
public void testEquality() throws Exception {
/* Create some students */
final Student firstStudent = new Student(1, "Adam", 'A');
final Student secondStudent = new Student(2, "Donald", 'B');
final Student secondSameStudent = new Student(2, "Donald", 'B');
final Student firstSameStudent = firstStudent;
/* Check equals functionality: should return 'true' */
assertEquals(firstStudent, firstStudent);
assertTrue(firstStudent.equals(firstSameStudent));
/* Check equals functionality: should return 'false' */
assertNotEquals(firstStudent, secondStudent);
assertFalse(firstStudent.equals(secondStudent));
/* Check equals functionality: should return 'true' */
assertEquals(secondStudent, secondSameStudent);
assertTrue(secondStudent.equals(secondSameStudent));
}
}

@ -30,7 +30,6 @@ import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* tests {@link CustomerResource}.
@ -46,10 +45,10 @@ public class CustomerResourceTest {
List<CustomerDto> allCustomers = customerResource.getAllCustomers();
assertEquals(1, allCustomers.size());
assertEquals("1", allCustomers.get(0).getId());
assertEquals("Melody", allCustomers.get(0).getFirstName());
assertEquals("Yates", allCustomers.get(0).getLastName());
assertEquals(allCustomers.size(), 1);
assertEquals(allCustomers.get(0).getId(), "1");
assertEquals(allCustomers.get(0).getFirstName(), "Melody");
assertEquals(allCustomers.get(0).getLastName(), "Yates");
}
@Test
@ -60,9 +59,9 @@ public class CustomerResourceTest {
customerResource.save(customer);
List<CustomerDto> allCustomers = customerResource.getAllCustomers();
assertEquals("1", allCustomers.get(0).getId());
assertEquals("Rita", allCustomers.get(0).getFirstName());
assertEquals("Reynolds", allCustomers.get(0).getLastName());
assertEquals(allCustomers.get(0).getId(), "1");
assertEquals(allCustomers.get(0).getFirstName(), "Rita");
assertEquals(allCustomers.get(0).getLastName(), "Reynolds");
}
@Test
@ -76,7 +75,7 @@ public class CustomerResourceTest {
customerResource.delete(customer.getId());
List<CustomerDto> allCustomers = customerResource.getAllCustomers();
assertTrue(allCustomers.isEmpty());
assertEquals(allCustomers.size(), 0);
}
}

@ -40,7 +40,7 @@ import com.iluwatar.delegation.simple.printers.HpPrinter;
*/
public class App {
private static final String MESSAGE_TO_PRINT = "hello world";
public static final String MESSAGE_TO_PRINT = "hello world";
/**
* Program entry point

@ -22,7 +22,6 @@
*/
package org.dirty.flag;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.List;
@ -42,7 +41,7 @@ public class DirtyFlagTest {
public void testIsDirty() {
DataFetcher df = new DataFetcher();
List<String> countries = df.fetch();
assertFalse(countries.isEmpty());
assertTrue(!countries.isEmpty());
}
@Test

@ -51,7 +51,7 @@ public class AggregatorRoute extends RouteBuilder {
* @throws Exception in case of exception during configuration
*/
@Override
public void configure() {
public void configure() throws Exception {
// Main route
from("{{entry}}").aggregate(constant(true), aggregator)
.completionSize(3).completionInterval(2000)

@ -70,7 +70,7 @@ public class App {
});
context.start();
context.getRoutes().forEach(r -> LOGGER.info(r.toString()));
context.getRoutes().stream().forEach(r -> LOGGER.info(r.toString()));
context.stop();
}
}

@ -65,7 +65,7 @@ public class App {
});
ProducerTemplate template = context.createProducerTemplate();
context.start();
context.getRoutes().forEach(r -> LOGGER.info(r.toString()));
context.getRoutes().stream().forEach(r -> LOGGER.info(r.toString()));
template.sendBody("direct:origin", "Hello from origin");
context.stop();
}

@ -76,7 +76,7 @@ public class KingJoffreyTest {
private class InMemoryAppender extends AppenderBase<ILoggingEvent> {
private List<ILoggingEvent> log = new LinkedList<>();
public InMemoryAppender(Class<?> clazz) {
public InMemoryAppender(Class clazz) {
((Logger) LoggerFactory.getLogger(clazz)).addAppender(this);
start();
}

@ -35,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
public class WeekdayTest {
@Test
public void testToString() {
public void testToString() throws Exception {
for (final Weekday weekday : Weekday.values()) {
final String toString = weekday.toString();
assertNotNull(toString);

@ -16,12 +16,11 @@
*/
package com.iluwatar.event.asynchronous;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
@ -31,19 +30,26 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
*
*/
public class EventAsynchronousTest {
App app;
private static final Logger LOGGER = LoggerFactory.getLogger(EventAsynchronousTest.class);
@BeforeEach
public void setUp() {
app = new App();
}
@Test
public void testAsynchronousEvent() {
EventManager eventManager = new EventManager();
try {
int aEventId = eventManager.createAsync(60);
eventManager.start(aEventId);
assertEquals(1, eventManager.getEventPool().size());
assertTrue(eventManager.getEventPool().size() == 1);
assertTrue(eventManager.getEventPool().size() < EventManager.MAX_RUNNING_EVENTS);
assertEquals(-1, eventManager.numOfCurrentlyRunningSyncEvent());
assertTrue(eventManager.numOfCurrentlyRunningSyncEvent() == -1);
eventManager.cancel(aEventId);
assertTrue(eventManager.getEventPool().isEmpty());
assertTrue(eventManager.getEventPool().size() == 0);
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException e) {
LOGGER.error(e.getMessage());
}
@ -55,11 +61,11 @@ public class EventAsynchronousTest {
try {
int sEventId = eventManager.create(60);
eventManager.start(sEventId);
assertEquals(1, eventManager.getEventPool().size());
assertTrue(eventManager.getEventPool().size() == 1);
assertTrue(eventManager.getEventPool().size() < EventManager.MAX_RUNNING_EVENTS);
assertNotEquals(-1, eventManager.numOfCurrentlyRunningSyncEvent());
assertTrue(eventManager.numOfCurrentlyRunningSyncEvent() != -1);
eventManager.cancel(sEventId);
assertTrue(eventManager.getEventPool().isEmpty());
assertTrue(eventManager.getEventPool().size() == 0);
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException
| InvalidOperationException e) {
LOGGER.error(e.getMessage());
@ -67,7 +73,7 @@ public class EventAsynchronousTest {
}
@Test
public void testUnsuccessfulSynchronousEvent() {
public void testUnsuccessfulSynchronousEvent() throws InvalidOperationException {
assertThrows(InvalidOperationException.class, () -> {
EventManager eventManager = new EventManager();
try {
@ -88,7 +94,7 @@ public class EventAsynchronousTest {
int eventTime = 1;
int sEventId = eventManager.create(eventTime);
assertEquals(1, eventManager.getEventPool().size());
assertTrue(eventManager.getEventPool().size() == 1);
eventManager.start(sEventId);
long currentTime = System.currentTimeMillis();
@ -98,7 +104,7 @@ public class EventAsynchronousTest {
while (System.currentTimeMillis() < endTime) {
}
assertTrue(eventManager.getEventPool().isEmpty());
assertTrue(eventManager.getEventPool().size() == 0);
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException
| InvalidOperationException e) {
@ -115,7 +121,7 @@ public class EventAsynchronousTest {
int aEventId1 = eventManager.createAsync(eventTime);
int aEventId2 = eventManager.createAsync(eventTime);
int aEventId3 = eventManager.createAsync(eventTime);
assertEquals(3, eventManager.getEventPool().size());
assertTrue(eventManager.getEventPool().size() == 3);
eventManager.start(aEventId1);
eventManager.start(aEventId2);
@ -127,7 +133,7 @@ public class EventAsynchronousTest {
while (System.currentTimeMillis() < endTime) {
}
assertTrue(eventManager.getEventPool().isEmpty());
assertTrue(eventManager.getEventPool().size() == 0);
} catch (MaxNumOfEventsAllowedException | LongRunningEventException | EventDoesNotExistException e) {
LOGGER.error(e.getMessage());

Binary file not shown.

Before

(image error) Size: 17 KiB

After

(image error) Size: 23 KiB

@ -47,13 +47,15 @@ public class App {
* @throws IOException when there is a problem with the audio file loading
* @throws UnsupportedAudioFileException when the loaded audio file is unsupported
*/
public static void main(String[] args) throws UnsupportedAudioFileException, IOException {
Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f);
Audio.playSound(Audio.getAudioStream("./etc/Closed-Hi-Hat-1.wav"), -8.0f);
public static void main(String[] args) throws UnsupportedAudioFileException, IOException, InterruptedException {
Audio audio = Audio.getInstance();
audio.playSound(audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f);
audio.playSound(audio.getAudioStream("./etc/Closed-Hi-Hat-1.wav"), -8.0f);
System.out.println("Press Enter key to stop the program...");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.read();
Audio.stopService();
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
br.read();
}
audio.stopService();
}
}

@ -23,6 +23,9 @@
package com.iluwatar.event.queue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
@ -38,49 +41,56 @@ import javax.sound.sampled.UnsupportedAudioFileException;
*
*/
public class Audio {
private static final Logger LOGGER = LoggerFactory.getLogger(Audio.class);
private static final Audio INSTANCE = new Audio();
private static final int MAX_PENDING = 16;
private static int headIndex;
private int headIndex;
private static int tailIndex;
private int tailIndex;
private static Thread updateThread = null;
private volatile Thread updateThread = null;
private static PlayMessage[] pendingAudio = new PlayMessage[MAX_PENDING];
private PlayMessage[] pendingAudio = new PlayMessage[MAX_PENDING];
// Visible only for testing purposes
Audio() {
}
public static Audio getInstance() {
return INSTANCE;
}
/**
* This method stops the Update Method's thread.
* This method stops the Update Method's thread and waits till service stops.
*/
public static synchronized void stopService() {
public synchronized void stopService() throws InterruptedException {
if (updateThread != null) {
updateThread.interrupt();
}
updateThread.join();
updateThread = null;
}
/**
* This method check the Update Method's thread is started.
* @return boolean
*/
public static synchronized boolean isServiceRunning() {
if (updateThread != null && updateThread.isAlive() ) {
return true;
} else {
return false;
}
public synchronized boolean isServiceRunning() {
return updateThread != null && updateThread.isAlive();
}
/**
* Starts the thread for the Update Method pattern if it was not started previously.
* Also when the thread is is ready initializes the indexes of the queue
*/
public static void init() {
public void init() {
if (updateThread == null) {
updateThread = new Thread(new Runnable() {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
Audio.update();
}
updateThread = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
update();
}
});
}
@ -90,7 +100,7 @@ public class Audio {
/**
* This is a synchronized thread starter
*/
public static synchronized void startThread() {
private synchronized void startThread() {
if (!updateThread.isAlive()) {
updateThread.start();
headIndex = 0;
@ -103,7 +113,7 @@ public class Audio {
* @param stream is the AudioInputStream for the method
* @param volume is the level of the audio's volume
*/
public static void playSound(AudioInputStream stream, float volume) {
public void playSound(AudioInputStream stream, float volume) {
init();
// Walk the pending requests.
for (int i = headIndex; i != tailIndex; i = (i + 1) % MAX_PENDING) {
@ -123,7 +133,7 @@ public class Audio {
* This method uses the Update Method pattern.
* It takes the audio from the queue and plays it
*/
public static void update() {
private void update() {
// If there are no pending requests, do nothing.
if (headIndex == tailIndex) {
return;
@ -136,13 +146,11 @@ public class Audio {
clip.open(audioStream);
clip.start();
} catch (LineUnavailableException e) {
System.err.println("Error occoured while loading the audio: The line is unavailable");
e.printStackTrace();
LOGGER.trace("Error occoured while loading the audio: The line is unavailable", e);
} catch (IOException e) {
System.err.println("Input/Output error while loading the audio");
e.printStackTrace();
LOGGER.trace("Input/Output error while loading the audio", e);
} catch (IllegalArgumentException e) {
System.err.println("The system doesn't support the sound: " + e.getMessage());
LOGGER.trace("The system doesn't support the sound: " + e.getMessage(), e);
}
}
@ -153,7 +161,7 @@ public class Audio {
* @throws UnsupportedAudioFileException when the audio file is not supported
* @throws IOException when the file is not readable
*/
public static AudioInputStream getAudioStream(String filePath)
public AudioInputStream getAudioStream(String filePath)
throws UnsupportedAudioFileException, IOException {
return AudioSystem.getAudioInputStream(new File(filePath).getAbsoluteFile());
}
@ -162,7 +170,7 @@ public class Audio {
* Returns with the message array of the queue
* @return PlayMessage[]
*/
public static PlayMessage[] getPendingAudio() {
public PlayMessage[] getPendingAudio() {
return pendingAudio;
}

@ -23,6 +23,7 @@
package com.iluwatar.event.queue;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import javax.sound.sampled.UnsupportedAudioFileException;
@ -39,6 +40,12 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
*/
public class AudioTest {
private Audio audio;
@BeforeEach
void createAudioInstance() {
audio = new Audio();
}
/**
* Test here that the playSound method works correctly
* @throws UnsupportedAudioFileException when the audio file is not supported
@ -47,13 +54,15 @@ public class AudioTest {
*/
@Test
public void testPlaySound() throws UnsupportedAudioFileException, IOException, InterruptedException {
Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f);
audio.playSound(audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f);
// test that service is started
assertTrue(Audio.isServiceRunning());
assertTrue(audio.isServiceRunning());
// adding a small pause to be sure that the sound is ended
Thread.sleep(5000);
audio.stopService();
// test that service is finished
assertFalse(!Audio.isServiceRunning());
assertFalse(audio.isServiceRunning());
}
/**
@ -64,16 +73,18 @@ public class AudioTest {
*/
@Test
public void testQueue() throws UnsupportedAudioFileException, IOException, InterruptedException {
Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.aif"), -10.0f);
Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.aif"), -10.0f);
Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.aif"), -10.0f);
assertTrue(Audio.getPendingAudio().length > 0);
audio.playSound(audio.getAudioStream("./etc/Bass-Drum-1.aif"), -10.0f);
audio.playSound(audio.getAudioStream("./etc/Bass-Drum-1.aif"), -10.0f);
audio.playSound(audio.getAudioStream("./etc/Bass-Drum-1.aif"), -10.0f);
assertTrue(audio.getPendingAudio().length > 0);
// test that service is started
assertTrue(Audio.isServiceRunning());
assertTrue(audio.isServiceRunning());
// adding a small pause to be sure that the sound is ended
Thread.sleep(10000);
audio.stopService();
// test that service is finished
assertFalse(!Audio.isServiceRunning());
assertFalse(audio.isServiceRunning());
}
}

@ -74,7 +74,7 @@ public class App {
LOGGER.info("Running the system first time............");
eventProcessor.reset();
LOGGER.info("Creating the accounts............");
LOGGER.info("Creating th accounts............");
eventProcessor.process(new AccountCreateEvent(
0, new Date().getTime(), ACCOUNT_OF_DAENERYS, "Daenerys Targaryen"));
@ -98,7 +98,7 @@ public class App {
LOGGER.info(AccountAggregate.getAccount(ACCOUNT_OF_DAENERYS).toString());
LOGGER.info(AccountAggregate.getAccount(ACCOUNT_OF_JON).toString());
LOGGER.info("At that point system had a shut down, state in memory is cleared............");
LOGGER.info("At that point system had a shot down, state in memory is cleared............");
AccountAggregate.resetState();
LOGGER.info("Recover the system by the events in journal file............");

@ -92,7 +92,7 @@ public class MoneyTransferEvent extends DomainEvent {
}
Account accountTo = AccountAggregate.getAccount(accountNoTo);
if (accountTo == null) {
throw new RuntimeException("Account not found " + accountNoTo);
throw new RuntimeException("Account not found" + accountTo);
}
accountFrom.handleTransferFromEvent(this);

@ -44,17 +44,26 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
@EnableRuleMigrationSupport
public class SimpleFileWriterTest {
/**
* Create a temporary folder, used to generate files in during this test
*/
@Rule
public final TemporaryFolder testFolder = new TemporaryFolder();
/**
* Verify if the given writer is not 'null'
*/
@Test
public void testWriterNotNull() throws Exception {
final File temporaryFile = this.testFolder.newFile();
new SimpleFileWriter(temporaryFile.getPath(), Assertions::assertNotNull);
}
/**
* Test if the {@link SimpleFileWriter} creates a file if it doesn't exist
*/
@Test
public void testCreatesNonExistentFile() throws Exception {
public void testNonExistentFile() throws Exception {
final File nonExistingFile = new File(this.testFolder.getRoot(), "non-existing-file");
assertFalse(nonExistingFile.exists());
@ -62,8 +71,11 @@ public class SimpleFileWriterTest {
assertTrue(nonExistingFile.exists());
}
/**
* Test if the data written to the file writer actually gets in the file
*/
@Test
public void testContentsAreWrittenToFile() throws Exception {
public void testActualWrite() throws Exception {
final String testMessage = "Test message";
final File temporaryFile = this.testFolder.newFile();
@ -73,15 +85,17 @@ public class SimpleFileWriterTest {
assertTrue(Files.lines(temporaryFile.toPath()).allMatch(testMessage::equals));
}
/**
* Verify if an {@link IOException} during the write ripples through
*/
@Test
public void testRipplesIoExceptionOccurredWhileWriting() {
String message = "Some error";
public void testIoException() throws Exception {
assertThrows(IOException.class, () -> {
final File temporaryFile = this.testFolder.newFile();
new SimpleFileWriter(temporaryFile.getPath(), writer -> {
throw new IOException(message);
throw new IOException("");
});
}, message);
});
}
}

@ -32,16 +32,16 @@ import units.CommanderUnit;
*/
public class Commander implements CommanderExtension {
private static final Logger LOGGER = LoggerFactory.getLogger(Commander.class);
private CommanderUnit unit;
public Commander(CommanderUnit commanderUnit) {
this.unit = commanderUnit;
}
final Logger logger = LoggerFactory.getLogger(Commander.class);
@Override
public void commanderReady() {
LOGGER.info("[Commander] " + unit.getName() + " is ready!");
logger.info("[Commander] " + unit.getName() + " is ready!");
}
}

@ -32,16 +32,16 @@ import units.SergeantUnit;
*/
public class Sergeant implements SergeantExtension {
private static final Logger LOGGER = LoggerFactory.getLogger(Sergeant.class);
private SergeantUnit unit;
public Sergeant(SergeantUnit sergeantUnit) {
this.unit = sergeantUnit;
}
final Logger logger = LoggerFactory.getLogger(Sergeant.class);
@Override
public void sergeantReady() {
LOGGER.info("[Sergeant] " + unit.getName() + " is ready! ");
logger.info("[Sergeant] " + unit.getName() + " is ready! ");
}
}

@ -31,7 +31,6 @@ import units.SoldierUnit;
* Class defining Soldier
*/
public class Soldier implements SoldierExtension {
private static final Logger LOGGER = LoggerFactory.getLogger(Soldier.class);
private SoldierUnit unit;
@ -39,8 +38,10 @@ public class Soldier implements SoldierExtension {
this.unit = soldierUnit;
}
final Logger logger = LoggerFactory.getLogger(Soldier.class);
@Override
public void soldierReady() {
LOGGER.info("[Solider] " + unit.getName() + " is ready!");
logger.info("[Solider] " + unit.getName() + " is ready!");
}
}

@ -30,7 +30,7 @@ import units.CommanderUnit;
*/
public class CommanderTest {
@Test
public void commanderReady() {
public void commanderReady() throws Exception {
final Commander commander = new Commander(new CommanderUnit("CommanderUnitTest"));
commander.commanderReady();

@ -33,13 +33,13 @@ import static org.junit.jupiter.api.Assertions.assertNull;
*/
public class CommanderUnitTest {
@Test
public void getUnitExtension() {
public void getUnitExtension() throws Exception {
final Unit unit = new CommanderUnit("CommanderUnitName");
assertNull(unit.getUnitExtension("SoldierExtension"));
assertNull(unit.getUnitExtension("SergeantExtension"));
assertNotNull(unit.getUnitExtension("CommanderExtension"));
assertNotNull((CommanderExtension) unit.getUnitExtension("CommanderExtension"));
}
}

@ -33,12 +33,12 @@ import static org.junit.jupiter.api.Assertions.assertNull;
*/
public class SergeantUnitTest {
@Test
public void getUnitExtension() {
public void getUnitExtension() throws Exception {
final Unit unit = new SergeantUnit("SergeantUnitName");
assertNull(unit.getUnitExtension("SoldierExtension"));
assertNotNull(unit.getUnitExtension("SergeantExtension"));
assertNotNull((SergeantExtension) unit.getUnitExtension("SergeantExtension"));
assertNull(unit.getUnitExtension("CommanderExtension"));
}

@ -33,11 +33,11 @@ import static org.junit.jupiter.api.Assertions.assertNull;
*/
public class SoldierUnitTest {
@Test
public void getUnitExtension() {
public void getUnitExtension() throws Exception {
final Unit unit = new SoldierUnit("SoldierUnitName");
assertNotNull(unit.getUnitExtension("SoldierExtension"));
assertNotNull((SoldierExtension) unit.getUnitExtension("SoldierExtension"));
assertNull(unit.getUnitExtension("SergeantExtension"));
assertNull(unit.getUnitExtension("CommanderExtension"));

@ -83,7 +83,7 @@ public class FactoryKitTest {
* @param weapon weapon object which is to be verified
* @param clazz expected class of the weapon
*/
private void verifyWeapon(Weapon weapon, Class<?> clazz) {
private void verifyWeapon(Weapon weapon, Class clazz) {
assertTrue(clazz.isInstance(weapon), "Weapon must be an object of: " + clazz.getName());
}
}

@ -40,14 +40,14 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class PropertiesFeatureToggleVersionTest {
@Test
public void testNullPropertiesPassed() {
public void testNullPropertiesPassed() throws Exception {
assertThrows(IllegalArgumentException.class, () -> {
new PropertiesFeatureToggleVersion(null);
});
}
@Test
public void testNonBooleanProperty() {
public void testNonBooleanProperty() throws Exception {
assertThrows(IllegalArgumentException.class, () -> {
final Properties properties = new Properties();
properties.setProperty("enhancedWelcome", "Something");
@ -56,7 +56,7 @@ public class PropertiesFeatureToggleVersionTest {
}
@Test
public void testFeatureTurnedOn() {
public void testFeatureTurnedOn() throws Exception {
final Properties properties = new Properties();
properties.put("enhancedWelcome", true);
Service service = new PropertiesFeatureToggleVersion(properties);
@ -66,7 +66,7 @@ public class PropertiesFeatureToggleVersionTest {
}
@Test
public void testFeatureTurnedOff() {
public void testFeatureTurnedOff() throws Exception {
final Properties properties = new Properties();
properties.put("enhancedWelcome", false);
Service service = new PropertiesFeatureToggleVersion(properties);

@ -41,27 +41,27 @@ public class TieredFeatureToggleVersionTest {
final Service service = new TieredFeatureToggleVersion();
@BeforeEach
public void setUp() {
public void setUp() throws Exception {
UserGroup.addUserToPaidGroup(paidUser);
UserGroup.addUserToFreeGroup(freeUser);
}
@Test
public void testGetWelcomeMessageForPaidUser() {
public void testGetWelcomeMessageForPaidUser() throws Exception {
final String welcomeMessage = service.getWelcomeMessage(paidUser);
final String expected = "You're amazing Jamie Coder. Thanks for paying for this awesome software.";
assertEquals(expected, welcomeMessage);
}
@Test
public void testGetWelcomeMessageForFreeUser() {
public void testGetWelcomeMessageForFreeUser() throws Exception {
final String welcomeMessage = service.getWelcomeMessage(freeUser);
final String expected = "I suppose you can use this software.";
assertEquals(expected, welcomeMessage);
}
@Test
public void testIsEnhancedAlwaysTrueAsTiered() {
public void testIsEnhancedAlwaysTrueAsTiered() throws Exception {
assertTrue(service.isEnhanced());
}
}

@ -171,11 +171,11 @@ public class SimpleFluentIterable<E> implements FluentIterable<E> {
/**
* @return a FluentIterable from a given iterable. Calls the SimpleFluentIterable constructor.
*/
public static <E> FluentIterable<E> from(Iterable<E> iterable) {
public static final <E> FluentIterable<E> from(Iterable<E> iterable) {
return new SimpleFluentIterable<>(iterable);
}
public static <E> FluentIterable<E> fromCopyOf(Iterable<E> iterable) {
public static final <E> FluentIterable<E> fromCopyOf(Iterable<E> iterable) {
List<E> copy = FluentIterable.copyToList(iterable);
return new SimpleFluentIterable<>(copy);
}

@ -179,15 +179,15 @@ public abstract class FluentIterableTest {
}
@Test
public void testForEach() {
public void testForEach() throws Exception {
final List<Integer> integers = Arrays.asList(1, 2, 3);
final Consumer<Integer> consumer = mock(Consumer.class);
createFluentIterable(integers).forEach(consumer);
verify(consumer, times(1)).accept(1);
verify(consumer, times(1)).accept(2);
verify(consumer, times(1)).accept(3);
verify(consumer, times(1)).accept(Integer.valueOf(1));
verify(consumer, times(1)).accept(Integer.valueOf(2));
verify(consumer, times(1)).accept(Integer.valueOf(3));
verifyNoMoreInteractions(consumer);
}

@ -36,7 +36,7 @@ public class FrontController {
}
private Command getCommand(String request) {
Class<?> commandClass = getCommandClass(request);
Class commandClass = getCommandClass(request);
try {
return (Command) commandClass.newInstance();
} catch (Exception e) {
@ -44,8 +44,8 @@ public class FrontController {
}
}
private static Class<?> getCommandClass(String request) {
Class<?> result;
private static Class getCommandClass(String request) {
Class result;
try {
result = Class.forName("com.iluwatar.front.controller." + request + "Command");
} catch (ClassNotFoundException e) {

@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertSame;
public class ApplicationExceptionTest {
@Test
public void testCause() {
public void testCause() throws Exception {
final Exception cause = new Exception();
assertSame(cause, new ApplicationException(cause).getCause());
}

@ -41,7 +41,7 @@ public class GuardedQueueTest {
GuardedQueue g = new GuardedQueue();
ExecutorService executorService = Executors.newFixedThreadPool(2);
executorService.submit(() -> value = g.get());
executorService.submit(() -> g.put(10));
executorService.submit(() -> g.put(Integer.valueOf(10)));
executorService.shutdown();
try {
executorService.awaitTermination(30, TimeUnit.SECONDS);

@ -34,7 +34,7 @@ import java.util.concurrent.ExecutionException;
public class AppTest {
@Test
public void test() {
public void test() throws InterruptedException, ExecutionException {
App.main(null);
}
}

@ -22,7 +22,6 @@
*/
package com.iluwatar.halfsynchalfasync;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InOrder;
@ -45,17 +44,11 @@ import static org.mockito.Mockito.when;
* @author Jeroen Meulemeester
*/
public class AsynchronousServiceTest {
private AsynchronousService service;
private AsyncTask<Object> task;
@BeforeEach
public void setUp() {
service = new AsynchronousService(new LinkedBlockingQueue<>());
task = mock(AsyncTask.class);
}
@Test
public void testPerfectExecution() throws Exception {
final AsynchronousService service = new AsynchronousService(new LinkedBlockingQueue<>());
final AsyncTask<Object> task = mock(AsyncTask.class);
final Object result = new Object();
when(task.call()).thenReturn(result);
service.execute(task);
@ -72,6 +65,8 @@ public class AsynchronousServiceTest {
@Test
public void testCallException() throws Exception {
final AsynchronousService service = new AsynchronousService(new LinkedBlockingQueue<>());
final AsyncTask<Object> task = mock(AsyncTask.class);
final IOException exception = new IOException();
when(task.call()).thenThrow(exception);
service.execute(task);
@ -87,7 +82,9 @@ public class AsynchronousServiceTest {
}
@Test
public void testPreCallException() {
public void testPreCallException() throws Exception {
final AsynchronousService service = new AsynchronousService(new LinkedBlockingQueue<>());
final AsyncTask<Object> task = mock(AsyncTask.class);
final IllegalStateException exception = new IllegalStateException();
doThrow(exception).when(task).onPreCall();
service.execute(task);

@ -22,6 +22,9 @@
*/
package com.iluwatar.intercepting.filter;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
@ -30,9 +33,6 @@ import javax.swing.JRootPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import java.awt.BorderLayout;
import java.awt.GridLayout;
/**
* The Client class is responsible for handling the input and running them through filters inside the
@ -60,7 +60,7 @@ public class Client extends JFrame { // NOSONAR
*/
public Client() {
super("Client System");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 300);
jl = new JLabel("RUNNING...");
jtFields = new JTextField[3];

@ -22,6 +22,11 @@
*/
package com.iluwatar.intercepting.filter;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
@ -29,12 +34,7 @@ import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* This is where the requests are displayed after being validated by filters.
@ -47,6 +47,7 @@ public class Target extends JFrame { //NOSONAR
private static final long serialVersionUID = 1L;
private JTable jt;
private JScrollPane jsp;
private DefaultTableModel dtm;
private JButton del;
@ -55,7 +56,7 @@ public class Target extends JFrame { //NOSONAR
*/
public Target() {
super("Order System");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(640, 480);
dtm =
new DefaultTableModel(new Object[] {"Name", "Contact Number", "Address", "Deposit Number",
@ -72,7 +73,7 @@ public class Target extends JFrame { //NOSONAR
bot.setLayout(new BorderLayout());
bot.add(del, BorderLayout.EAST);
add(bot, BorderLayout.SOUTH);
JScrollPane jsp = new JScrollPane(jt);
jsp = new JScrollPane(jt);
jsp.setPreferredSize(new Dimension(500, 250));
add(jsp, BorderLayout.CENTER);

@ -40,7 +40,7 @@ import static org.mockito.Mockito.when;
public class FilterManagerTest {
@Test
public void testFilterRequest() {
public void testFilterRequest() throws Exception {
final Target target = mock(Target.class);
final FilterManager filterManager = new FilterManager();
assertEquals("RUNNING...", filterManager.filterRequest(mock(Order.class)));
@ -48,7 +48,7 @@ public class FilterManagerTest {
}
@Test
public void testAddFilter() {
public void testAddFilter() throws Exception {
final Target target = mock(Target.class);
final FilterManager filterManager = new FilterManager();

@ -89,7 +89,7 @@ public class FilterTest {
@ParameterizedTest
@MethodSource("getTestData")
public void testExecute(Filter filter, Order order, String expectedResult) {
public void testExecute(Filter filter, Order order, String expectedResult) throws Exception {
final String result = filter.execute(order);
assertNotNull(result);
assertEquals(expectedResult, result.trim());
@ -97,7 +97,7 @@ public class FilterTest {
@ParameterizedTest
@MethodSource("getTestData")
public void testNext(Filter filter) {
public void testNext(Filter filter) throws Exception {
assertNull(filter.getNext());
assertSame(filter, filter.getLast());
}

@ -36,35 +36,35 @@ public class OrderTest {
private static final String EXPECTED_VALUE = "test";
@Test
public void testSetName() {
public void testSetName() throws Exception {
final Order order = new Order();
order.setName(EXPECTED_VALUE);
assertEquals(EXPECTED_VALUE, order.getName());
}
@Test
public void testSetContactNumber() {
public void testSetContactNumber() throws Exception {
final Order order = new Order();
order.setContactNumber(EXPECTED_VALUE);
assertEquals(EXPECTED_VALUE, order.getContactNumber());
}
@Test
public void testSetAddress() {
public void testSetAddress() throws Exception {
final Order order = new Order();
order.setAddress(EXPECTED_VALUE);
assertEquals(EXPECTED_VALUE, order.getAddress());
}
@Test
public void testSetDepositNumber() {
public void testSetDepositNumber() throws Exception {
final Order order = new Order();
order.setDepositNumber(EXPECTED_VALUE);
assertEquals(EXPECTED_VALUE, order.getDepositNumber());
}
@Test
public void testSetOrder() {
public void testSetOrder() throws Exception {
final Order order = new Order();
order.setOrderItem(EXPECTED_VALUE);
assertEquals(EXPECTED_VALUE, order.getOrderItem());

@ -50,49 +50,49 @@ class BstIteratorTest {
@Test
void nextForEmptyTree() {
BstIterator<Integer> iter = new BstIterator<>(emptyRoot);
BstIterator iter = new BstIterator<>(emptyRoot);
assertThrows(NoSuchElementException.class, iter::next,
"next() should throw an IllegalStateException if hasNext() is false.");
}
@Test
void nextOverEntirePopulatedTree() {
BstIterator<Integer> 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.");
assertEquals(Integer.valueOf(5), iter.next().getVal(), "Fourth Node is 5.");
assertEquals(Integer.valueOf(6), iter.next().getVal(), "Fifth Node is 6.");
assertEquals(Integer.valueOf(7), iter.next().getVal(), "Sixth Node is 7.");
BstIterator iter = new BstIterator<>(nonEmptyRoot);
assertEquals(1, iter.next().getVal(), "First Node is 1.");
assertEquals(3, iter.next().getVal(), "Second Node is 3.");
assertEquals(4, iter.next().getVal(), "Third Node is 4.");
assertEquals(5, iter.next().getVal(), "Fourth Node is 5.");
assertEquals(6, iter.next().getVal(), "Fifth Node is 6.");
assertEquals(7, iter.next().getVal(), "Sixth Node is 7.");
}
@Test
void hasNextForEmptyTree() {
BstIterator<Integer> iter = new BstIterator<>(emptyRoot);
BstIterator iter = new BstIterator<>(emptyRoot);
assertFalse(iter.hasNext(), "hasNext() should return false for empty tree.");
}
@Test
void hasNextForPopulatedTree() {
BstIterator<Integer> iter = new BstIterator<>(nonEmptyRoot);
BstIterator iter = new BstIterator<>(nonEmptyRoot);
assertTrue(iter.hasNext(), "hasNext() should return true for populated tree.");
}
@Test
void nextAndHasNextOverEntirePopulatedTree() {
BstIterator<Integer> iter = new BstIterator<>(nonEmptyRoot);
BstIterator iter = new BstIterator<>(nonEmptyRoot);
assertTrue(iter.hasNext(), "Iterator hasNext() should be true.");
assertEquals(Integer.valueOf(1), iter.next().getVal(), "First Node is 1.");
assertEquals(1, iter.next().getVal(), "First Node is 1.");
assertTrue(iter.hasNext(), "Iterator hasNext() should be true.");
assertEquals(Integer.valueOf(3), iter.next().getVal(), "Second Node is 3.");
assertEquals(3, iter.next().getVal(), "Second Node is 3.");
assertTrue(iter.hasNext(), "Iterator hasNext() should be true.");
assertEquals(Integer.valueOf(4), iter.next().getVal(), "Third Node is 4.");
assertEquals(4, iter.next().getVal(), "Third Node is 4.");
assertTrue(iter.hasNext(), "Iterator hasNext() should be true.");
assertEquals(Integer.valueOf(5), iter.next().getVal(), "Fourth Node is 5.");
assertEquals(5, iter.next().getVal(), "Fourth Node is 5.");
assertTrue(iter.hasNext(), "Iterator hasNext() should be true.");
assertEquals(Integer.valueOf(6), iter.next().getVal(), "Fifth Node is 6.");
assertEquals(6, iter.next().getVal(), "Fifth Node is 6.");
assertTrue(iter.hasNext(), "Iterator hasNext() should be true.");
assertEquals(Integer.valueOf(7), iter.next().getVal(), "Sixth Node is 7.");
assertEquals(7, iter.next().getVal(), "Sixth Node is 7.");
assertFalse(iter.hasNext(), "Iterator hasNext() should be false, end of tree.");
}

@ -41,6 +41,6 @@ public class CakeViewImpl implements View {
}
public void render() {
cakeBakingService.getAllCakes().forEach(cake -> LOGGER.info(cake.toString()));
cakeBakingService.getAllCakes().stream().forEach(cake -> LOGGER.info(cake.toString()));
}
}

@ -35,14 +35,14 @@ import static org.junit.jupiter.api.Assertions.assertNull;
public class CakeBakingExceptionTest {
@Test
public void testConstructor() {
public void testConstructor() throws Exception {
final CakeBakingException exception = new CakeBakingException();
assertNull(exception.getMessage());
assertNull(exception.getCause());
}
@Test
public void testConstructorWithMessage() {
public void testConstructorWithMessage() throws Exception {
final String expectedMessage = "message";
final CakeBakingException exception = new CakeBakingException(expectedMessage);
assertEquals(expectedMessage, exception.getMessage());

@ -42,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class CakeBakingServiceImplTest {
@Test
public void testLayers() {
public void testLayers() throws CakeBakingException {
final CakeBakingServiceImpl service = new CakeBakingServiceImpl();
final List<CakeLayerInfo> initialLayers = service.getAvailableLayers();
@ -65,7 +65,7 @@ public class CakeBakingServiceImplTest {
}
@Test
public void testToppings() {
public void testToppings() throws CakeBakingException {
final CakeBakingServiceImpl service = new CakeBakingServiceImpl();
final List<CakeToppingInfo> initialToppings = service.getAvailableToppings();
@ -125,7 +125,7 @@ public class CakeBakingServiceImplTest {
}
@Test
public void testBakeCakeMissingTopping() {
public void testBakeCakeMissingTopping() throws CakeBakingException {
final CakeBakingServiceImpl service = new CakeBakingServiceImpl();
final CakeLayerInfo layer1 = new CakeLayerInfo("Layer1", 1000);
@ -140,7 +140,7 @@ public class CakeBakingServiceImplTest {
}
@Test
public void testBakeCakeMissingLayer() {
public void testBakeCakeMissingLayer() throws CakeBakingException {
final CakeBakingServiceImpl service = new CakeBakingServiceImpl();
final List<CakeInfo> initialCakes = service.getAllCakes();

@ -44,7 +44,7 @@ public class CakeTest {
final Cake cake = new Cake();
assertNull(cake.getId());
final Long expectedId = 1234L;
final Long expectedId = Long.valueOf(1234L);
cake.setId(expectedId);
assertEquals(expectedId, cake.getId());
}

@ -37,7 +37,7 @@ public class Java8Holder {
private static final Logger LOGGER = LoggerFactory.getLogger(Java8Holder.class);
private Supplier<Heavy> heavy = this::createAndCacheHeavy;
private Supplier<Heavy> heavy = () -> createAndCacheHeavy();
public Java8Holder() {
LOGGER.info("Java8Holder created");

@ -27,7 +27,6 @@ import java.io.FileReader;
import java.io.IOException;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
/**
* The Module pattern can be considered a Creational pattern and a Structural pattern. It manages
@ -89,7 +88,7 @@ public final class FileLoggerModuleTest {
fileLoggerModule.prepare();
/* Test if nothing is printed in file */
assertNull(readFirstLine(OUTPUT_FILE));
assertEquals(readFirstLine(OUTPUT_FILE), null);
/* Unprepare to cleanup the modules */
fileLoggerModule.unprepare();
@ -114,7 +113,7 @@ public final class FileLoggerModuleTest {
fileLoggerModule.printErrorString(ERROR);
/* Test if 'Message' is printed in file */
assertEquals(ERROR, readFirstLine(ERROR_FILE));
assertEquals(readFirstLine(ERROR_FILE), ERROR);
/* Unprepare to cleanup the modules */
fileLoggerModule.unprepare();
@ -136,7 +135,7 @@ public final class FileLoggerModuleTest {
fileLoggerModule.prepare();
/* Test if nothing is printed in file */
assertNull(readFirstLine(ERROR_FILE));
assertEquals(readFirstLine(ERROR_FILE), null);
/* Unprepare to cleanup the modules */
fileLoggerModule.unprepare();
@ -151,7 +150,11 @@ public final class FileLoggerModuleTest {
private static final String readFirstLine(final String file) {
String firstLine = null;
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) {
BufferedReader bufferedReader = null;
try {
/* Create a buffered reader */
bufferedReader = new BufferedReader(new FileReader(file));
while (bufferedReader.ready()) {
@ -163,6 +166,15 @@ public final class FileLoggerModuleTest {
} catch (final IOException e) {
LOGGER.error("ModuleTest::readFirstLine()", e);
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (final IOException e) {
LOGGER.error("ModuleTest::readFirstLine()", e);
}
}
}
return firstLine;

@ -34,31 +34,33 @@ import java.util.List;
*/
public class LoadBalancer {
private static final List<Server> SERVERS = new ArrayList<>();
private static List<Server> servers = new ArrayList<>();
private static int lastServedId;
static {
int id = 0;
for (int port : new int[] {8080, 8081, 8082, 8083, 8084}) {
SERVERS.add(new Server("localhost", port, ++id));
}
servers.add(new Server("localhost", 8081, ++id));
servers.add(new Server("localhost", 8080, ++id));
servers.add(new Server("localhost", 8082, ++id));
servers.add(new Server("localhost", 8083, ++id));
servers.add(new Server("localhost", 8084, ++id));
}
/**
* Add new server
*/
public final void addServer(Server server) {
synchronized (SERVERS) {
SERVERS.add(server);
synchronized (servers) {
servers.add(server);
}
}
public final int getNoOfServers() {
return SERVERS.size();
return servers.size();
}
public int getLastServedId() {
public static int getLastServedId() {
return lastServedId;
}
@ -66,10 +68,10 @@ public class LoadBalancer {
* Handle request
*/
public synchronized void serverRequest(Request request) {
if (lastServedId >= SERVERS.size()) {
if (lastServedId >= servers.size()) {
lastServedId = 0;
}
Server server = SERVERS.get(lastServedId++);
Server server = servers.get(lastServedId++);
server.serve(request);
}

@ -22,7 +22,9 @@
*/
package com.iluwatar.monostate;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
@ -32,8 +34,6 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
import org.junit.jupiter.api.Test;
/**
* Date: 12/21/15 - 12:26 PM
*
@ -47,9 +47,9 @@ public class LoadBalancerTest {
final LoadBalancer secondBalancer = new LoadBalancer();
firstBalancer.addServer(new Server("localhost", 8085, 6));
// Both should have the same number of servers.
assertEquals(firstBalancer.getNoOfServers(), secondBalancer.getNoOfServers());
assertTrue(firstBalancer.getNoOfServers() == secondBalancer.getNoOfServers());
// Both Should have the same LastServedId
assertEquals(firstBalancer.getLastServedId(), secondBalancer.getLastServedId());
assertTrue(firstBalancer.getLastServedId() == secondBalancer.getLastServedId());
}
@Test

@ -45,27 +45,27 @@ public class MuteTest {
@Test
public void muteShouldRunTheCheckedRunnableAndNotThrowAnyExceptionIfCheckedRunnableDoesNotThrowAnyException() {
Mute.mute(this::methodNotThrowingAnyException);
Mute.mute(() -> methodNotThrowingAnyException());
}
@Test
public void muteShouldRethrowUnexpectedExceptionAsAssertionError() {
public void muteShouldRethrowUnexpectedExceptionAsAssertionError() throws Exception {
assertThrows(AssertionError.class, () -> {
Mute.mute(this::methodThrowingException);
Mute.mute(() -> methodThrowingException());
});
}
@Test
public void loggedMuteShouldRunTheCheckedRunnableAndNotThrowAnyExceptionIfCheckedRunnableDoesNotThrowAnyException() {
Mute.loggedMute(this::methodNotThrowingAnyException);
Mute.loggedMute(() -> methodNotThrowingAnyException());
}
@Test
public void loggedMuteShouldLogExceptionTraceBeforeSwallowingIt() {
public void loggedMuteShouldLogExceptionTraceBeforeSwallowingIt() throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
System.setErr(new PrintStream(stream));
Mute.loggedMute(this::methodThrowingException);
Mute.loggedMute(() -> methodThrowingException());
assertTrue(new String(stream.toByteArray()).contains(MESSAGE));
}

@ -56,7 +56,7 @@ public class NullNodeTest {
}
@Test
public void testWalk() {
public void testWalk() throws Exception {
NullNode.getInstance().walk();
}

@ -110,7 +110,7 @@ public class TreeTest {
}
@Test
public void testGetLeft() {
public void testGetLeft() throws Exception {
final Node level1 = TREE_ROOT.getLeft();
assertNotNull(level1);
assertEquals("level1_a", level1.getName());
@ -130,7 +130,7 @@ public class TreeTest {
}
@Test
public void testGetRight() {
public void testGetRight() throws Exception {
final Node level1 = TREE_ROOT.getRight();
assertNotNull(level1);
assertEquals("level1_b", level1.getName());

@ -59,7 +59,7 @@ public class King implements Royalty {
*/
public void flirt(Queen queen) {
boolean flirtStatus = queen.getFlirted(this);
if (!flirtStatus) {
if (flirtStatus == false) {
this.makeUnhappy();
} else {
this.makeHappy();

@ -22,8 +22,6 @@
*/
package com.iluwatar.object.pool;
import java.util.concurrent.atomic.AtomicInteger;
/**
*
* Oliphaunts are expensive to create
@ -31,7 +29,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*/
public class Oliphaunt {
private static AtomicInteger counter = new AtomicInteger(0);
private static int counter = 1;
private final int id;
@ -39,7 +37,7 @@ public class Oliphaunt {
* Constructor
*/
public Oliphaunt() {
id = counter.incrementAndGet();
id = counter++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {

@ -49,23 +49,23 @@ public class OliphauntPoolTest {
public void testSubsequentCheckinCheckout() {
assertTimeout(ofMillis(5000), () -> {
final OliphauntPool pool = new OliphauntPool();
assertEquals("Pool available=0 inUse=0", pool.toString());
assertEquals(pool.toString(), "Pool available=0 inUse=0");
final Oliphaunt expectedOliphaunt = pool.checkOut();
assertEquals("Pool available=0 inUse=1", pool.toString());
assertEquals(pool.toString(), "Pool available=0 inUse=1");
pool.checkIn(expectedOliphaunt);
assertEquals("Pool available=1 inUse=0", pool.toString());
assertEquals(pool.toString(), "Pool available=1 inUse=0");
for (int i = 0; i < 100; i++) {
final Oliphaunt oliphaunt = pool.checkOut();
assertEquals("Pool available=0 inUse=1", pool.toString());
assertEquals(pool.toString(), "Pool available=0 inUse=1");
assertSame(expectedOliphaunt, oliphaunt);
assertEquals(expectedOliphaunt.getId(), oliphaunt.getId());
assertEquals(expectedOliphaunt.toString(), oliphaunt.toString());
pool.checkIn(oliphaunt);
assertEquals("Pool available=1 inUse=0", pool.toString());
assertEquals(pool.toString(), "Pool available=1 inUse=0");
}
});
}

@ -42,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
* @author Jeroen Meulemeester
*/
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public abstract class ObserverTest<O extends Observer<?, ?, WeatherType>> {
public abstract class ObserverTest<O extends Observer> {
private InMemoryAppender appender;

@ -36,34 +36,38 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
public class PoisonMessageTest {
@Test
public void testAddHeader() {
public void testAddHeader() throws Exception {
assertThrows(UnsupportedOperationException.class, () -> {
POISON_PILL.addHeader(Headers.SENDER, "sender");
});
}
@Test
public void testGetHeader() {
public void testGetHeader() throws Exception {
assertThrows(UnsupportedOperationException.class, () -> {
POISON_PILL.getHeader(Headers.SENDER);
});
}
@Test
public void testGetHeaders() {
assertThrows(UnsupportedOperationException.class, POISON_PILL::getHeaders);
public void testGetHeaders() throws Exception {
assertThrows(UnsupportedOperationException.class, () -> {
POISON_PILL.getHeaders();
});
}
@Test
public void testSetBody() {
public void testSetBody() throws Exception {
assertThrows(UnsupportedOperationException.class, () -> {
POISON_PILL.setBody("Test message.");
});
}
@Test
public void testGetBody() {
assertThrows(UnsupportedOperationException.class, POISON_PILL::getBody);
public void testGetBody() throws Exception {
assertThrows(UnsupportedOperationException.class, () -> {
POISON_PILL.getBody();
});
}
}

@ -39,7 +39,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
public class ProducerTest {
@Test
public void testProduce() {
public void testProduce() throws Exception {
assertTimeout(ofMillis(6000), () -> {
final ItemQueue queue = mock(ItemQueue.class);
final Producer producer = new Producer("producer", queue);

@ -155,15 +155,19 @@ public class App {
* This is an async method and does not wait until the file is downloaded.
*/
private Promise<String> download(String urlString) {
return new Promise<String>()
Promise<String> downloadPromise = new Promise<String>()
.fulfillInAsync(
() -> Utility.downloadFile(urlString), executor)
() -> {
return Utility.downloadFile(urlString);
}, executor)
.onError(
throwable -> {
throwable.printStackTrace();
taskCompleted();
}
);
return downloadPromise;
}
private void stop() throws InterruptedException {

@ -32,6 +32,7 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
@ -110,7 +111,7 @@ public class Utility {
* Downloads the contents from the given urlString, and stores it in a temporary directory.
* @return the absolute path of the file downloaded.
*/
public static String downloadFile(String urlString) throws IOException {
public static String downloadFile(String urlString) throws MalformedURLException, IOException {
LOGGER.info("Downloading contents from url: {}", urlString);
URL url = new URL(urlString);
File file = File.createTempFile("promise_pattern", null);

@ -76,8 +76,12 @@ public class PromiseTest {
private void testWaitingForeverForPromiseToBeFulfilled()
throws InterruptedException, TimeoutException {
Promise<Integer> promise = new Promise<>();
promise.fulfillInAsync(() -> {
throw new RuntimeException("Barf!");
promise.fulfillInAsync(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
throw new RuntimeException("Barf!");
}
}, executor);
try {
@ -100,8 +104,12 @@ public class PromiseTest {
private void testWaitingSomeTimeForPromiseToBeFulfilled()
throws InterruptedException, TimeoutException {
Promise<Integer> promise = new Promise<>();
promise.fulfillInAsync(() -> {
throw new RuntimeException("Barf!");
promise.fulfillInAsync(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
throw new RuntimeException("Barf!");
}
}, executor);
try {
@ -142,8 +150,12 @@ public class PromiseTest {
throws InterruptedException, ExecutionException, TimeoutException {
Promise<Void> dependentPromise = promise
.fulfillInAsync(new NumberCrunchingTask(), executor)
.thenAccept(value -> {
throw new RuntimeException("Barf!");
.thenAccept(new Consumer<Integer>() {
@Override
public void accept(Integer value) {
throw new RuntimeException("Barf!");
}
});
try {
@ -186,8 +198,12 @@ public class PromiseTest {
throws InterruptedException, ExecutionException, TimeoutException {
Promise<String> dependentPromise = promise
.fulfillInAsync(new NumberCrunchingTask(), executor)
.thenApply(value -> {
throw new RuntimeException("Barf!");
.thenApply(new Function<Integer, String>() {
@Override
public String apply(Integer value) {
throw new RuntimeException("Barf!");
}
});
try {

@ -73,7 +73,7 @@ public class CharacterTest {
}
@Test
public void testToString() {
public void testToString() throws Exception {
final Character prototype = new Character();
prototype.set(Stats.ARMOR, 1);
prototype.set(Stats.AGILITY, 2);
@ -91,7 +91,7 @@ public class CharacterTest {
}
@Test
public void testName() {
public void testName() throws Exception {
final Character prototype = new Character();
prototype.set(Stats.ARMOR, 1);
prototype.set(Stats.INTELLECT, 2);
@ -107,7 +107,7 @@ public class CharacterTest {
}
@Test
public void testType() {
public void testType() throws Exception {
final Character prototype = new Character();
prototype.set(Stats.ARMOR, 1);
prototype.set(Stats.INTELLECT, 2);

@ -40,7 +40,7 @@ public class ElfBeast extends Beast {
}
@Override
public Beast copy() {
public Beast copy() throws CloneNotSupportedException {
return new ElfBeast(this);
}

@ -41,7 +41,7 @@ public class ElfMage extends Mage {
}
@Override
public ElfMage copy() {
public ElfMage copy() throws CloneNotSupportedException {
return new ElfMage(this);
}

@ -40,7 +40,7 @@ public class ElfWarlord extends Warlord {
}
@Override
public ElfWarlord copy() {
public ElfWarlord copy() throws CloneNotSupportedException {
return new ElfWarlord(this);
}

@ -40,7 +40,7 @@ public class OrcBeast extends Beast {
}
@Override
public Beast copy() {
public Beast copy() throws CloneNotSupportedException {
return new OrcBeast(this);
}

@ -40,7 +40,7 @@ public class OrcMage extends Mage {
}
@Override
public OrcMage copy() {
public OrcMage copy() throws CloneNotSupportedException {
return new OrcMage(this);
}

@ -40,7 +40,7 @@ public class OrcWarlord extends Warlord {
}
@Override
public OrcWarlord copy() {
public OrcWarlord copy() throws CloneNotSupportedException {
return new OrcWarlord(this);
}

@ -110,6 +110,8 @@ public class App {
LOGGER.info("Executor was shut down and Exiting.");
executor.shutdownNow();
}
} catch (InterruptedException ie) {
LOGGER.error(ie.getMessage());
} catch (Exception e) {
LOGGER.error(e.getMessage());
}

@ -58,6 +58,8 @@ public class ServiceExecutor implements Runnable {
Thread.sleep(1000);
}
} catch (InterruptedException ie) {
LOGGER.error(ie.getMessage());
} catch (Exception e) {
LOGGER.error(e.getMessage());
}

@ -80,6 +80,8 @@ public class TaskGenerator implements Task, Runnable {
// Make the current thread to sleep after every Message submission.
Thread.sleep(1000);
}
} catch (InterruptedException ie) {
LOGGER.error(ie.getMessage());
} catch (Exception e) {
LOGGER.error(e.getMessage());
}

@ -42,7 +42,7 @@ public class MessageQueueTest {
msgQueue.submitMsg(new Message("MessageQueue Test"));
// retrieve message
assertEquals("MessageQueue Test", msgQueue.retrieveMsg().getMsg());
assertEquals(msgQueue.retrieveMsg().getMsg(), "MessageQueue Test");
}
}

@ -39,6 +39,6 @@ public class MessageTest {
// Parameterized constructor test.
String testMsg = "Message Test";
Message msg = new Message(testMsg);
assertEquals(testMsg, msg.getMsg());
assertEquals(msg.getMsg(), testMsg);
}
}

@ -22,6 +22,14 @@
*/
package com.iluwatar.repository;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
@ -30,13 +38,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.transaction.annotation.Transactional;
import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
* This case is Just for test the Annotation Based configuration
*
@ -69,7 +70,7 @@ public class AppConfigTest {
result = resultSet.getString(1);
}
assertEquals(expected, result);
assertTrue(result.equals(expected));
}
}

@ -31,7 +31,7 @@ import java.io.IOException;
*/
public class AppTest {
@Test
public void test() {
public void test() throws IOException {
String[] args = {};
App.main(args);
}

@ -109,7 +109,9 @@ public class RepositoryTest {
List<Person> persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40));
assertEquals(3, persons.size());
assertTrue(persons.stream().allMatch(item -> item.getAge() > 20 && item.getAge() < 40));
assertTrue(persons.stream().allMatch((item) -> {
return item.getAge() > 20 && item.getAge() < 40;
}));
}
@Test

@ -53,7 +53,7 @@ public class FindCustomerTest {
* @throws Exception the expected exception
*/
@Test
public void oneException() {
public void oneException() throws Exception {
assertThrows(BusinessException.class, () -> {
new FindCustomer("123", new BusinessException("test")).perform();
});

@ -40,7 +40,7 @@ public class RetryTest {
* Should contain all errors thrown.
*/
@Test
public void errors() {
public void errors() throws Exception {
final BusinessException e = new BusinessException("unhandled");
final Retry<String> retry = new Retry<>(
() -> { throw e; },

@ -31,7 +31,7 @@ import java.io.IOException;
*/
public class AppTest {
@Test
public void test() {
public void test() throws IOException {
String[] args = {};
App.main(args);
}

@ -37,16 +37,16 @@ public class FruitBowlTest {
public void fruitBowlTest() {
FruitBowl fbowl = new FruitBowl();
assertEquals(0, fbowl.countFruit());
assertEquals(fbowl.countFruit(), 0);
for (int i = 1; i <= 10; i++) {
fbowl.put(new Fruit(Fruit.FruitType.LEMON));
assertEquals(i, fbowl.countFruit());
assertEquals(fbowl.countFruit(), i);
}
for (int i = 9; i >= 0; i--) {
assertNotNull(fbowl.take());
assertEquals(i, fbowl.countFruit());
assertEquals(fbowl.countFruit(), i);
}
assertNull(fbowl.take());

@ -36,12 +36,12 @@ public class SemaphoreTest {
public void acquireReleaseTest() {
Semaphore sphore = new Semaphore(3);
assertEquals(3, sphore.getAvailableLicenses());
assertEquals(sphore.getAvailableLicenses(), 3);
for (int i = 2; i >= 0; i--) {
try {
sphore.acquire();
assertEquals(i, sphore.getAvailableLicenses());
assertEquals(sphore.getAvailableLicenses(), i);
} catch (InterruptedException e) {
fail(e.toString());
}
@ -49,10 +49,10 @@ public class SemaphoreTest {
for (int i = 1; i <= 3; i++) {
sphore.release();
assertEquals(i, sphore.getAvailableLicenses());
assertEquals(sphore.getAvailableLicenses(), i);
}
sphore.release();
assertEquals(3, sphore.getAvailableLicenses());
assertEquals(sphore.getAvailableLicenses(), 3);
}
}

@ -36,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class QueenTest {
@Test
public void testNotFlirtyUncomplemented() {
public void testNotFlirtyUncomplemented() throws Exception {
final Queen queen = new Queen();
queen.setFlirtiness(false);
queen.changeMood();
@ -44,7 +44,7 @@ public class QueenTest {
}
@Test
public void testNotFlirtyComplemented() {
public void testNotFlirtyComplemented() throws Exception {
final Queen queen = new Queen();
queen.setFlirtiness(false);
queen.receiveCompliments();
@ -53,14 +53,14 @@ public class QueenTest {
}
@Test
public void testFlirtyUncomplemented() {
public void testFlirtyUncomplemented() throws Exception {
final Queen queen = new Queen();
queen.changeMood();
assertFalse(queen.getMood());
}
@Test
public void testFlirtyComplemented() {
public void testFlirtyComplemented() throws Exception {
final Queen queen = new Queen();
queen.receiveCompliments();
queen.changeMood();

@ -41,7 +41,7 @@ import static org.mockito.Mockito.when;
public class ServantTest {
@Test
public void testFeed() {
public void testFeed() throws Exception {
final Royalty royalty = mock(Royalty.class);
final Servant servant = new Servant("test");
servant.feed(royalty);
@ -50,7 +50,7 @@ public class ServantTest {
}
@Test
public void testGiveWine() {
public void testGiveWine() throws Exception {
final Royalty royalty = mock(Royalty.class);
final Servant servant = new Servant("test");
servant.giveWine(royalty);
@ -59,7 +59,7 @@ public class ServantTest {
}
@Test
public void testGiveCompliments() {
public void testGiveCompliments() throws Exception {
final Royalty royalty = mock(Royalty.class);
final Servant servant = new Servant("test");
servant.giveCompliments(royalty);
@ -68,7 +68,7 @@ public class ServantTest {
}
@Test
public void testCheckIfYouWillBeHanged() {
public void testCheckIfYouWillBeHanged() throws Exception {
final Royalty goodMoodRoyalty = mock(Royalty.class);
when(goodMoodRoyalty.getMood()).thenReturn(true);

@ -33,7 +33,7 @@ import org.apache.log4j.Logger;
* find person from persons collection
* Created by dheeraj.mummar on 3/5/18.
*/
public class FindPersonApiHandler extends AbstractDynamoDbHandler<Person>
public class FindPersonApiHandler extends AbstractDynamoDbHandler
implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
private static final Logger LOG = Logger.getLogger(FindPersonApiHandler.class);

@ -35,7 +35,7 @@ import java.io.IOException;
* save person into persons collection
* Created by dheeraj.mummar on 3/4/18.
*/
public class SavePersonApiHandler extends AbstractDynamoDbHandler<Person>
public class SavePersonApiHandler extends AbstractDynamoDbHandler
implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
private static final Logger LOG = Logger.getLogger(SavePersonApiHandler.class);

50
service-layer/bin/pom.xml Normal file

@ -0,0 +1,50 @@
<?xml version="1.0"?>
<!--
The MIT License
Copyright (c) 2014-2016 Ilkka Seppälä
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>dao</artifactId>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

Some files were not shown because too many files have changed in this diff Show More