from __future__ import annotations import unittest from unittest.mock import patch from src.android_control import enrich_device_row from src.redroid_control import load_redroid_env, redroid_instance_name, redroid_instance_port class AndroidRedroidTests(unittest.TestCase): def test_enrich_device_row_marks_usb_physical(self) -> None: row = enrich_device_row({"serial": "ABC123", "state": "device", "model": "Pixel"}) self.assertEqual(row["transport"], "usb") self.assertEqual(row["kind"], "physical") def test_enrich_device_row_marks_redroid(self) -> None: row = enrich_device_row( { "serial": "127.0.0.1:5555", "state": "device", "model": "redroid", "product": "redroid", } ) self.assertEqual(row["transport"], "tcp") self.assertEqual(row["kind"], "redroid") @patch("src.redroid_control.platform.machine", return_value="x86_64") def test_redroid_env_prefers_x86_alt_image(self, _machine) -> None: env = load_redroid_env() self.assertIn("redroid:", env["REDROID_IMAGE"]) self.assertEqual(env["REDROID_IMAGE"], env["REDROID_IMAGE_X86_ALT"]) @patch("src.redroid_control.platform.machine", return_value="aarch64") def test_redroid_env_prefers_arm_image_and_guest_gpu_bootarg(self, _machine) -> None: env = load_redroid_env() self.assertEqual(env["REDROID_IMAGE"], "fahaddz/redroid:13-arm-pi5") self.assertIn("androidboot.redroid_gpu_mode=guest", env["REDROID_BOOT_ARGS"]) def test_redroid_default_instance_layout(self) -> None: self.assertEqual(redroid_instance_name(1), "redroid13-1") self.assertEqual(redroid_instance_port(1), 5555) self.assertEqual(redroid_instance_port(3), 5557) if __name__ == "__main__": unittest.main()