File: test_charset.py

package info (click to toggle)
python-pymysql 1.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 836 kB
  • sloc: python: 6,473; makefile: 134; sh: 44; sql: 10
file content (44 lines) | stat: -rw-r--r-- 1,638 bytes parent folder | download
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
import pymysql.charset


def test_utf8():
    utf8mb3 = pymysql.charset.charset_by_name("utf8mb3")
    assert utf8mb3.name == "utf8mb3"
    assert utf8mb3.collation == "utf8mb3_general_ci"
    assert (
        repr(utf8mb3)
        == "Charset(id=33, name='utf8mb3', collation='utf8mb3_general_ci')"
    )

    # MySQL 8.0 changed the default collation for utf8mb4.
    # But we use old default for compatibility.
    utf8mb4 = pymysql.charset.charset_by_name("utf8mb4")
    assert utf8mb4.name == "utf8mb4"
    assert utf8mb4.collation == "utf8mb4_general_ci"
    assert (
        repr(utf8mb4)
        == "Charset(id=45, name='utf8mb4', collation='utf8mb4_general_ci')"
    )

    # utf8 is alias of utf8mb4 since MySQL 8.0, and PyMySQL v1.1.
    lowercase_utf8 = pymysql.charset.charset_by_name("utf8")
    assert lowercase_utf8 == utf8mb4

    # Regardless of case, UTF8 (which is special cased) should resolve to the same thing
    uppercase_utf8 = pymysql.charset.charset_by_name("UTF8")
    mixedcase_utf8 = pymysql.charset.charset_by_name("UtF8")
    assert uppercase_utf8 == lowercase_utf8
    assert mixedcase_utf8 == lowercase_utf8


def test_case_sensitivity():
    lowercase_latin1 = pymysql.charset.charset_by_name("latin1")
    assert lowercase_latin1 is not None

    # lowercase and uppercase should resolve to the same charset
    uppercase_latin1 = pymysql.charset.charset_by_name("LATIN1")
    assert uppercase_latin1 == lowercase_latin1

    # lowercase and mixed case should resolve to the same charset
    mixedcase_latin1 = pymysql.charset.charset_by_name("LaTiN1")
    assert mixedcase_latin1 == lowercase_latin1