From 0288ba6012ac1bc707f16277330fdd86e3872f43 Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Fri, 24 Feb 2017 03:27:29 -0800 Subject: [PATCH] Initial submission for locale testing --- tests/__init__.py | 0 tests/test_locale/Pyfa/__init__.py | 0 tests/test_locale/Pyfa/test_codec.py | 30 ++++++++++ tests/test_locale/Pyfa/testcodec | 1 + tests/test_locale/__init__.py | 0 tests/test_locale/locale_functions.py | 81 +++++++++++++++++++++++++++ tests/test_locale/readme.md | 1 + tests/test_locale/знаф/__init__.py | 0 tests/test_locale/знаф/test_codec.py | 30 ++++++++++ tests/test_locale/знаф/testcodec | 1 + 10 files changed, 144 insertions(+) create mode 100644 tests/__init__.py create mode 100644 tests/test_locale/Pyfa/__init__.py create mode 100644 tests/test_locale/Pyfa/test_codec.py create mode 100644 tests/test_locale/Pyfa/testcodec create mode 100644 tests/test_locale/__init__.py create mode 100644 tests/test_locale/locale_functions.py create mode 100644 tests/test_locale/readme.md create mode 100644 tests/test_locale/знаф/__init__.py create mode 100644 tests/test_locale/знаф/test_codec.py create mode 100644 tests/test_locale/знаф/testcodec diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_locale/Pyfa/__init__.py b/tests/test_locale/Pyfa/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_locale/Pyfa/test_codec.py b/tests/test_locale/Pyfa/test_codec.py new file mode 100644 index 000000000..5cf5c7bee --- /dev/null +++ b/tests/test_locale/Pyfa/test_codec.py @@ -0,0 +1,30 @@ +# English + +import os +import platform +from tests.test_locale.locale_functions import GetPath + + +def test_codec(): + use_codec = { + "Windows": "cp1252", + "Linux" : "utf8", + "Darwin" : "utf8", + } + + os_name = platform.system() + current_directory = os.path.dirname(os.path.abspath(__file__)) + + try: + decoded_file = GetPath(current_directory, "testcodec", use_codec[os_name]) + except: + assert False, "Specified codec (" + use_codec[os_name] + ") failed to decrypt file path." + + try: + with open(decoded_file, 'r') as f: + read_data = f.read() + f.closed + except: + assert False, "Specified codec (" + use_codec[os_name] + ") failed to read file." + + assert read_data == "True" diff --git a/tests/test_locale/Pyfa/testcodec b/tests/test_locale/Pyfa/testcodec new file mode 100644 index 000000000..4791ed555 --- /dev/null +++ b/tests/test_locale/Pyfa/testcodec @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/tests/test_locale/__init__.py b/tests/test_locale/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_locale/locale_functions.py b/tests/test_locale/locale_functions.py new file mode 100644 index 000000000..1955d81b4 --- /dev/null +++ b/tests/test_locale/locale_functions.py @@ -0,0 +1,81 @@ +import os + +# https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx +windows_codecs = { + 'cp1252', # Standard Windows + 'cp1251', # Russian + 'cp037', + 'cp424', + 'cp437', + 'cp500', + 'cp720', + 'cp737', + 'cp775', + 'cp850', + 'cp852', + 'cp855', + 'cp856', + 'cp857', + 'cp858', + 'cp860', + 'cp861', + 'cp862', + 'cp863', + 'cp864', + 'cp865', + 'cp866', + 'cp869', + 'cp874', + 'cp875', + 'cp932', + 'cp949', + 'cp950', + 'cp1006', + 'cp1026', + 'cp1140', + 'cp1250', + 'cp1253', + 'cp1254', + 'cp1255', + 'cp1256', + 'cp1257', + 'cp1258', +} + +linux_codecs = { + 'utf_8', # Generic Linux/Mac +} + +mac_codecs = [ + 'utf_8', # Generic Linux/Mac + 'mac_cyrillic', + 'mac_greek', + 'mac_iceland', + 'mac_latin2', + 'mac_roman', + 'mac_turkish', +] + +universal_codecs = [ + 'utf_16', 'utf_32', 'utf_32_be', 'utf_32_le', 'utf_16_be', 'utf_16_le', 'utf_7', 'utf_8_sig', +] + +other_codecs = [ + 'scii', 'big5', 'big5hkscs', 'euc_jp', 'euc_jis_2004', 'euc_jisx0213', 'euc_kr', 'gb2312', 'gbk', 'gb18030', 'hz', 'iso2022_jp', 'iso2022_jp_1', + 'iso2022_jp_2', 'iso2022_jp_2004', 'iso2022_jp_3', 'iso2022_jp_ext', 'iso2022_kr', 'latin_1', 'iso8859_2', 'iso8859_3', 'iso8859_4', 'iso8859_5', + 'iso8859_6', 'iso8859_7', 'iso8859_8', 'iso8859_9', 'iso8859_10', 'iso8859_11', 'iso8859_13', 'iso8859_14', 'iso8859_15', 'iso8859_16', 'johab', 'koi8_r', + 'koi8_u', 'ptcp154', 'shift_jis', 'shift_jis_2004', 'shift_jisx0213' +] + +system_names = { + 'Windows': windows_codecs, + 'Linux': linux_codecs, + 'Darwin': mac_codecs, +} + + +def GetPath(root, file, codec): + # Replace this with the function we actually use for this + base_path = os.path.realpath(os.path.abspath(root)) + path = os.path.join(base_path, file).decode(codec) + return path diff --git a/tests/test_locale/readme.md b/tests/test_locale/readme.md new file mode 100644 index 000000000..bf413bae3 --- /dev/null +++ b/tests/test_locale/readme.md @@ -0,0 +1 @@ +Use this to dynamically test languages. \ No newline at end of file diff --git a/tests/test_locale/знаф/__init__.py b/tests/test_locale/знаф/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_locale/знаф/test_codec.py b/tests/test_locale/знаф/test_codec.py new file mode 100644 index 000000000..9d0071506 --- /dev/null +++ b/tests/test_locale/знаф/test_codec.py @@ -0,0 +1,30 @@ +# Russian + +import os +import platform +from tests.test_locale.locale_functions import GetPath + + +def test_codec(): + use_codec = { + "Windows": "cp1251", + "Linux" : "utf8", + "Darwin" : "mac_cyrillic", + } + + os_name = platform.system() + current_directory = os.path.dirname(os.path.abspath(__file__)) + + try: + decoded_file = GetPath(current_directory, "testcodec", use_codec[os_name]) + except: + assert False, "Specified codec (" + use_codec[os_name] + ") failed to decrypt file path." + + try: + with open(decoded_file, 'r') as f: + read_data = f.read() + f.closed + except: + assert False, "Specified codec (" + use_codec[os_name] + ") failed to read file." + + assert read_data == "True" diff --git a/tests/test_locale/знаф/testcodec b/tests/test_locale/знаф/testcodec new file mode 100644 index 000000000..4791ed555 --- /dev/null +++ b/tests/test_locale/знаф/testcodec @@ -0,0 +1 @@ +True \ No newline at end of file