1 package net.pterodactylus.rhynodge.triggers
3 import net.pterodactylus.rhynodge.states.ComicState
4 import net.pterodactylus.rhynodge.states.ComicState.Comic
5 import org.hamcrest.MatcherAssert.assertThat
6 import org.hamcrest.Matchers.contains
7 import org.hamcrest.Matchers.equalTo
10 class NewComicTriggerTest {
12 private val newComicTrigger = NewComicTrigger()
15 fun `comic trigger recognizes there are no new comic`() {
16 val oldComicState = ComicState(generateListOfComics())
17 val newComicState = ComicState(generateListOfComics())
18 newComicTrigger.mergeStates(oldComicState, newComicState)
19 assertThat(newComicTrigger.triggers(), equalTo(false))
23 fun `comic trigger recognizes new comics`() {
24 val oldComicState = ComicState(generateListOfComics())
25 val newComicState = ComicState(generateListOfComics().plusElement(Comic("new 1")))
26 newComicTrigger.mergeStates(oldComicState, newComicState)
27 assertThat(newComicTrigger.triggers(), equalTo(true))
31 fun `comic trigger does not reorder comics`() {
32 val oldComicState = ComicState(generateListOfComics())
33 val newComicState = ComicState(generateListOfComics().plusElement(Comic("new 1")))
34 val mergedComicState = newComicTrigger.mergeStates(oldComicState, newComicState) as ComicState
35 assertThat(mergedComicState.comics(), contains(*generateListOfComics().plusElement(Comic("new 1")).toTypedArray()))
40 private fun generateListOfComics(): List<Comic> = (1..40).map { Comic("comic $it") }