Skip to content

Commit fb269c6

Browse files
committed
Verify long strings and date format semantics
1 parent 038a86c commit fb269c6

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

‎tests/test_sav_sqlite.py‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,21 @@ def test_import_rejects_physical_table_name_collision_without_partial_catalog(tm
8787

8888
connection = sqlite3.connect(database_path)
8989
assert connection.execute("select dataset_id from dataset_catalog").fetchall() == [("wave-1",)]
90+
91+
92+
def test_long_utf8_strings_and_date_format_remain_source_semantic(tmp_path) -> None:
93+
source = tmp_path / "semantic.sav"
94+
database_path = tmp_path / "dataset.sqlite"
95+
database = f"sqlite:///{database_path}"
96+
exported = tmp_path / "semantic-roundtrip.sav"
97+
long_text = "Õ" * 300
98+
pyreadstat.write_sav(
99+
pd.DataFrame({"comment": [long_text], "interview_date": [23123.0]}), source,
100+
variable_format={"comment": "A320", "interview_date": "DATE11"},
101+
)
102+
openstatspec.import_sav(source, database_url=database, dataset_id="semantic")
103+
connection = sqlite3.connect(database_path)
104+
assert connection.execute("select comment, interview_date from data_semantic").fetchone() == (long_text, 23123.0)
105+
assert connection.execute("select storage_kind, format from variable_catalog where source_name = 'interview_date'").fetchone() == ("numeric", "DATE11")
106+
openstatspec.export_sav(database_url=database, dataset_id="semantic", destination=exported)
107+
assert compare_sav_semantics(source, exported) == {"equivalent": True, "differences": []}

0 commit comments

Comments
 (0)