vproxy / tests /unit /test_wire_codec_mapping.py
jlshu's picture
Upload 85 files
95f8c4b verified
Raw History Blame Contribute Delete
2.49 kB
from pathlib import Path
from aistudio_api.infrastructure.gateway.wire_codec import AistudioWireCodec
from aistudio_api.infrastructure.gateway.wire_types import (
AistudioGenerationConfig,
AistudioImageOutputMode,
AistudioThinkingConfig,
MediaResolution,
ThinkingLevel,
)
ROOT = Path(__file__).resolve().parents[1]
def test_decode_image_request_maps_generation_config_fields_from_proto_indexes():
codec = AistudioWireCodec()
raw = (ROOT / "test-image-input.json").read_text()
request = codec.decode(raw)
assert request.model == "models/gemini-3.1-flash-image-preview"
assert request.generation_config.stop_sequences == ["6"]
assert request.generation_config.max_tokens == 65536
assert request.generation_config.temperature == 1
assert request.generation_config.top_p == 0.95
assert request.generation_config.top_k == 64
assert request.generation_config.image_output_mode == [2, 1]
assert request.generation_config.thinking_config == [1, None, None, 3]
assert request.request_flag == 1
assert request.cached_content.startswith("v1_")
def test_encode_preserves_newly_mapped_proto_fields():
codec = AistudioWireCodec()
raw = (ROOT / "test-image-input.json").read_text()
request = codec.decode(raw)
encoded = codec.encode(request)
reparsed = codec.decode(encoded)
assert reparsed.generation_config.stop_sequences == ["6"]
assert reparsed.generation_config.image_output_mode == [2, 1]
assert reparsed.generation_config.thinking_config == [1, None, None, 3]
assert reparsed.request_flag == 1
assert reparsed.cached_content == request.cached_content
def test_thinking_config_encodes_high_level_wire_shape():
assert AistudioThinkingConfig(ThinkingLevel.HIGH).to_wire() == [1, None, None, 3]
def test_generation_config_enables_default_thinking():
config = AistudioGenerationConfig([])
config.enable_default_thinking()
assert config.thinking_config == [1, None, None, 3]
assert config.media_resolution is None
def test_generation_config_accepts_readable_image_output_mode_wrapper():
config = AistudioGenerationConfig([])
config.image_output_mode = AistudioImageOutputMode.text_and_image()
assert config.image_output_mode == [2, 1]
def test_generation_config_accepts_media_resolution_enum():
config = AistudioGenerationConfig([])
config.media_resolution = MediaResolution.MEDIUM
assert config.media_resolution == 2