11package com.tinder
22
3+ import com.google.common.truth.Truth.assertThat
34import com.nhaarman.mockitokotlin2.mock
45import com.nhaarman.mockitokotlin2.then
5- import org.assertj.core.api.Assertions.assertThat
6- import org.assertj.core.api.Assertions.assertThatIllegalArgumentException
7- import org.assertj.core.api.Assertions.assertThatIllegalStateException
6+ import org.junit.Assert.assertThrows
87import org.junit.Test
98import org.junit.experimental.runners.Enclosed
109import org.junit.runner.RunWith
10+ import java.lang.IllegalArgumentException
11+ import java.lang.IllegalStateException
1112
1213@RunWith(Enclosed ::class )
1314internal class StateMachineTest {
@@ -42,6 +43,7 @@ internal class StateMachineTest {
4243 SideEffect .LogFrozen -> logger.log(ON_FROZEN_MESSAGE )
4344 SideEffect .LogVaporized -> logger.log(ON_VAPORIZED_MESSAGE )
4445 SideEffect .LogCondensed -> logger.log(ON_CONDENSED_MESSAGE )
46+ null -> Unit
4547 }
4648 }
4749 }
@@ -127,23 +129,23 @@ internal class StateMachineTest {
127129 const val ON_CONDENSED_MESSAGE = " I condensed"
128130
129131 sealed class State {
130- object Solid : State()
131- object Liquid : State()
132- object Gas : State()
132+ data object Solid : State ()
133+ data object Liquid : State ()
134+ data object Gas : State ()
133135 }
134136
135137 sealed class Event {
136- object OnMelted : Event()
137- object OnFrozen : Event()
138- object OnVaporized : Event()
139- object OnCondensed : Event()
138+ data object OnMelted : Event ()
139+ data object OnFrozen : Event ()
140+ data object OnVaporized : Event ()
141+ data object OnCondensed : Event ()
140142 }
141143
142144 sealed class SideEffect {
143- object LogMelted : SideEffect()
144- object LogFrozen : SideEffect()
145- object LogVaporized : SideEffect()
146- object LogCondensed : SideEffect()
145+ data object LogMelted : SideEffect ()
146+ data object LogFrozen : SideEffect ()
147+ data object LogVaporized : SideEffect ()
148+ data object LogCondensed : SideEffect ()
147149 }
148150
149151 interface Logger {
@@ -336,22 +338,22 @@ internal class StateMachineTest {
336338
337339 sealed class State {
338340 data class Locked (val credit : Int ) : State()
339- object Unlocked : State()
341+ data object Unlocked : State ()
340342 data class Broken (val oldState : State ) : State()
341343 }
342344
343345 sealed class Event {
344346 data class InsertCoin (val value : Int ) : Event()
345- object AdmitPerson : Event()
346- object MachineDidFail : Event()
347- object MachineRepairDidComplete : Event()
347+ data object AdmitPerson : Event ()
348+ data object MachineDidFail : Event ()
349+ data object MachineRepairDidComplete : Event ()
348350 }
349351
350352 sealed class Command {
351- object SoundAlarm : Command()
352- object CloseDoors : Command()
353- object OpenDoors : Command()
354- object OrderRepair : Command()
353+ data object SoundAlarm : Command ()
354+ data object CloseDoors : Command ()
355+ data object OpenDoors : Command ()
356+ data object OrderRepair : Command ()
355357 }
356358 }
357359 }
@@ -502,10 +504,9 @@ internal class StateMachineTest {
502504 @Test
503505 fun transition_givenUndeclaredState_shouldThrowIllegalStateException () {
504506 // Then
505- assertThatIllegalStateException()
506- .isThrownBy {
507- stateMachine.transition(Event .E4 )
508- }
507+ assertThrows(IllegalStateException ::class .java) {
508+ stateMachine.transition(Event .E4 )
509+ }
509510 }
510511 }
511512
@@ -514,31 +515,29 @@ internal class StateMachineTest {
514515 @Test
515516 fun create_givenNoInitialState_shouldThrowIllegalArgumentException () {
516517 // Then
517- assertThatIllegalArgumentException().isThrownBy {
518+ assertThrows( IllegalArgumentException :: class .java) {
518519 StateMachine .create<State , Event , SideEffect > {}
519520 }
520521 }
521522 }
522523
523524 private companion object {
524525 private sealed class State {
525- object A : State()
526- object B : State()
527- object C : State()
528- object D : State()
526+ data object A : State ()
527+ data object B : State ()
528+ data object C : State ()
529+ data object D : State ()
529530 }
530531
531532 private sealed class Event {
532- object E1 : Event()
533- object E2 : Event()
534- object E3 : Event()
535- object E4 : Event()
533+ data object E1 : Event ()
534+ data object E2 : Event ()
535+ data object E3 : Event ()
536+ data object E4 : Event ()
536537 }
537538
538539 private sealed class SideEffect {
539- object SE1 : SideEffect()
540- object SE2 : SideEffect()
541- object SE3 : SideEffect()
540+ data object SE1 : SideEffect ()
542541 }
543542 }
544543 }
@@ -569,12 +568,12 @@ internal class StateMachineTest {
569568 transitionTo(STATE_D )
570569 }
571570 }
572- state(STATE_B ) {
573- on(EVENT_3 ) {
571+ state< String > (STATE_B ) {
572+ on< Int > (EVENT_3 ) {
574573 transitionTo(STATE_C , SIDE_EFFECT_1 )
575574 }
576575 }
577- state(STATE_C ) {
576+ state< String > (STATE_C ) {
578577 onEnter(onStateCEnterListener1)
579578 onEnter(onStateCEnterListener2)
580579 }
@@ -680,10 +679,9 @@ internal class StateMachineTest {
680679 @Test
681680 fun transition_givenUndeclaredState_shouldThrowIllegalStateException () {
682681 // Then
683- assertThatIllegalStateException()
684- .isThrownBy {
685- stateMachine.transition(EVENT_4 )
686- }
682+ assertThrows(IllegalStateException ::class .java) {
683+ stateMachine.transition(EVENT_4 )
684+ }
687685 }
688686 }
689687
@@ -692,7 +690,7 @@ internal class StateMachineTest {
692690 @Test
693691 fun create_givenNoInitialState_shouldThrowIllegalArgumentException () {
694692 // Then
695- assertThatIllegalArgumentException().isThrownBy {
693+ assertThrows( IllegalArgumentException :: class .java) {
696694 StateMachine .create<String , Int , String > {}
697695 }
698696 }
@@ -713,9 +711,12 @@ internal class StateMachineTest {
713711 @Test
714712 fun transition_givenMissingDestinationStateDefinition_shouldThrowIllegalStateExceptionWithStateName () {
715713 // Then
716- assertThatIllegalStateException()
717- .isThrownBy { stateMachine.transition(EVENT_1 ) }
718- .withMessage(" Missing definition for state ${STATE_B .javaClass.simpleName} !" )
714+ val exception = assertThrows(IllegalStateException ::class .java) {
715+ stateMachine.transition(EVENT_1 )
716+ }
717+ assertThat(exception.message).isEqualTo(
718+ " Missing definition for state ${STATE_B .javaClass.simpleName} !"
719+ )
719720 }
720721 }
721722
0 commit comments