You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.3 KiB
115 lines
4.3 KiB
/* |
|
* Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. |
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
|
*/ |
|
|
|
package org.jetbrains.compose.resources |
|
|
|
import org.jetbrains.compose.resources.DensityQualifier.* |
|
import org.jetbrains.compose.resources.ThemeQualifier.DARK |
|
import org.jetbrains.compose.resources.ThemeQualifier.LIGHT |
|
import kotlin.test.* |
|
|
|
@OptIn(ExperimentalResourceApi::class, InternalResourceApi::class) |
|
class ResourceTest { |
|
@Test |
|
fun testResourceEquals() { |
|
assertEquals(DrawableResource("a"), DrawableResource("a")) |
|
} |
|
|
|
@Test |
|
fun testResourceNotEquals() { |
|
assertNotEquals(DrawableResource("a"), DrawableResource("b")) |
|
} |
|
|
|
@Test |
|
fun testGetPathByEnvironment() { |
|
val resource = DrawableResource( |
|
id = "ImageResource:test", |
|
items = setOf( |
|
ResourceItem(setOf(), "default", -1, -1), |
|
ResourceItem(setOf(LanguageQualifier("en")), "en", -1, -1), |
|
ResourceItem(setOf(LanguageQualifier("en"), RegionQualifier("US"), XHDPI), "en-rUS-xhdpi", -1, -1), |
|
ResourceItem(setOf(LanguageQualifier("de"), RegionQualifier("US")), "de-rUS", -1, -1), |
|
ResourceItem(setOf(LanguageQualifier("fr"), LIGHT), "fr-light", -1, -1), |
|
ResourceItem(setOf(DARK), "dark", -1, -1), |
|
) |
|
) |
|
fun env(lang: String, reg: String, theme: ThemeQualifier, density: DensityQualifier) = ResourceEnvironment( |
|
language = LanguageQualifier(lang), |
|
region = RegionQualifier(reg), |
|
theme = theme, |
|
density = density |
|
) |
|
assertEquals( |
|
"en-rUS-xhdpi", |
|
resource.getResourceItemByEnvironment(env("en", "US", DARK, XXHDPI)).path |
|
) |
|
assertEquals( |
|
"en", |
|
resource.getResourceItemByEnvironment(env("en", "IN", LIGHT, LDPI)).path |
|
) |
|
assertEquals( |
|
"de-rUS", |
|
resource.getResourceItemByEnvironment(env("de", "US", LIGHT, LDPI)).path |
|
) |
|
assertEquals( |
|
"default", |
|
resource.getResourceItemByEnvironment(env("de", "", LIGHT, LDPI)).path |
|
) |
|
assertEquals( |
|
"default", |
|
resource.getResourceItemByEnvironment(env("de", "IN", LIGHT, LDPI)).path |
|
) |
|
assertEquals( |
|
"default", |
|
resource.getResourceItemByEnvironment(env("ch", "", LIGHT, MDPI)).path |
|
) |
|
assertEquals( |
|
"dark", |
|
resource.getResourceItemByEnvironment(env("ch", "", DARK, MDPI)).path |
|
) |
|
assertEquals( |
|
"fr-light", |
|
resource.getResourceItemByEnvironment(env("fr", "", DARK, MDPI)).path |
|
) |
|
assertEquals( |
|
"fr-light", |
|
resource.getResourceItemByEnvironment(env("fr", "IN", LIGHT, MDPI)).path |
|
) |
|
assertEquals( |
|
"default", |
|
resource.getResourceItemByEnvironment(env("ru", "US", LIGHT, XHDPI)).path |
|
) |
|
assertEquals( |
|
"dark", |
|
resource.getResourceItemByEnvironment(env("ru", "US", DARK, XHDPI)).path |
|
) |
|
|
|
val resourceWithNoDefault = DrawableResource( |
|
id = "ImageResource:test2", |
|
items = setOf( |
|
ResourceItem(setOf(LanguageQualifier("en")), "en", -1, -1), |
|
ResourceItem(setOf(LanguageQualifier("fr"), LIGHT), "fr-light", -1, -1) |
|
) |
|
) |
|
assertFailsWith<IllegalStateException> { |
|
resourceWithNoDefault.getResourceItemByEnvironment(env("ru", "US", DARK, XHDPI)) |
|
}.message.let { msg -> |
|
assertEquals("Resource with ID='ImageResource:test2' not found", msg) |
|
} |
|
|
|
val resourceWithFewFiles = DrawableResource( |
|
id = "ImageResource:test3", |
|
items = setOf( |
|
ResourceItem(setOf(LanguageQualifier("en")), "en1", -1, -1), |
|
ResourceItem(setOf(LanguageQualifier("en")), "en2", -1, -1) |
|
) |
|
) |
|
assertFailsWith<IllegalStateException> { |
|
resourceWithFewFiles.getResourceItemByEnvironment(env("en", "US", DARK, XHDPI)) |
|
}.message.let { msg -> |
|
assertEquals("Resource with ID='ImageResource:test3' has more than one file: en1, en2", msg) |
|
} |
|
} |
|
}
|
|
|