mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-05 15:59:50 +07:00
Added the notification for the third-party civilizations (#1558)
* Added the notification for the third-party civilizations If a civilizations knows about some two civilizations, it will be notified when: * They declare the war * They make a peace * They sign the declaration of peace * One denounce the other Additionally, when civ enters a new era, all civs that know about it get a notification * Fixed the translation `.properties` * Cleanup * Fix: 2 notifications for each peace treaty Russia and America... America and Russia... * Typo * Code style changes * Resolved conflicts * Simple getCommonKnownCivs() tests
This commit is contained in:
@ -0,0 +1,103 @@
|
||||
package com.unciv.logic.civilization.diplomacy
|
||||
|
||||
import com.unciv.logic.GameInfo
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.testing.GdxTestRunner
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.slot
|
||||
import org.junit.After
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@RunWith(GdxTestRunner::class)
|
||||
class DiplomacyManagerTests {
|
||||
|
||||
private val mockGameInfo = mockk<GameInfo>()
|
||||
private val slot = slot<String>()
|
||||
|
||||
private val testCivilizationNames = arrayListOf("Russia", "America", "Germany", "Greece", "Babylon")
|
||||
private val civilizations = testCivilizationNames.associateWith { CivilizationInfo(it) }
|
||||
|
||||
private fun meetByName(civilization: String, civilizationToMeet: String) {
|
||||
civilizations.getValue(civilization)
|
||||
.meetCivilization(civilizations.getValue(civilizationToMeet))
|
||||
}
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
// Setup the GameInfo mock
|
||||
|
||||
every { mockGameInfo.getCivilization(capture(slot)) } answers { civilizations.getValue(slot.captured) }
|
||||
// Just return the default CivilizationInfo, since the .meetCivilization() includes the tutorial logic and crashes otherwise
|
||||
every { mockGameInfo.getCurrentPlayerCivilization() } returns CivilizationInfo()
|
||||
|
||||
for (civ in civilizations.values) {
|
||||
civ.gameInfo = mockGameInfo
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
// Clear the diplomacy
|
||||
for (civ in civilizations.values) {
|
||||
civ.diplomacy.clear()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `getCommonKnownCivs does not include either DiplomacyManagers's civs`() {
|
||||
val russia = civilizations.getValue("Russia")
|
||||
val america = civilizations.getValue("America")
|
||||
meetByName("Russia", "America")
|
||||
|
||||
val commonKnownCivs = russia.getDiplomacyManager(america).getCommonKnownCivs()
|
||||
|
||||
Assert.assertTrue(russia !in commonKnownCivs)
|
||||
Assert.assertTrue(america !in commonKnownCivs)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `getCommonKnownCivs includes civs met by both civs`() {
|
||||
val russia = civilizations.getValue("Russia")
|
||||
val america = civilizations.getValue("America")
|
||||
meetByName("Russia", "America")
|
||||
meetByName("Russia", "Germany")
|
||||
meetByName("America", "Germany")
|
||||
|
||||
val commonKnownCivs = russia.getDiplomacyManager(america).getCommonKnownCivs()
|
||||
|
||||
Assert.assertTrue(civilizations.getValue("Germany") in commonKnownCivs)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `getCommonKnownCivs does not include civs met by only one civ`() {
|
||||
val russia = civilizations.getValue("Russia")
|
||||
val america = civilizations.getValue("America")
|
||||
meetByName("Russia", "America")
|
||||
meetByName("Russia", "Germany")
|
||||
|
||||
val commonKnownCivs = russia.getDiplomacyManager(america).getCommonKnownCivs()
|
||||
|
||||
Assert.assertTrue(civilizations.getValue("Germany") !in commonKnownCivs)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `getCommonKnownCivs is equal for mirrored DiplomacyManagers`() {
|
||||
val russia = civilizations.getValue("Russia")
|
||||
val america = civilizations.getValue("America")
|
||||
meetByName("Russia", "America")
|
||||
meetByName("Russia", "Germany")
|
||||
meetByName("America", "Germany")
|
||||
meetByName("Russia", "Greece")
|
||||
meetByName("America", "Greece")
|
||||
|
||||
Assert.assertEquals(
|
||||
america.getDiplomacyManager(russia).getCommonKnownCivs(),
|
||||
russia.getDiplomacyManager(america).getCommonKnownCivs()
|
||||
)
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user