File size: 1,532 Bytes
55604fe
 
c862b13
 
 
55604fe
 
 
 
 
 
 
 
 
 
 
 
 
 
c862b13
 
fcdb282
c862b13
fcdb282
c862b13
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sys

import numpy as np

from hermesbody.main import audio_sample_to_pcm16_bytes, parse_args, pcm16_bytes_to_float32_audio, resolve_audio_backend


def test_cli_parser_exposes_audio_transport_subcommands_without_optional_imports(monkeypatch):
    monkeypatch.setitem(sys.modules, "google.genai", None)
    monkeypatch.setitem(sys.modules, "websockets", None)

    server = parse_args(["gemini-server", "--host", "127.0.0.1", "--port", "8766", "--token", "test-token"])
    client = parse_args(["reachy-audio-client", "--server", "ws://127.0.0.1:8766", "--token", "test-token"])

    assert server.command == "gemini-server"
    assert server.host == "127.0.0.1"
    assert server.port == 8766
    assert client.command == "reachy-audio-client"
    assert client.server == "ws://127.0.0.1:8766"


def test_audio_backend_auto_defaults_to_packaged_mac_mini_bridge(monkeypatch):
    monkeypatch.delenv("HERMESBODY_AUDIO_WS_URL", raising=False)
    assert resolve_audio_backend("auto", "") == "gemini_ws"
    assert resolve_audio_backend("auto", "ws://10.0.0.192:8877") == "gemini_ws"
    assert resolve_audio_backend("gemini_ws", "") == "gemini_ws"


def test_pcm_helpers_convert_reachy_float_audio_to_wire_pcm16_and_back():
    sample = np.array([-1.0, 0.0, 1.0], dtype="float32")
    pcm = audio_sample_to_pcm16_bytes(sample)
    decoded = pcm16_bytes_to_float32_audio(pcm)

    assert len(pcm) == 6
    assert decoded.dtype == np.float32
    assert decoded[0] < -0.99
    assert decoded[1] == 0.0
    assert decoded[2] > 0.99