diff --git a/tools/chatgui-android/router-tests/src/main/kotlin/android/content/Context.kt b/tools/chatgui-android/router-tests/src/main/kotlin/android/content/Context.kt index aa113605..9e07769c 100644 --- a/tools/chatgui-android/router-tests/src/main/kotlin/android/content/Context.kt +++ b/tools/chatgui-android/router-tests/src/main/kotlin/android/content/Context.kt @@ -9,6 +9,7 @@ import android.hardware.SensorManager import android.telephony.SubscriptionManager import android.telephony.TelephonyManager import com.utun.chat.data.HostConfigProvider +import java.io.File /** Только host-тест: управляемые Android managers, без устройств/разрешений ОС. */ class Context { @@ -17,6 +18,8 @@ class Context { const val POWER_SERVICE = "power" } val packageName = "com.utun.chat" + var cacheDir = File(System.getProperty("java.io.tmpdir"), "utun-router-host-cache") + val contentResolver = ContentResolver() var vibrator: Vibrator? = Vibrator() var powerManager: PowerManager? = PowerManager() var notificationManager: NotificationManager? = NotificationManager() diff --git a/tools/chatgui-android/router-tests/src/main/kotlin/android/content/HostDocuments.kt b/tools/chatgui-android/router-tests/src/main/kotlin/android/content/HostDocuments.kt new file mode 100644 index 00000000..af52c546 --- /dev/null +++ b/tools/chatgui-android/router-tests/src/main/kotlin/android/content/HostDocuments.kt @@ -0,0 +1,24 @@ +package android.content + +import android.net.Uri +import java.io.ByteArrayInputStream +import java.io.ByteArrayOutputStream +import java.io.InputStream +import java.io.OutputStream + +/** Управляемые URI без Android provider; ошибки чтения/записи задаёт конкретный тест. */ +class ContentResolver { + var displayName = "document.bin" + var input: (Uri) -> InputStream? = { ByteArrayInputStream(byteArrayOf(1, 2, 3)) } + var output: (Uri) -> OutputStream? = { ByteArrayOutputStream() } + var delete: (Uri) -> Boolean = { true } + fun query(uri: Uri, projection: Array, selection: String?, args: Array?, order: String?) = Cursor(displayName) + fun openInputStream(uri: Uri) = input(uri) + fun openOutputStream(uri: Uri, mode: String) = output(uri) +} + +class Cursor(private val name: String) : AutoCloseable { + fun moveToFirst() = true + fun getString(column: Int) = name + override fun close() {} +} diff --git a/tools/chatgui-android/router-tests/src/main/kotlin/android/provider/HostDocuments.kt b/tools/chatgui-android/router-tests/src/main/kotlin/android/provider/HostDocuments.kt new file mode 100644 index 00000000..380eeb43 --- /dev/null +++ b/tools/chatgui-android/router-tests/src/main/kotlin/android/provider/HostDocuments.kt @@ -0,0 +1,7 @@ +package android.provider + +import android.content.ContentResolver +import android.net.Uri + +object OpenableColumns { const val DISPLAY_NAME = "_display_name" } +object DocumentsContract { fun deleteDocument(resolver: ContentResolver, uri: Uri) = resolver.delete(uri) }