From aae145b82a9d332a07f3b5a2e7bb02e819bd3c63 Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 28 Oct 2026 13:18:37 +0100 Subject: [PATCH] Prepare isolated host tests for application language behavior --- .../language-tests/build.gradle.kts | 20 +++++++++++++++++++ .../androidx/core/os/LocaleListCompat.kt | 7 +++++++ .../kotlin/org/xmlpull/v1/XmlPullParser.kt | 4 ++++ 3 files changed, 31 insertions(+) create mode 100644 tools/chatgui-android/language-tests/build.gradle.kts create mode 100644 tools/chatgui-android/language-tests/src/main/kotlin/androidx/core/os/LocaleListCompat.kt create mode 100644 tools/chatgui-android/language-tests/src/main/kotlin/org/xmlpull/v1/XmlPullParser.kt diff --git a/tools/chatgui-android/language-tests/build.gradle.kts b/tools/chatgui-android/language-tests/build.gradle.kts new file mode 100644 index 00000000..76ff2a90 --- /dev/null +++ b/tools/chatgui-android/language-tests/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { id("org.jetbrains.kotlin.jvm") } + +kotlin { + jvmToolchain(17) + sourceSets.named("main") { + // Настоящий AppLanguage; Android/AppCompat и владельцы уведомлений моделируются только в этом JVM-модуле. + kotlin.srcDir("../app/src/main/java") + kotlin.include("android/**", "androidx/**", "org/xmlpull/**", "com/utun/chat/LanguageHostApp.kt", + "com/utun/chat/data/LanguageHostEnvironment.kt", "com/utun/chat/headless/HeadlessService.kt", + "com/utun/chat/data/AppLanguage.kt") + } +} + +dependencies { testImplementation("junit:junit:4.13.2") } +tasks.test { + val config = rootProject.file("app/src/main/res/xml/locales_config.xml") + inputs.file(config) + systemProperty("utun.localesConfig", config.absolutePath) + testLogging { showStandardStreams = true } +} diff --git a/tools/chatgui-android/language-tests/src/main/kotlin/androidx/core/os/LocaleListCompat.kt b/tools/chatgui-android/language-tests/src/main/kotlin/androidx/core/os/LocaleListCompat.kt new file mode 100644 index 00000000..a5382eec --- /dev/null +++ b/tools/chatgui-android/language-tests/src/main/kotlin/androidx/core/os/LocaleListCompat.kt @@ -0,0 +1,7 @@ +package androidx.core.os + +/** Host-список запрошенных/effective языков; хранение списка и применение конфигурации в тесте разделены. */ +class LocaleListCompat private constructor(private val tags: String) { + fun toLanguageTags() = tags + companion object { fun forLanguageTags(tags: String) = LocaleListCompat(tags) } +} diff --git a/tools/chatgui-android/language-tests/src/main/kotlin/org/xmlpull/v1/XmlPullParser.kt b/tools/chatgui-android/language-tests/src/main/kotlin/org/xmlpull/v1/XmlPullParser.kt new file mode 100644 index 00000000..d506e92a --- /dev/null +++ b/tools/chatgui-android/language-tests/src/main/kotlin/org/xmlpull/v1/XmlPullParser.kt @@ -0,0 +1,4 @@ +package org.xmlpull.v1 + +/** Константы XmlPullParser; XML читает JDK-парсер host resources, не копия списка поддержанных языков. */ +object XmlPullParser { const val END_DOCUMENT = 1; const val START_TAG = 2 }