private void start() { Model model = buildWith(Model.builder()); new ModelRunner().run(model); } }
private void start() { Model model = buildWith(Model.builder()); new ModelRunner().run(model).reactTo(entersText()); } }
private void start() { Model model = buildWith(Model.builder()); ModelRunner modelRunner = new ModelRunner(); modelRunner.run(model); modelRunner.reactTo(entersText()); modelRunner.reactTo(entersText()); } }
private void start() { Model model = buildWith(Model.builder()); ModelRunner modelRunner = new ModelRunner().run(model); while (!systemStopped()) modelRunner.reactTo(entersText()); exitSystem(); } }
@Test public void testHelloWorld01() { HelloWorld01 example = new HelloWorld01(); model = example.buildWith(modelBuilder); modelRunner.run(model); assertRecordedStepNames("S1"); }
@Test public void modelRunnerIsRunningAfterRunCall() { Model model = modelBuilder.build(); modelRunner.run(model); assertTrue(modelRunner.isRunning()); }
private void start() { Model model = buildWith(Model.builder()); ModelRunner modelRunner = new ModelRunner(); modelRunner.as(anonymousUser()).run(model); while (!systemStopped()) modelRunner.reactTo(entersText()); exitSystem(); }
@Test public void rethrowsExceptionIfExceptionIsNotHandled() { thrown.expect(IllegalStateException.class); modelBuilder.useCase(USE_CASE).basicFlow().step(CUSTOMER_ENTERS_TEXT).system(() -> { throw new IllegalStateException(); }); Model model = modelBuilder.build(); modelRunner.run(model); }
@Test public void testHelloWorld03() { HelloWorld03 example = new HelloWorld03(); model = example.buildWith(modelBuilder); modelRunner.run(model).reactTo(new EntersText("John Q. Public")); assertRecordedStepNames("S1", "S2"); }
@Test public void testBasicFlow() { testRunner.run(model); testRunner.reactTo(new AsksForPoem(), new AsksForPoem(), new AsksForPoem()); assertRecordedStepNames("1", "2", "3"); }
private void start() { feelStuffUseCaseRealization = new FeelStuffUseCaseRealization(new WriterAdapter(), new RepositoryAdapter()); model = new HexagonModel(feelStuffUseCaseRealization).buildWith(Model.builder()); runner = new ModelRunner(); runner.run(model); runner.reactTo(new AsksForPoem(), new AsksForPoem(), new AsksForPoem()); } }
@Test public void testHelloWorld04() { HelloWorld04 example = new HelloWorld04(); model = example.buildWith(modelBuilder); modelRunner.run(model).reactTo(new EntersText("John"), new EntersText("39")); assertRecordedStepNames("S1", "S2", "S3", "S4", "S5"); }
@Test public void recordsEventWithUnhandledEventHandler() { Model model = modelBuilder.useCase(USE_CASE).on(EntersText.class).system(displaysEnteredText()).build(); modelRunner.handleUnhandledWith(this::eventRecordingEventHandler); modelRunner.run(model); modelRunner.reactTo(entersNumber()); Object event = optionalEvent.get(); assertTrue(event instanceof EntersNumber); }
@Test public void testHelloWorld05_WithCorrectNameAndAge() { HelloWorld05 example = new HelloWorld05(); model = example.buildWith(modelBuilder); modelRunner.run(model).reactTo(new EntersText("John"), new EntersText("39")); assertRecordedStepNames("S1", "S2", "S3", "S4", "S5", "S6"); }
@Test public void testHelloWorld05_WithNonNumericalAge() { HelloWorld05 example = new HelloWorld05(); model = example.buildWith(modelBuilder); modelRunner.run(model).reactTo(new EntersText("John"), new EntersText("NON-NUMERICAL-AGE")); assertRecordedStepNames("S1", "S2", "S3", "S4", "S5b_1", "S5b_2", "S3"); }
@Test public void testHelloWorld06_AsAnonymousUserHandleNonNumericalAge() { HelloWorld06 example = new HelloWorld06(); model = example.buildWith(modelBuilder); modelRunner.as(example.anonymousUser()).run(model).reactTo(new EntersText("NotANumber")); assertRecordedStepNames("S1a_1", "S3", "S4", "S5b_1", "S5b_2", "S3"); }
@Test public void printsTextAutonomously() { Model model = modelBuilder .useCase(USE_CASE) .basicFlow() .step(SYSTEM_DISPLAYS_TEXT).system(displaysConstantText()) .build(); modelRunner.run(model); assertRecordedStepNames(SYSTEM_DISPLAYS_TEXT); }
@Test public void twoFlowlessStepsDontReactWhenConditionIsFalseInFirstStepWithoutUseCase() { Model model = modelBuilder .condition(() -> false).on(EntersText.class).system(displaysEnteredText()) .on(EntersNumber.class).system(displaysEnteredNumber()) .build(); modelRunner.run(model); Optional<Step> latestStepRun = modelRunner.reactTo(entersNumber()); assertEquals(EntersNumber.class, latestStepRun.get().getEventClass()); latestStepRun = modelRunner.reactTo(entersText()); assertEquals(EntersNumber.class, latestStepRun.get().getEventClass()); }
@Test public void twoSequentialStepsReactToEventsOfDifferentType() { Model model = modelBuilder .useCase(USE_CASE) .basicFlow() .step(CUSTOMER_ENTERS_TEXT).user(EntersText.class).system(displaysEnteredText()) .step(CUSTOMER_ENTERS_NUMBER).user(EntersNumber.class).system(displaysEnteredNumber()) .build(); modelRunner.run(model); reactToAndAssertEvents(entersText(), entersNumber()); }
@Test public void onlyStepWithTrueConditionReacts() { Model model = modelBuilder .useCase(USE_CASE) .basicFlow() .step(CUSTOMER_ENTERS_TEXT).user(EntersText.class).system(displaysEnteredText()) .flow("Alternative Flow: Skipped").condition(() -> false) .step(THIS_STEP_SHOULD_BE_SKIPPED).user(EntersText.class).system(throwsRuntimeException()) .build(); modelRunner.run(model).reactTo(entersText(), entersText()); assertRecordedStepNames(CUSTOMER_ENTERS_TEXT); }