Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added tests/__init__.py
Empty file.
30 changes: 30 additions & 0 deletions tests/test_locale/Pyfa/test_codec_english.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# English

import os
import platform
from tests.test_locale.locale_functions import GetPath


def test_codec_english():
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"
1 change: 1 addition & 0 deletions tests/test_locale/Pyfa/testcodec
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
True
Empty file added tests/test_locale/__init__.py
Empty file.
87 changes: 87 additions & 0 deletions tests/test_locale/file_dialog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# noinspection PyPackageRequirements
import wx
import locale_functions
import sys


class MyForm(wx.Frame):
# ----------------------------------------------------------------------
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "CTRL-O to open, CTRL-S to save", size=(500, 500))

# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)

SAVE_FILE_ID = wx.NewId()
self.Bind(wx.EVT_MENU, self.saveFile, id=SAVE_FILE_ID)

LOAD_FILE_ID = wx.NewId()
self.Bind(wx.EVT_MENU, self.loadFile, id=LOAD_FILE_ID)

accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('O'), LOAD_FILE_ID),
(wx.ACCEL_CTRL, ord('S'), SAVE_FILE_ID)]
)
self.SetAcceleratorTable(accel_tbl)

# ----------------------------------------------------------------------
def loadFile(self, event):
openFileDialog = wx.FileDialog(self, "Open", "", "",
"Python files (*.py)|*.py",
wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
openFileDialog.ShowModal()
path = openFileDialog.GetPath()
try:
os_walk_without_codec = locale_functions.GetPath(path)
except (UnicodeEncodeError, UnicodeTranslateError, UnicodeError, UnicodeDecodeError, UnicodeWarning, TypeError) as e:
os_walk_without_codec = e

try:
os_walk_with_system_codec = locale_functions.GetPath(path, None, sys.getdefaultencoding())
except (UnicodeEncodeError, UnicodeTranslateError, UnicodeError, UnicodeDecodeError, UnicodeWarning, TypeError) as e:
os_walk_with_system_codec = e

try:
os_walk_unicode_without_codec = locale_functions.GetUnicodePath(path)
except (UnicodeEncodeError, UnicodeTranslateError, UnicodeError, UnicodeDecodeError, UnicodeWarning, TypeError) as e:
os_walk_unicode_without_codec = e

try:
os_walk_unicode_with_system_codec = locale_functions.GetUnicodePath(path, None, sys.getdefaultencoding())
except (UnicodeEncodeError, UnicodeTranslateError, UnicodeError, UnicodeDecodeError, UnicodeWarning, TypeError) as e:
os_walk_unicode_with_system_codec = e

print("Simple print:")
print(path)

print("Type:")
print(type(path))

print("OS Walk: No Codec:")
print(os_walk_without_codec)

print("OS Walk: Default System Codec:")
print(os_walk_with_system_codec)

print("OS Unicode Walk: No Codec:")
print(os_walk_unicode_without_codec)

print("OS Unicode Walk: Default System Codec:")
print(os_walk_unicode_with_system_codec)
openFileDialog.Destroy()

# ----------------------------------------------------------------------
def saveFile(self, event):
saveFileDialog = wx.FileDialog(self, "Save As", "", "",
"Python files (*.py)|*.py",
wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
saveFileDialog.ShowModal()
saveFileDialog.GetPath()
saveFileDialog.Destroy()


# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()
101 changes: 101 additions & 0 deletions tests/test_locale/locale_functions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
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=None, codec=None):
# Replace this with the function we actually use for this
path = os.path.realpath(os.path.abspath(root))

if file:
path = os.path.join(path, file)

if codec:
path = path.decode(codec)

return path

def GetUnicodePath(root, file=None, codec=None):
# Replace this with the function we actually use for this
path = os.path.realpath(os.path.abspath(root))

if file:
path = os.path.join(path, file)

if codec:
path = unicode(path, codec)
else:
path = unicode(path)

return path
1 change: 1 addition & 0 deletions tests/test_locale/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Use this to dynamically test languages.
27 changes: 27 additions & 0 deletions tests/test_locale/test_os_walk.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import os
from tests.test_locale.locale_functions import GetPath


def test_os_walk():
current_directory = os.path.dirname(os.path.abspath(unicode(__file__)))
subfolders = os.listdir(current_directory)
subfolders = [e for e in subfolders if not (e.endswith(".py") or e.endswith(".pyc") or e.endswith(".md"))]

subfolder_count = 0
for subfolder in subfolders:
subdir = GetPath(current_directory, subfolder)
testfile = GetPath(subdir, "testcodec")

# noinspection PyBroadException
try:
with open(testfile, 'r') as f:
read_data = f.read()
# noinspection PyStatementEffect
f.closed
except:
assert False, "Failed to read file."

assert read_data == "True"
subfolder_count += 1

assert len(subfolders) == subfolder_count
30 changes: 30 additions & 0 deletions tests/test_locale/знаф/test_codec_russian.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Russian

import os
import platform
from tests.test_locale.locale_functions import GetPath


def test_codec_russian():
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"
1 change: 1 addition & 0 deletions tests/test_locale/знаф/testcodec
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
True
30 changes: 30 additions & 0 deletions tests/test_locale/פטכש/test_codec_hebrew.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Hebrew

import os
import platform
from tests.test_locale.locale_functions import GetPath


def test_codec_hebrew():
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"
1 change: 1 addition & 0 deletions tests/test_locale/פטכש/testcodec
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
True
30 changes: 30 additions & 0 deletions tests/test_locale/测试/test_codec_chinese_simplified.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Chinese (Simplified)

import os
import platform
from tests.test_locale.locale_functions import GetPath


def test_codec_chinese_simplified():
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"
1 change: 1 addition & 0 deletions tests/test_locale/测试/testcodec
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
True