File size: 1,570 Bytes
c20d7c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""Tests for serialization utilities."""

import pandas as pd
from app.utils.serialization import _normalize_text, dataframe_to_records, to_jsonable


def test_normalize_text_passthrough_ascii():
    assert _normalize_text("hello") == "hello"


def test_normalize_text_chinese_preserved():
    assert _normalize_text("主力净流入") == "主力净流入"


def test_normalize_text_bytes_utf8():
    result = _normalize_text(b"test")
    assert result == "test"


def test_normalize_text_bytes_garbled():
    # Garbled bytes should be normalized without raising
    result = _normalize_text(b"\xc0\xaf\xc0\xfa")
    assert isinstance(result, str)
    assert len(result) > 0


def test_to_jsonable_dict_chinese_keys():
    data = {"主力净流入": 100, "涨跌幅": -2.5}
    result = to_jsonable(data)
    assert "主力净流入" in result
    assert "涨跌幅" in result
    assert result["主力净流入"] == 100


def test_to_jsonable_dict_bytes_keys():
    data = {b"key1": "value1"}
    result = to_jsonable(data)
    assert "key1" in result
    assert result["key1"] == "value1"


def test_dataframe_to_records_chinese_columns():
    df = pd.DataFrame({"日期": ["2024-01-01"], "收盘价": [10.5], "涨跌幅": [2.1]})
    records = dataframe_to_records(df)
    assert len(records) == 1
    assert "日期" in records[0]
    assert "收盘价" in records[0]
    assert "涨跌幅" in records[0]


def test_dataframe_to_records_limit():
    df = pd.DataFrame({"a": range(100)})
    records = dataframe_to_records(df, limit=10)
    assert len(records) == 10