Import official OpenClaw Android app (apps/android @ 71a59512ba476df3328cf485d84748121cf341f2)

Pristine fork source for PROJ-0088. v1 will turn this into a WebView web
shell; the WebSocket node infrastructure stays intact for v2 heartbeat.
This commit is contained in:
Brendan Greenlee 2026-08-01 15:13:34 +00:00
commit 7a380c40ed
656 changed files with 209982 additions and 0 deletions

View file

@ -0,0 +1,35 @@
package ai.openclaw.wear.shared
import org.junit.Assert.assertArrayEquals
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.DataOutputStream
class WearRealtimeTalkTest {
@Test
fun audioFramesRoundTripAndPreserveBoundaries() {
val output = ByteArrayOutputStream()
WearRealtimeAudioFraming.write(output, WearRealtimeAudioFrameType.INPUT_PCM, byteArrayOf(1, 2, 3, 4))
WearRealtimeAudioFraming.write(output, WearRealtimeAudioFrameType.CLEAR_OUTPUT, byteArrayOf())
val input = ByteArrayInputStream(output.toByteArray())
val audio = WearRealtimeAudioFraming.read(input)!!
assertEquals(WearRealtimeAudioFrameType.INPUT_PCM, audio.type)
assertArrayEquals(byteArrayOf(1, 2, 3, 4), audio.payload)
assertEquals(WearRealtimeAudioFrameType.CLEAR_OUTPUT, WearRealtimeAudioFraming.read(input)!!.type)
assertNull(WearRealtimeAudioFraming.read(input))
}
@Test(expected = IllegalArgumentException::class)
fun rejectsOversizedFrameBeforeAllocatingPayload() {
val output = ByteArrayOutputStream()
DataOutputStream(output).apply {
writeByte(WearRealtimeAudioFrameType.INPUT_PCM.wireValue)
writeInt(WearProtocol.MAX_REALTIME_AUDIO_FRAME_BYTES + 1)
}
WearRealtimeAudioFraming.read(ByteArrayInputStream(output.toByteArray()))
}
}