Java 11 migraiton: model-view-controller

This commit is contained in:
Anurag Agarwal
2020-04-12 22:30:18 +00:00
parent a00622c656
commit edcb520d08
9 changed files with 51 additions and 46 deletions

View File

@ -47,9 +47,9 @@ public class App {
*/ */
public static void main(String[] args) { public static void main(String[] args) {
// create model, view and controller // create model, view and controller
GiantModel giant = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED); var giant = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED);
GiantView view = new GiantView(); var view = new GiantView();
GiantController controller = new GiantController(giant, view); var controller = new GiantController(giant, view);
// initial display // initial display
controller.updateView(); controller.updateView();
// controller receives some interactions that affect the giant // controller receives some interactions that affect the giant

View File

@ -30,7 +30,7 @@ public enum Fatigue {
ALERT("alert"), TIRED("tired"), SLEEPING("sleeping"); ALERT("alert"), TIRED("tired"), SLEEPING("sleeping");
private String title; private final String title;
Fatigue(String title) { Fatigue(String title) {
this.title = title; this.title = title;

View File

@ -28,14 +28,15 @@ package com.iluwatar.model.view.controller;
*/ */
public class GiantController { public class GiantController {
private GiantModel giant; private final GiantModel giant;
private GiantView view; private final GiantView view;
public GiantController(GiantModel giant, GiantView view) { public GiantController(GiantModel giant, GiantView view) {
this.giant = giant; this.giant = giant;
this.view = view; this.view = view;
} }
@SuppressWarnings("UnusedReturnValue")
public Health getHealth() { public Health getHealth() {
return giant.getHealth(); return giant.getHealth();
} }
@ -44,6 +45,7 @@ public class GiantController {
this.giant.setHealth(health); this.giant.setHealth(health);
} }
@SuppressWarnings("UnusedReturnValue")
public Fatigue getFatigue() { public Fatigue getFatigue() {
return giant.getFatigue(); return giant.getFatigue();
} }
@ -52,6 +54,7 @@ public class GiantController {
this.giant.setFatigue(fatigue); this.giant.setFatigue(fatigue);
} }
@SuppressWarnings("UnusedReturnValue")
public Nourishment getNourishment() { public Nourishment getNourishment() {
return giant.getNourishment(); return giant.getNourishment();
} }

View File

@ -30,7 +30,7 @@ public enum Health {
HEALTHY("healthy"), WOUNDED("wounded"), DEAD("dead"); HEALTHY("healthy"), WOUNDED("wounded"), DEAD("dead");
private String title; private final String title;
Health(String title) { Health(String title) {
this.title = title; this.title = title;

View File

@ -30,7 +30,7 @@ public enum Nourishment {
SATURATED("saturated"), HUNGRY("hungry"), STARVING("starving"); SATURATED("saturated"), HUNGRY("hungry"), STARVING("starving");
private String title; private final String title;
Nourishment(String title) { Nourishment(String title) {
this.title = title; this.title = title;

View File

@ -26,15 +26,12 @@ package com.iluwatar.model.view.controller;
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

@ -23,13 +23,13 @@
package com.iluwatar.model.view.controller; package com.iluwatar.model.view.controller;
import org.junit.jupiter.api.Test;
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 static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.verifyZeroInteractions;
import org.junit.jupiter.api.Test;
/** /**
* Date: 12/20/15 - 2:19 PM * Date: 12/20/15 - 2:19 PM
* *
@ -42,19 +42,20 @@ public class GiantControllerTest {
*/ */
@Test @Test
public void testSetHealth() { public void testSetHealth() {
final GiantModel model = mock(GiantModel.class); final var model = mock(GiantModel.class);
final GiantView view = mock(GiantView.class); final var view = mock(GiantView.class);
final GiantController controller = new GiantController(model, view); final var controller = new GiantController(model, view);
verifyZeroInteractions(model, view); verifyZeroInteractions(model, view);
for (final Health health : Health.values()) { for (final var health : Health.values()) {
controller.setHealth(health); controller.setHealth(health);
verify(model).setHealth(health); verify(model).setHealth(health);
verifyZeroInteractions(view); verifyZeroInteractions(view);
} }
controller.getHealth(); controller.getHealth();
//noinspection ResultOfMethodCallIgnored
verify(model).getHealth(); verify(model).getHealth();
verifyNoMoreInteractions(model, view); verifyNoMoreInteractions(model, view);
@ -65,19 +66,20 @@ public class GiantControllerTest {
*/ */
@Test @Test
public void testSetFatigue() { public void testSetFatigue() {
final GiantModel model = mock(GiantModel.class); final var model = mock(GiantModel.class);
final GiantView view = mock(GiantView.class); final var view = mock(GiantView.class);
final GiantController controller = new GiantController(model, view); final var controller = new GiantController(model, view);
verifyZeroInteractions(model, view); verifyZeroInteractions(model, view);
for (final Fatigue fatigue : Fatigue.values()) { for (final var fatigue : Fatigue.values()) {
controller.setFatigue(fatigue); controller.setFatigue(fatigue);
verify(model).setFatigue(fatigue); verify(model).setFatigue(fatigue);
verifyZeroInteractions(view); verifyZeroInteractions(view);
} }
controller.getFatigue(); controller.getFatigue();
//noinspection ResultOfMethodCallIgnored
verify(model).getFatigue(); verify(model).getFatigue();
verifyNoMoreInteractions(model, view); verifyNoMoreInteractions(model, view);
@ -88,19 +90,20 @@ public class GiantControllerTest {
*/ */
@Test @Test
public void testSetNourishment() { public void testSetNourishment() {
final GiantModel model = mock(GiantModel.class); final var model = mock(GiantModel.class);
final GiantView view = mock(GiantView.class); final var view = mock(GiantView.class);
final GiantController controller = new GiantController(model, view); final var controller = new GiantController(model, view);
verifyZeroInteractions(model, view); verifyZeroInteractions(model, view);
for (final Nourishment nourishment : Nourishment.values()) { for (final var nourishment : Nourishment.values()) {
controller.setNourishment(nourishment); controller.setNourishment(nourishment);
verify(model).setNourishment(nourishment); verify(model).setNourishment(nourishment);
verifyZeroInteractions(view); verifyZeroInteractions(view);
} }
controller.getNourishment(); controller.getNourishment();
//noinspection ResultOfMethodCallIgnored
verify(model).getNourishment(); verify(model).getNourishment();
verifyNoMoreInteractions(model, view); verifyNoMoreInteractions(model, view);
@ -108,9 +111,9 @@ public class GiantControllerTest {
@Test @Test
public void testUpdateView() { public void testUpdateView() {
final GiantModel model = mock(GiantModel.class); final var model = mock(GiantModel.class);
final GiantView view = mock(GiantView.class); final var view = mock(GiantView.class);
final GiantController controller = new GiantController(model, view); final var controller = new GiantController(model, view);
verifyZeroInteractions(model, view); verifyZeroInteractions(model, view);

View File

@ -23,10 +23,10 @@
package com.iluwatar.model.view.controller; package com.iluwatar.model.view.controller;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
/** /**
* Date: 12/20/15 - 2:10 PM * Date: 12/20/15 - 2:10 PM
* *
@ -39,12 +39,13 @@ public class GiantModelTest {
*/ */
@Test @Test
public void testSetHealth() { public void testSetHealth() {
final GiantModel model = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED); final var model = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.HUNGRY);
assertEquals(Health.HEALTHY, model.getHealth()); assertEquals(Health.HEALTHY, model.getHealth());
for (final Health health : Health.values()) { for (final var health : Health.values()) {
model.setHealth(health); model.setHealth(health);
assertEquals(health, model.getHealth()); assertEquals(health, model.getHealth());
assertEquals("The giant looks " + health.toString() + ", alert and saturated.", model.toString()); assertEquals("The giant looks " + health.toString() + ", alert and saturated.", model
.toString());
} }
} }
@ -53,12 +54,13 @@ public class GiantModelTest {
*/ */
@Test @Test
public void testSetFatigue() { public void testSetFatigue() {
final GiantModel model = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED); final var model = new GiantModel(Health.WOUNDED, Fatigue.ALERT, Nourishment.SATURATED);
assertEquals(Fatigue.ALERT, model.getFatigue()); assertEquals(Fatigue.ALERT, model.getFatigue());
for (final Fatigue fatigue : Fatigue.values()) { for (final var fatigue : Fatigue.values()) {
model.setFatigue(fatigue); model.setFatigue(fatigue);
assertEquals(fatigue, model.getFatigue()); assertEquals(fatigue, model.getFatigue());
assertEquals("The giant looks healthy, " + fatigue.toString() + " and saturated.", model.toString()); assertEquals("The giant looks healthy, " + fatigue.toString() + " and saturated.", model
.toString());
} }
} }
@ -67,12 +69,13 @@ public class GiantModelTest {
*/ */
@Test @Test
public void testSetNourishment() { public void testSetNourishment() {
final GiantModel model = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED); final var model = new GiantModel(Health.HEALTHY, Fatigue.TIRED, Nourishment.SATURATED);
assertEquals(Nourishment.SATURATED, model.getNourishment()); assertEquals(Nourishment.SATURATED, model.getNourishment());
for (final Nourishment nourishment : Nourishment.values()) { for (final var nourishment : Nourishment.values()) {
model.setNourishment(nourishment); model.setNourishment(nourishment);
assertEquals(nourishment, model.getNourishment()); assertEquals(nourishment, model.getNourishment());
assertEquals("The giant looks healthy, alert and " + nourishment.toString() + ".", model.toString()); assertEquals("The giant looks healthy, alert and " + nourishment.toString() + ".", model
.toString());
} }
} }

View File

@ -31,7 +31,6 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.AppenderBase;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -62,9 +61,9 @@ public class GiantViewTest {
*/ */
@Test @Test
public void testDisplayGiant() { public void testDisplayGiant() {
final GiantView view = new GiantView(); final var view = new GiantView();
final GiantModel model = mock(GiantModel.class); final var model = mock(GiantModel.class);
view.displayGiant(model); view.displayGiant(model);
assertEquals(model.toString(), appender.getLastMessage()); assertEquals(model.toString(), appender.getLastMessage());
@ -74,10 +73,10 @@ public class GiantViewTest {
/** /**
* Logging Appender Implementation * Logging Appender Implementation
*/ */
public class InMemoryAppender extends AppenderBase<ILoggingEvent> { public 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();
} }