Skip to content

Commit 6ba99bb

Browse files
anarchuserxeruf
authored andcommitted
test(sdk): add GameResult XML tests (#263)
Also does a small refactor to PlayerScoreTest
1 parent 9c37813 commit 6ba99bb

File tree

2 files changed

+111
-9
lines changed

2 files changed

+111
-9
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package sc.shared
2+
3+
import com.thoughtworks.xstream.XStream
4+
import io.kotlintest.shouldBe
5+
import io.kotlintest.specs.StringSpec
6+
import sc.framework.plugins.Player
7+
8+
class GameResultTest: StringSpec({
9+
"convert XML" {
10+
val xstream = XStream().apply {
11+
setMode(XStream.NO_REFERENCES)
12+
}
13+
val definition = ScoreDefinition().apply { add("winner") }
14+
val scores: List<PlayerScore> = listOf(
15+
PlayerScore(ScoreCause.REGULAR, "test", 1),
16+
PlayerScore(ScoreCause.LEFT, "second test", 0)
17+
)
18+
val winners: List<Player>? = listOf(Player(PlayerColor.BLUE, "bluez"))
19+
20+
val gameResultWithWinner = Pair(
21+
GameResult(definition, scores, winners), """
22+
<sc.shared.GameResult>
23+
<definition>
24+
<fragments>
25+
<sc.shared.ScoreFragment>
26+
<name>winner</name>
27+
<aggregation>SUM</aggregation>
28+
<relevantForRanking>true</relevantForRanking>
29+
</sc.shared.ScoreFragment>
30+
</fragments>
31+
</definition>
32+
<scores class="java.util.Arrays${'$'}ArrayList">
33+
<a class="sc.shared.PlayerScore-array">
34+
<sc.shared.PlayerScore>
35+
<cause>REGULAR</cause>
36+
<reason>test</reason>
37+
<parts>
38+
<big-decimal>1</big-decimal>
39+
</parts>
40+
</sc.shared.PlayerScore>
41+
<sc.shared.PlayerScore>
42+
<cause>LEFT</cause>
43+
<reason>second test</reason>
44+
<parts>
45+
<big-decimal>0</big-decimal>
46+
</parts>
47+
</sc.shared.PlayerScore>
48+
</a>
49+
</scores>
50+
<winners class="singleton-list">
51+
<sc.framework.plugins.Player>
52+
<listeners/>
53+
<isCanTimeout>false</isCanTimeout>
54+
<isShouldBePaused>false</isShouldBePaused>
55+
<violated>false</violated>
56+
<left>false</left>
57+
<softTimeout>false</softTimeout>
58+
<hardTimeout>false</hardTimeout>
59+
<color>BLUE</color>
60+
<displayName>bluez</displayName>
61+
</sc.framework.plugins.Player>
62+
</winners>
63+
</sc.shared.GameResult>""".trimIndent()
64+
)
65+
val gameResultWithoutWinner = Pair(
66+
GameResult(definition, scores, emptyList()), """
67+
<sc.shared.GameResult>
68+
<definition>
69+
<fragments>
70+
<sc.shared.ScoreFragment>
71+
<name>winner</name>
72+
<aggregation>SUM</aggregation>
73+
<relevantForRanking>true</relevantForRanking>
74+
</sc.shared.ScoreFragment>
75+
</fragments>
76+
</definition>
77+
<scores class="java.util.Arrays${'$'}ArrayList">
78+
<a class="sc.shared.PlayerScore-array">
79+
<sc.shared.PlayerScore>
80+
<cause>REGULAR</cause>
81+
<reason>test</reason>
82+
<parts>
83+
<big-decimal>1</big-decimal>
84+
</parts>
85+
</sc.shared.PlayerScore>
86+
<sc.shared.PlayerScore>
87+
<cause>LEFT</cause>
88+
<reason>second test</reason>
89+
<parts>
90+
<big-decimal>0</big-decimal>
91+
</parts>
92+
</sc.shared.PlayerScore>
93+
</a>
94+
</scores>
95+
<winners class="kotlin.collections.EmptyList"/>
96+
</sc.shared.GameResult>""".trimIndent()
97+
)
98+
99+
val gameResults = listOf(gameResultWithWinner, gameResultWithoutWinner)
100+
gameResults.forEach {
101+
xstream.toXML(it.first) shouldBe it.second
102+
xstream.fromXML(it.second) shouldBe it.first
103+
}
104+
}
105+
})

socha-sdk/src/test/sc/shared/PlayerScoreTest.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package sc.shared
22

3-
43
import com.thoughtworks.xstream.XStream
54
import io.kotlintest.shouldBe
65
import io.kotlintest.shouldNotBe
@@ -20,11 +19,10 @@ class PlayerScoreTest: StringSpec({
2019
}
2120
"convert XML" {
2221
val playerScore = PlayerScore(ScoreCause.REGULAR, "Reason", 0, 1, 2)
23-
var xstream = XStream()
24-
xstream.setMode(XStream.NO_REFERENCES)
25-
xstream.classLoader = PlayerScore::class.java.classLoader
26-
val ISplayerScoreXML = xstream.toXML(playerScore)
27-
val SHOULDplayerScoreXML = """
22+
val xstream = XStream().apply {
23+
setMode(XStream.NO_REFERENCES)
24+
}
25+
val playerScoreXML = """
2826
<sc.shared.PlayerScore>
2927
<cause>REGULAR</cause>
3028
<reason>Reason</reason>
@@ -34,8 +32,7 @@ class PlayerScoreTest: StringSpec({
3432
<big-decimal>2</big-decimal>
3533
</parts>
3634
</sc.shared.PlayerScore>""".trimIndent()
37-
playerScore shouldBe xstream.fromXML(SHOULDplayerScoreXML)
38-
playerScore shouldBe xstream.fromXML(ISplayerScoreXML)
39-
ISplayerScoreXML shouldBe SHOULDplayerScoreXML
35+
xstream.fromXML(playerScoreXML) shouldBe playerScore
36+
xstream.toXML(playerScore) shouldBe playerScoreXML
4037
}
4138
})

0 commit comments

Comments
 (0)