]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Added array tests for sql_ascii db and bytea
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 3 Apr 2020 12:53:35 +0000 (01:53 +1300)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 3 Apr 2020 12:53:35 +0000 (01:53 +1300)
tests/types/test_text.py

index ace5aacd491da01c545c8428adf38a8cead5a617..a31015e4a28d923e50a9413ce43a8649e9267fde 100644 (file)
@@ -3,6 +3,8 @@ import pytest
 import psycopg3
 from psycopg3.adapt import Format
 
+eur = "\u20ac"
+
 
 #
 # tests with text
@@ -31,7 +33,6 @@ def test_cast_1char(conn, format):
 @pytest.mark.parametrize("format", [Format.TEXT, Format.BINARY])
 @pytest.mark.parametrize("encoding", ["utf8", "latin9"])
 def test_adapt_enc(conn, format, encoding):
-    eur = "\u20ac"
     cur = conn.cursor()
     ph = "%s" if format == Format.TEXT else "%b"
 
@@ -42,7 +43,6 @@ def test_adapt_enc(conn, format, encoding):
 
 @pytest.mark.parametrize("format", [Format.TEXT, Format.BINARY])
 def test_adapt_ascii(conn, format):
-    eur = "\u20ac"
     cur = conn.cursor(binary=format == Format.BINARY)
     ph = "%s" if format == Format.TEXT else "%b"
 
@@ -53,7 +53,6 @@ def test_adapt_ascii(conn, format):
 
 @pytest.mark.parametrize("format", [Format.TEXT, Format.BINARY])
 def test_adapt_badenc(conn, format):
-    eur = "\u20ac"
     cur = conn.cursor()
     ph = "%s" if format == Format.TEXT else "%b"
 
@@ -65,7 +64,6 @@ def test_adapt_badenc(conn, format):
 @pytest.mark.parametrize("format", [Format.TEXT, Format.BINARY])
 @pytest.mark.parametrize("encoding", ["utf8", "latin9"])
 def test_cast_enc(conn, format, encoding):
-    eur = "\u20ac"
     cur = conn.cursor(binary=format == Format.BINARY)
 
     conn.encoding = encoding
@@ -75,7 +73,6 @@ def test_cast_enc(conn, format, encoding):
 
 @pytest.mark.parametrize("format", [Format.TEXT, Format.BINARY])
 def test_cast_badenc(conn, format):
-    eur = "\u20ac"
     cur = conn.cursor(binary=format == Format.BINARY)
 
     conn.encoding = "latin1"
@@ -85,7 +82,6 @@ def test_cast_badenc(conn, format):
 
 @pytest.mark.parametrize("format", [Format.TEXT, Format.BINARY])
 def test_cast_ascii(conn, format):
-    eur = "\u20ac"
     cur = conn.cursor(binary=format == Format.BINARY)
 
     conn.encoding = "sql_ascii"
@@ -93,6 +89,22 @@ def test_cast_ascii(conn, format):
     assert res == eur.encode("utf8")
 
 
+def test_text_array(conn):
+    cur = conn.cursor()
+    a = list(map(chr, range(1, 256))) + [eur]
+    (res,) = cur.execute("select %s::text[]", (a,)).fetchone()
+    assert res == a
+
+
+def test_text_array_ascii(conn):
+    conn.encoding = "sql_ascii"
+    cur = conn.cursor()
+    a = list(map(chr, range(1, 256))) + [eur]
+    exp = [s.encode("utf8") for s in a]
+    (res,) = cur.execute("select %s::text[]", (a,)).fetchone()
+    assert res == exp
+
+
 #
 # tests with bytea
 #
@@ -116,3 +128,10 @@ def test_cast_1byte(conn, format):
         assert cur.fetchone()[0] == bytes([i])
 
     assert cur.pgresult.fformat(0) == format
+
+
+def test_bytea_array(conn):
+    cur = conn.cursor()
+    a = [bytes(range(0, 256))]
+    (res,) = cur.execute("select %s::bytea[]", (a,)).fetchone()
+    assert res == a