]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
test(enum): add test to verify enums work with sql_ascii connections
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sun, 17 Apr 2022 22:52:27 +0000 (00:52 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 21 Apr 2022 14:05:46 +0000 (16:05 +0200)
tests/types/test_enum.py

index 1f0b5af4aa6d544313193b74f3cd902c09928569..8a1ffc7f4af92a3bdf0577aded19c1ff58d43db6 100644 (file)
@@ -66,6 +66,21 @@ def test_enum_loader(conn, testenum, encoding, fmt_in, fmt_out):
         assert cur.fetchone()[0] == enum(label)
 
 
+@pytest.mark.parametrize("fmt_in", PyFormat)
+@pytest.mark.parametrize("fmt_out", pq.Format)
+def test_enum_loader_sqlascii(conn, testenum, fmt_in, fmt_out):
+    name, enum, labels = testenum
+    if name == "nonasciienum":
+        pytest.skip("ascii-only test")
+
+    register_enum(EnumInfo.fetch(conn, name), enum, conn)
+    conn.execute("set client_encoding to sql_ascii")
+
+    for label in labels:
+        cur = conn.execute(f"select %{fmt_in}::{name}", [label], binary=fmt_out)
+        assert cur.fetchone()[0] == enum(label)
+
+
 @pytest.mark.parametrize("encoding", encodings)
 @pytest.mark.parametrize("fmt_in", PyFormat)
 @pytest.mark.parametrize("fmt_out", pq.Format)
@@ -80,6 +95,21 @@ def test_enum_dumper(conn, testenum, encoding, fmt_in, fmt_out):
         assert cur.fetchone()[0] == item
 
 
+@pytest.mark.parametrize("fmt_in", PyFormat)
+@pytest.mark.parametrize("fmt_out", pq.Format)
+def test_enum_dumper_sqlascii(conn, testenum, fmt_in, fmt_out):
+    name, enum, labels = testenum
+    if name == "nonasciienum":
+        pytest.skip("ascii-only test")
+
+    register_enum(EnumInfo.fetch(conn, name), enum, conn)
+    conn.execute("set client_encoding to sql_ascii")
+
+    for item in enum:
+        cur = conn.execute(f"select %{fmt_in}", [item], binary=fmt_out)
+        assert cur.fetchone()[0] == item
+
+
 @pytest.mark.parametrize("encoding", encodings)
 @pytest.mark.parametrize("fmt_in", PyFormat)
 @pytest.mark.parametrize("fmt_out", pq.Format)