1 package net.pterodactylus.sone.freenet
3 import freenet.l10n.BaseL10n
4 import freenet.l10n.BaseL10n.LANGUAGE.ENGLISH
5 import net.pterodactylus.sone.test.mock
6 import net.pterodactylus.sone.test.whenever
7 import net.pterodactylus.sone.web.WebInterface
8 import net.pterodactylus.util.template.TemplateContext
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.equalTo
11 import org.junit.Before
13 import org.mockito.ArgumentMatchers.anyString
16 * Unit test for [L10nFilter].
18 class L10nFilterTest {
20 private val webInterface = mock<WebInterface>()
21 private val filter = L10nFilter(webInterface)
22 private val templateContext = mock<TemplateContext>()
23 private val l10n = mock<BaseL10n>()
24 private val translations = mutableMapOf<String, String>()
27 fun setupWebInterface() {
28 whenever(webInterface.l10n).thenReturn(l10n)
33 whenever(l10n.selectedLanguage).thenReturn(ENGLISH)
34 whenever(l10n.getString(anyString())).then { translations[it.arguments[0]] }
38 fun `translation without parameters returns translated string`() {
39 translations["data"] = "translated data"
40 assertThat(filter.format(templateContext, "data", emptyMap()), equalTo("translated data"))
44 fun `translation with parameters returned translated string`() {
45 translations["data"] = "translated {0,number} {1}"
46 assertThat(filter.format(templateContext, "data", mapOf("0" to 4.5, "1" to "data")), equalTo("translated 4.5 data"))
50 fun `filter processes l10n text without parameters correctly`() {
51 translations["data"] = "translated data"
52 assertThat(filter.format(templateContext, L10nText("data"), emptyMap()), equalTo("translated data"))
56 fun `filter processes l10n text with parameters correctly`() {
57 translations["data"] = "translated {0,number} {1}"
58 assertThat(filter.format(templateContext, L10nText("data", listOf(4.5, "data")), emptyMap()), equalTo("translated 4.5 data"))
62 fun `filter does not replace values if there are no parameters`() {
63 translations["data"] = "{link}"
64 assertThat(filter.format(templateContext, "data", emptyMap()), equalTo("{link}"));