🔀 Merge “release/v81” into “master”
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / freenet / L10nFilterTest.kt
1 package net.pterodactylus.sone.freenet
2
3 import org.hamcrest.MatcherAssert.*
4 import org.hamcrest.Matchers.*
5 import org.junit.*
6 import java.util.*
7 import kotlin.collections.*
8
9 /**
10  * Unit test for [L10nFilter].
11  */
12 class L10nFilterTest {
13
14         private val translations = mutableMapOf<String, String>()
15         private val translation = object : Translation {
16                 override val currentLocale = Locale.ENGLISH
17                 override fun translate(key: String): String = translations[key] ?: ""
18         }
19         private val filter = L10nFilter(translation)
20
21         @Test
22         fun `translation without parameters returns translated string`() {
23                 translations["data"] = "translated data"
24                 assertThat(filter.format(null, "data", emptyMap()), equalTo("translated data"))
25         }
26
27         @Test
28         fun `translation with parameters returned translated string`() {
29                 translations["data"] = "translated {0,number} {1}"
30                 assertThat(filter.format(null, "data", mapOf("0" to 4.5, "1" to "data")), equalTo("translated 4.5 data"))
31         }
32
33         @Test
34         fun `filter processes l10n text without parameters correctly`() {
35                 translations["data"] = "translated data"
36                 assertThat(filter.format(null, L10nText("data"), emptyMap()), equalTo("translated data"))
37         }
38
39         @Test
40         fun `filter processes l10n text with parameters correctly`() {
41                 translations["data"] = "translated {0,number} {1}"
42                 assertThat(filter.format(null, L10nText("data", listOf(4.5, "data")), emptyMap()), equalTo("translated 4.5 data"))
43         }
44
45         @Test
46         fun `filter does not replace values if there are no parameters`() {
47                 translations["data"] = "{link}"
48                 assertThat(filter.format(null, "data", emptyMap()), equalTo("{link}"))
49         }
50
51 }