1 package net.pterodactylus.sone.freenet
4 import freenet.l10n.BaseL10n.LANGUAGE.*
5 import net.pterodactylus.sone.test.*
6 import org.hamcrest.MatcherAssert.*
7 import org.hamcrest.Matchers.*
9 import org.mockito.ArgumentMatchers.*
12 * Unit test for [L10nFilter].
14 class L10nFilterTest {
16 private val l10n = mock<BaseL10n>()
17 private val filter = L10nFilter(l10n)
18 private val translations = mutableMapOf<String, String>()
22 whenever(l10n.selectedLanguage).thenReturn(ENGLISH)
23 whenever(l10n.getString(anyString())).then { translations[it.arguments[0]] }
27 fun `translation without parameters returns translated string`() {
28 translations["data"] = "translated data"
29 assertThat(filter.format(null, "data", emptyMap()), equalTo("translated data"))
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"))
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"))
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"))
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}"))