🎨 Replace L10nFilter with Kotlin version
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / freenet / L10nFilterTest.kt
1 package net.pterodactylus.sone.freenet
2
3 import freenet.l10n.*
4 import freenet.l10n.BaseL10n.LANGUAGE.*
5 import net.pterodactylus.sone.test.*
6 import org.hamcrest.MatcherAssert.*
7 import org.hamcrest.Matchers.*
8 import org.junit.*
9 import org.mockito.ArgumentMatchers.*
10
11 /**
12  * Unit test for [L10nFilter].
13  */
14 class L10nFilterTest {
15
16         private val l10n = mock<BaseL10n>()
17         private val filter = L10nFilter(l10n)
18         private val translations = mutableMapOf<String, String>()
19
20         @Before
21         fun setupL10n() {
22                 whenever(l10n.selectedLanguage).thenReturn(ENGLISH)
23                 whenever(l10n.getString(anyString())).then { translations[it.arguments[0]] }
24         }
25
26         @Test
27         fun `translation without parameters returns translated string`() {
28                 translations["data"] = "translated data"
29                 assertThat(filter.format(null, "data", emptyMap()), equalTo("translated data"))
30         }
31
32         @Test
33         fun `translation with parameters returned translated string`() {
34                 translations["data"] = "translated {0,number} {1}"
35                 assertThat(filter.format(null, "data", mapOf("0" to 4.5, "1" to "data")), equalTo("translated 4.5 data"))
36         }
37
38         @Test
39         fun `filter processes l10n text without parameters correctly`() {
40                 translations["data"] = "translated data"
41                 assertThat(filter.format(null, L10nText("data"), emptyMap()), equalTo("translated data"))
42         }
43
44         @Test
45         fun `filter processes l10n text with parameters correctly`() {
46                 translations["data"] = "translated {0,number} {1}"
47                 assertThat(filter.format(null, L10nText("data", listOf(4.5, "data")), emptyMap()), equalTo("translated 4.5 data"))
48         }
49
50         @Test
51         fun `filter does not replace values if there are no parameters`() {
52                 translations["data"] = "{link}"
53                 assertThat(filter.format(null, "data", emptyMap()), equalTo("{link}"))
54         }
55
56 }