mirror of
https://github.com/Tiendil/pynames.git
synced 2026-01-06 04:08:49 +01:00
new tests
fix goblin and orc generators
This commit is contained in:
parent
7bd0b79acc
commit
e582920703
10 changed files with 112 additions and 29 deletions
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import os
|
||||
|
||||
from ..from_tables_generator import FromTablesGenerator
|
||||
from pynames.from_tables_generator import FromTablesGenerator
|
||||
|
||||
FIXTURES_DIR = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
|
||||
|
|
@ -12,8 +12,3 @@ class WarhammerNamesGenerator(FromTablesGenerator):
|
|||
|
||||
class DnDNamesGenerator(FromTablesGenerator):
|
||||
SOURCE = os.path.join(FIXTURES_DIR, 'dnd_names_tables.json')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ class BaseGenerator(object):
|
|||
|
||||
|
||||
class Name(object):
|
||||
|
||||
|
||||
__slots__ = ('genders', 'native_language', 'translations')
|
||||
|
||||
def __init__(self, native_language, data):
|
||||
|
|
@ -41,7 +41,7 @@ class Name(object):
|
|||
def exists_for(self, genders):
|
||||
return genders & self.genders
|
||||
|
||||
def __unicode__(self):
|
||||
def __unicode__(self):
|
||||
for gender in GENDER.ALL:
|
||||
if gender in self.genders:
|
||||
return self.translations[gender][self.native_language]
|
||||
|
|
@ -49,5 +49,3 @@ class Name(object):
|
|||
raise PynamesException(error_msg)
|
||||
|
||||
def __str__(self): return self.__unicode__()
|
||||
|
||||
|
||||
|
|
|
|||
10
pynames/goblin/__init__.py
Normal file
10
pynames/goblin/__init__.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# coding: utf-8
|
||||
|
||||
import os
|
||||
|
||||
from pynames.from_tables_generator import FromTablesGenerator
|
||||
|
||||
FIXTURES_DIR = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
|
||||
class GoblinGenerator(FromTablesGenerator):
|
||||
SOURCE = os.path.join(FIXTURES_DIR, 'goblin_names_tables.json')
|
||||
|
|
@ -3,17 +3,17 @@
|
|||
"languages": ["ru"],
|
||||
"native_language": "ru",
|
||||
"templates": { "male": {"probability": 1,
|
||||
"genders": ["m"],
|
||||
"template": ["prefixes", "male_suffixes"]},
|
||||
"genders": ["m"],
|
||||
"template": ["prefixes", "male_suffixes"]},
|
||||
"female": {"probability": 1,
|
||||
"genders": ["f"],
|
||||
"template": ["prefixes", "female_suffixes"]}
|
||||
"genders": ["f"],
|
||||
"template": ["prefixes", "female_suffixes"]}
|
||||
},
|
||||
"tables": { "apostrophe": [{"languages": {"ru": "'"}}],
|
||||
"prefixes": [{"languages": {"ru": "Б"}},
|
||||
{"languages": {"ru": "Бв"}},
|
||||
{"languages": {"ru": "Бг"}},
|
||||
{"languages": {"ru": "Бд"}},
|
||||
"prefixes": [{"languages": {"ru": "Б"}},
|
||||
{"languages": {"ru": "Бв"}},
|
||||
{"languages": {"ru": "Бг"}},
|
||||
{"languages": {"ru": "Бд"}},
|
||||
{"languages": {"ru": "Бж"}},
|
||||
{"languages": {"ru": "Бз"}},
|
||||
{"languages": {"ru": "Бл"}},
|
||||
|
|
@ -1,10 +1,9 @@
|
|||
# coding: utf-8
|
||||
import os
|
||||
|
||||
from ..from_list_generator import FromListGenerator
|
||||
from pynames.from_list_generator import FromListGenerator
|
||||
|
||||
FIXTURES_DIR = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
|
||||
class MongolianNamesGenerator(FromListGenerator):
|
||||
SOURCE = os.path.join(FIXTURES_DIR, 'mongolian_names_list.json')
|
||||
|
||||
|
|
|
|||
9
pynames/orc/__init__.py
Normal file
9
pynames/orc/__init__.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# coding: utf-8
|
||||
import os
|
||||
|
||||
from pynames.from_list_generator import FromListGenerator
|
||||
|
||||
FIXTURES_DIR = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
|
||||
class OrcNamesGenerator(FromListGenerator):
|
||||
SOURCE = os.path.join(FIXTURES_DIR, 'orc_names_list.json')
|
||||
|
|
@ -1 +1,4 @@
|
|||
# coding: utf-8
|
||||
|
||||
from pynames.tests.test import *
|
||||
from pynames.tests.test_generators import *
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
import os
|
||||
import unittest
|
||||
|
||||
from ..generators import Name, GENDER, LANGUAGE
|
||||
from ..from_list_generator import FromListGenerator
|
||||
from ..from_tables_generator import FromTablesGenerator
|
||||
from pynames.generators import Name, GENDER, LANGUAGE
|
||||
from pynames.from_list_generator import FromListGenerator
|
||||
from pynames.from_tables_generator import FromTablesGenerator
|
||||
|
||||
FIXTURES_DIR = os.path.join(os.path.dirname(__file__), 'fixtures')
|
||||
|
||||
|
|
@ -71,15 +71,15 @@ class TestFromListGenerator(unittest.TestCase):
|
|||
|
||||
for i in xrange(100):
|
||||
name = generator.get_name_simple(gender=GENDER.MALE, language=LANGUAGE.RU)
|
||||
self.assertTrue(name in self.NAMES_RU_MALE)
|
||||
self.assertTrue(name in self.NAMES_RU_MALE)
|
||||
|
||||
for i in xrange(100):
|
||||
name = generator.get_name_simple(gender=GENDER.FEMALE, language=LANGUAGE.RU)
|
||||
self.assertTrue(name in self.NAMES_RU_FEMALE)
|
||||
self.assertTrue(name in self.NAMES_RU_FEMALE)
|
||||
|
||||
for i in xrange(100):
|
||||
name = generator.get_name_simple(gender=GENDER.MALE, language=LANGUAGE.EN)
|
||||
self.assertTrue(name in self.NAMES_EN_MALE)
|
||||
self.assertTrue(name in self.NAMES_EN_MALE)
|
||||
|
||||
for i in xrange(100):
|
||||
name = generator.get_name_simple(gender=GENDER.FEMALE, language=LANGUAGE.EN)
|
||||
|
|
@ -120,15 +120,15 @@ class TestFromTablesGenerator(unittest.TestCase):
|
|||
|
||||
for i in xrange(100):
|
||||
name = generator.get_name_simple(gender=GENDER.MALE, language=LANGUAGE.RU)
|
||||
self.assertTrue(name in self.NAMES_RU_MALE)
|
||||
self.assertTrue(name in self.NAMES_RU_MALE)
|
||||
|
||||
for i in xrange(100):
|
||||
name = generator.get_name_simple(gender=GENDER.FEMALE, language=LANGUAGE.RU)
|
||||
self.assertTrue(name in self.NAMES_RU_FEMALE)
|
||||
self.assertTrue(name in self.NAMES_RU_FEMALE)
|
||||
|
||||
for i in xrange(100):
|
||||
name = generator.get_name_simple(gender=GENDER.MALE, language=LANGUAGE.EN)
|
||||
self.assertTrue(name in self.NAMES_EN_MALE)
|
||||
self.assertTrue(name in self.NAMES_EN_MALE)
|
||||
|
||||
for i in xrange(100):
|
||||
name = generator.get_name_simple(gender=GENDER.FEMALE, language=LANGUAGE.EN)
|
||||
|
|
|
|||
69
pynames/tests/test_generators.py
Normal file
69
pynames/tests/test_generators.py
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
# coding: utf-8
|
||||
|
||||
import os
|
||||
import importlib
|
||||
import unittest
|
||||
|
||||
import pynames
|
||||
|
||||
from pynames.generators import BaseGenerator, GENDER
|
||||
from pynames.from_list_generator import FromListGenerator
|
||||
from pynames.from_tables_generator import FromTablesGenerator
|
||||
|
||||
def get_all_generators():
|
||||
|
||||
submodules = []
|
||||
|
||||
root_dir = os.path.dirname(pynames.__file__)
|
||||
|
||||
for dirname in os.listdir(root_dir):
|
||||
module_path = os.path.join(root_dir, dirname)
|
||||
if not os.path.isdir(module_path):
|
||||
continue
|
||||
|
||||
try:
|
||||
module_name = 'pynames.%s' % dirname
|
||||
module = importlib.import_module(module_name)
|
||||
submodules.append(module)
|
||||
except Exception:
|
||||
continue
|
||||
|
||||
generators = []
|
||||
|
||||
for module in submodules:
|
||||
for generator in module.__dict__.values():
|
||||
if not isinstance(generator, type) or not issubclass(generator, BaseGenerator):
|
||||
continue
|
||||
|
||||
if generator in (FromTablesGenerator, FromListGenerator):
|
||||
continue
|
||||
|
||||
generators.append(generator)
|
||||
|
||||
return generators
|
||||
|
||||
|
||||
|
||||
class TestGenerators(unittest.TestCase):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
def create_test_method(generator_class):
|
||||
|
||||
def test_method(self):
|
||||
generator = generator_class()
|
||||
|
||||
self.assertTrue(generator.get_names_number() > 0)
|
||||
self.assertTrue(generator.get_names_number(GENDER.MALE) + generator.get_names_number(GENDER.FEMALE) >= generator.get_names_number())
|
||||
self.assertTrue(generator.get_name_simple())
|
||||
self.assertTrue(generator.get_name())
|
||||
|
||||
test_method.__name__ = 'test_%s' % generator.__name__
|
||||
|
||||
return test_method
|
||||
|
||||
|
||||
for generator in get_all_generators():
|
||||
test_method = create_test_method(generator)
|
||||
setattr(TestGenerators, test_method.__name__, test_method)
|
||||
Loading…
Add table
Add a link
Reference in a new issue