From: Daniele Varrazzo Date: Fri, 3 Apr 2020 12:53:35 +0000 (+1300) Subject: Added array tests for sql_ascii db and bytea X-Git-Tag: 3.0.dev0~615 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=48a81721acb65dc2b3e708d4009d0ea44e85c901;p=thirdparty%2Fpsycopg.git Added array tests for sql_ascii db and bytea --- diff --git a/tests/types/test_text.py b/tests/types/test_text.py index ace5aacd4..a31015e4a 100644 --- a/tests/types/test_text.py +++ b/tests/types/test_text.py @@ -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