Java 11 migraiton: mediator pattern

This commit is contained in:
Anurag Agarwal 2020-04-12 22:19:11 +00:00
parent 59e050b20b
commit 93e5570778
No known key found for this signature in database
GPG Key ID: CF5E14552DA23F13
6 changed files with 42 additions and 46 deletions

View File

@ -34,8 +34,8 @@ public enum Action {
ENEMY("spotted enemies", "runs for cover"), ENEMY("spotted enemies", "runs for cover"),
NONE("", ""); NONE("", "");
private String title; private final String title;
private String description; private final String description;
Action(String title, String description) { Action(String title, String description) {
this.title = title; this.title = title;

View File

@ -55,10 +55,10 @@ public class App {
// create party and members // create party and members
Party party = new PartyImpl(); Party party = new PartyImpl();
Hobbit hobbit = new Hobbit(); var hobbit = new Hobbit();
Wizard wizard = new Wizard(); var wizard = new Wizard();
Rogue rogue = new Rogue(); var rogue = new Rogue();
Hunter hunter = new Hunter(); var hunter = new Hunter();
// add party members // add party members
party.addMember(hobbit); party.addMember(hobbit);

View File

@ -39,7 +39,7 @@ public class PartyImpl implements Party {
@Override @Override
public void act(PartyMember actor, Action action) { public void act(PartyMember actor, Action action) {
for (PartyMember member : members) { for (var member : members) {
if (!member.equals(actor)) { if (!member.equals(actor)) {
member.partyAction(action); member.partyAction(action);
} }

View File

@ -26,15 +26,12 @@ package com.iluwatar.mediator;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
/** /**
*
* Application test * Application test
*
*/ */
public class AppTest { public class AppTest {
@Test @Test
public void test() { public void test() {
String[] args = {}; App.main(new String[]{});
App.main(args);
} }
} }

View File

@ -43,10 +43,10 @@ public class PartyImplTest {
*/ */
@Test @Test
public void testPartyAction() { public void testPartyAction() {
final PartyMember partyMember1 = mock(PartyMember.class); final var partyMember1 = mock(PartyMember.class);
final PartyMember partyMember2 = mock(PartyMember.class); final var partyMember2 = mock(PartyMember.class);
final PartyImpl party = new PartyImpl(); final var party = new PartyImpl();
party.addMember(partyMember1); party.addMember(partyMember1);
party.addMember(partyMember2); party.addMember(partyMember2);
@ -58,7 +58,6 @@ public class PartyImplTest {
verify(partyMember2).partyAction(Action.GOLD); verify(partyMember2).partyAction(Action.GOLD);
verifyNoMoreInteractions(partyMember1, partyMember2); verifyNoMoreInteractions(partyMember1, partyMember2);
} }
} }

View File

@ -23,24 +23,24 @@
package com.iluwatar.mediator; package com.iluwatar.mediator;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.slf4j.LoggerFactory;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Supplier;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Stream;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.slf4j.LoggerFactory;
/** /**
* Date: 12/19/15 - 10:13 PM * Date: 12/19/15 - 10:13 PM
* *
@ -48,12 +48,12 @@ import static org.mockito.Mockito.verify;
*/ */
public class PartyMemberTest { public class PartyMemberTest {
static Collection<Supplier<PartyMember>[]> dataProvider() { static Stream<Arguments> dataProvider() {
return List.of( return Stream.of(
new Supplier[]{Hobbit::new}, Arguments.of((Supplier<PartyMember>) Hobbit::new),
new Supplier[]{Hunter::new}, Arguments.of((Supplier<PartyMember>) Hunter::new),
new Supplier[]{Rogue::new}, Arguments.of((Supplier<PartyMember>) Rogue::new),
new Supplier[]{Wizard::new} Arguments.of((Supplier<PartyMember>) Wizard::new)
); );
} }
@ -75,9 +75,9 @@ public class PartyMemberTest {
@ParameterizedTest @ParameterizedTest
@MethodSource("dataProvider") @MethodSource("dataProvider")
public void testPartyAction(Supplier<PartyMember> memberSupplier) { public void testPartyAction(Supplier<PartyMember> memberSupplier) {
final PartyMember member = memberSupplier.get(); final var member = memberSupplier.get();
for (final Action action : Action.values()) { for (final var action : Action.values()) {
member.partyAction(action); member.partyAction(action);
assertEquals(member.toString() + " " + action.getDescription(), appender.getLastMessage()); assertEquals(member.toString() + " " + action.getDescription(), appender.getLastMessage());
} }
@ -91,16 +91,16 @@ public class PartyMemberTest {
@ParameterizedTest @ParameterizedTest
@MethodSource("dataProvider") @MethodSource("dataProvider")
public void testAct(Supplier<PartyMember> memberSupplier) { public void testAct(Supplier<PartyMember> memberSupplier) {
final PartyMember member = memberSupplier.get(); final var member = memberSupplier.get();
member.act(Action.GOLD); member.act(Action.GOLD);
assertEquals(0, appender.getLogSize()); assertEquals(0, appender.getLogSize());
final Party party = mock(Party.class); final var party = mock(Party.class);
member.joinedParty(party); member.joinedParty(party);
assertEquals(member.toString() + " joins the party", appender.getLastMessage()); assertEquals(member.toString() + " joins the party", appender.getLastMessage());
for (final Action action : Action.values()) { for (final var action : Action.values()) {
member.act(action); member.act(action);
assertEquals(member.toString() + " " + action.toString(), appender.getLastMessage()); assertEquals(member.toString() + " " + action.toString(), appender.getLastMessage());
verify(party).act(member, action); verify(party).act(member, action);
@ -114,16 +114,16 @@ public class PartyMemberTest {
*/ */
@ParameterizedTest @ParameterizedTest
@MethodSource("dataProvider") @MethodSource("dataProvider")
public void testToString(Supplier<PartyMember> memberSupplier) throws Exception { public void testToString(Supplier<PartyMember> memberSupplier) {
final PartyMember member = memberSupplier.get(); final var member = memberSupplier.get();
final Class<? extends PartyMember> memberClass = member.getClass(); final var memberClass = member.getClass();
assertEquals(memberClass.getSimpleName(), member.toString()); assertEquals(memberClass.getSimpleName(), member.toString());
} }
private class InMemoryAppender extends AppenderBase<ILoggingEvent> { private static class InMemoryAppender extends AppenderBase<ILoggingEvent> {
private List<ILoggingEvent> log = new LinkedList<>(); private final List<ILoggingEvent> log = new LinkedList<>();
public InMemoryAppender(Class clazz) { public InMemoryAppender(Class<?> clazz) {
((Logger) LoggerFactory.getLogger(clazz)).addAppender(this); ((Logger) LoggerFactory.getLogger(clazz)).addAppender(this);
start(); start();
} }