Ulrich Carmesin
2 years ago
4 changed files with 199 additions and 2 deletions
@ -0,0 +1,96 @@ |
|||
#!/usr/bin/python |
|||
# -*- coding: utf-8 -*- |
|||
# --------------------------------------------------------------------------------------------------------- |
|||
# Author : Ulrich Carmesin |
|||
# Source : gitea.ucarmesin.de |
|||
# --------------------------------------------------------------------------------------------------------- |
|||
import unittest |
|||
import os |
|||
import inspect |
|||
import utils.path_tool |
|||
import basic.program |
|||
import basic.constants as B |
|||
import test.constants |
|||
import test.testtools |
|||
import utils.path_const as P |
|||
import utils.i18n_tool |
|||
import basic.constants as B |
|||
|
|||
HOME_PATH = test.constants.HOME_PATH |
|||
OS_SYSTEM = test.constants.OS_SYSTEM |
|||
|
|||
# here you can select single testfunction for developping the tests |
|||
TEST_FUNCTIONS = ["test_01class", "test_02text", "test_03aliasList"] |
|||
#TEST_FUNCTIONS = [ "test_03aliasList"] |
|||
verbose = False |
|||
|
|||
EXP_KEY_MISSING = "key is missing {}" |
|||
EXP_KEY_DOESNT_EXIST = "key doesnt exist in domain {}" |
|||
|
|||
class MyTestCase(unittest.TestCase): |
|||
mymsg = "--------------------------------------------------------------" |
|||
|
|||
def test_01class(self): |
|||
global mymsg |
|||
actfunction = str(inspect.currentframe().f_code.co_name) |
|||
cnttest = 0 |
|||
if actfunction not in TEST_FUNCTIONS: |
|||
return |
|||
job = test.testtools.getJob() |
|||
i18n = utils.i18n_tool.I18n.getInstance() |
|||
self.assertIsNotNone(i18n) |
|||
cnttest += 1 |
|||
MyTestCase.mymsg += "\n----- "+actfunction+" : "+str(cnttest) |
|||
|
|||
|
|||
def test_02text(self): |
|||
global mymsg |
|||
actfunction = str(inspect.currentframe().f_code.co_name) |
|||
cnttest = 0 |
|||
if actfunction not in TEST_FUNCTIONS: |
|||
return |
|||
job = test.testtools.getJob() |
|||
job.conf.confs["language"] = "de" |
|||
i18n = utils.i18n_tool.I18n.getInstance() |
|||
res = i18n.getText(f"{EXP_KEY_MISSING=}", job) |
|||
if verbose: print("RESULT "+res) |
|||
self.assertEqual(res, "Schluesselwort fehlt {}") |
|||
cnttest += 1 |
|||
res = i18n.getText(f"{EXP_KEY_DOESNT_EXIST=}", job) |
|||
if verbose: print("RESULT "+res) |
|||
self.assertEqual(res, "key doesnt exist in domain {}") |
|||
cnttest += 1 |
|||
res = i18n.getText(f"{B.ATTR_APPS_PROJECT=}", job) |
|||
if verbose: print("RESULT "+res) |
|||
self.assertEqual(res, "project") |
|||
cnttest += 1 |
|||
job.conf.confs["language"] = "fr" |
|||
i18n = utils.i18n_tool.I18n.getInstance() |
|||
self.assertRaises(Exception, i18n.getText, (f"{EXP_KEY_MISSING=}", job)) |
|||
cnttest += 1 |
|||
MyTestCase.mymsg += "\n----- "+actfunction+" : "+str(cnttest) |
|||
|
|||
|
|||
def test_03aliasList(self): |
|||
global mymsg |
|||
actfunction = str(inspect.currentframe().f_code.co_name) |
|||
cnttest = 0 |
|||
if actfunction not in TEST_FUNCTIONS: |
|||
return |
|||
job = test.testtools.getJob() |
|||
job.conf.confs["language"] = "de" |
|||
i18n = utils.i18n_tool.I18n.getInstance() |
|||
# i18n.getText("EXP_KEY_MISSING", EXP_KEY_MISSING, job) |
|||
res = i18n.getAliasList(f"{EXP_KEY_MISSING=}", job) |
|||
if verbose: print("RESULT "+str(res)) |
|||
self.assertEqual(res, ['key is missing {}', 'Schluesselwort fehlt {}']) |
|||
cnttest += 1 |
|||
MyTestCase.mymsg += "\n----- "+actfunction+" : "+str(cnttest) |
|||
|
|||
def test_zzz(self): |
|||
if verbose: print(MyTestCase.mymsg) |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
verbose = True |
|||
unittest.main() |
@ -0,0 +1,95 @@ |
|||
#!/usr/bin/python |
|||
# -*- coding: utf-8 -*- |
|||
# --------------------------------------------------------------------------------------------------------- |
|||
# Author : Ulrich Carmesin |
|||
# Source : gitea.ucarmesin.de |
|||
# --------------------------------------------------------------------------------------------------------- |
|||
import utils.config_tool |
|||
import utils.path_const as P |
|||
import basic.program |
|||
|
|||
DEFAULT_LANGUAGE = "en" |
|||
EXP_KEY_MISSING = "key is missing {}" |
|||
EXP_KEY_DOESNT_EXIST = "key doesnt exist in domain {}" |
|||
|
|||
class I18n: |
|||
__instance = None |
|||
cache = {} |
|||
""" |
|||
in this class there should be managed each defined key-value-pairs |
|||
the pairs ara loaded from the path testdata/catalog: |
|||
* initially the csv-file catalog.csv |
|||
* on demand other csv-files in the path |
|||
""" |
|||
|
|||
def __init__(self): |
|||
self.cache = {} |
|||
self.cache = utils.config_tool.getConfig(P.KEY_TOOL, "i18n") |
|||
I18n.__instance = self |
|||
pass |
|||
|
|||
|
|||
@staticmethod |
|||
def getInstance(): |
|||
if I18n.__instance == None: |
|||
return I18n() |
|||
return I18n.__instance |
|||
|
|||
|
|||
def getText(self, key, job=None): |
|||
""" |
|||
this function gets the text depending on language which is set in job.conf |
|||
:param domain: |
|||
:param key: |
|||
:return: |
|||
if not (isinstance(langue, str) and len(langue)): |
|||
raise Exception(EXP_KEY_MISSING, (domain, key)) |
|||
if not (isinstance(key, str) and len(key)): |
|||
raise Exception(EXP_KEY_MISSING, (langue, key)) |
|||
|
|||
return self.cache[langue][key] |
|||
""" |
|||
if job is None: |
|||
jon = basic.program.Job.getInstance() |
|||
language = job.conf.confs["language"] |
|||
if language not in self.cache: |
|||
raise Exception(EXP_KEY_MISSING, (key)) |
|||
print(key) |
|||
out = self.extractText(key) |
|||
key = self.extractKey(key) |
|||
if key in self.cache[language]: |
|||
out = self.cache[language][key] |
|||
elif key in self.cache[DEFAULT_LANGUAGE]: |
|||
out = self.cache[DEFAULT_LANGUAGE][key] |
|||
return out |
|||
|
|||
def getAliasList(self, key, job=None): |
|||
if job is None: |
|||
jon = basic.program.Job.getInstance() |
|||
out = [] |
|||
key = self.extractKey(key) |
|||
for language in self.cache: |
|||
out.append(self.cache[language][key]) |
|||
return out |
|||
|
|||
def extractKey(self, key): |
|||
if "=" in key: |
|||
i = key.find("=") |
|||
x = key[0:i] |
|||
if "." in x: |
|||
i = x.find(".") |
|||
y = x[i + 1:] |
|||
else: |
|||
y = x |
|||
key = y |
|||
print("= in key " + y) |
|||
else: |
|||
print("!= in key") |
|||
y = key |
|||
return key |
|||
|
|||
def extractText(self, key): |
|||
if "=" in key: |
|||
i = key.find("=") |
|||
return key[i + 2:-1] |
|||
return "" |
Loading…
Reference in new issue