prepair package

This commit is contained in:
Tiendil 2012-01-18 23:43:37 +03:00
parent 57eb8209c3
commit a599e3ba1b
5 changed files with 152 additions and 0 deletions

View file

@ -0,0 +1 @@
# coding: utf-8

135
pynames/tests/test.py Normal file
View file

@ -0,0 +1,135 @@
# coding: utf-8
import os
import unittest
from ..generators import Name, GENDER, LANGUAGE
from ..from_list_generator import FromListGenerator
from ..from_tables_generator import FromTablesGenerator
FIXTURES_DIR = os.path.join(os.path.dirname(__file__), 'fixtures')
class TestName(unittest.TestCase):
def test_base(self):
name = Name('ru', {'genders': {'m': {'ru': 'ru_name'}}})
self.assertEqual(unicode(name), 'ru_name')
self.assertEqual(name.get_for(GENDER.MALE, LANGUAGE.RU), 'ru_name')
self.assertEqual(name.get_for(GENDER.MALE), 'ru_name')
def test_genders(self):
name = Name('ru', {'genders': {'m': {'ru': 'ru_m_name'},
'f': {'ru': 'ru_f_name'}}})
self.assertEqual(unicode(name), 'ru_m_name')
self.assertEqual(name.get_for(GENDER.MALE, LANGUAGE.RU), 'ru_m_name')
self.assertEqual(name.get_for(GENDER.FEMALE, LANGUAGE.RU), 'ru_f_name')
def test_languages(self):
name = Name('ru', {'genders': {'m': {'ru': 'ru_m_name',
'en': 'en_m_name'},
'f': {'ru': 'ru_f_name',
'en': 'en_f_name'}}})
self.assertEqual(unicode(name), 'ru_m_name')
self.assertEqual(name.get_for(GENDER.MALE, LANGUAGE.RU), 'ru_m_name')
self.assertEqual(name.get_for(GENDER.FEMALE, LANGUAGE.RU), 'ru_f_name')
self.assertEqual(name.get_for(GENDER.MALE, LANGUAGE.EN), 'en_m_name')
self.assertEqual(name.get_for(GENDER.FEMALE, LANGUAGE.EN), 'en_f_name')
self.assertEqual(name.get_for(GENDER.MALE), 'ru_m_name')
self.assertEqual(name.get_for(GENDER.FEMALE), 'ru_f_name')
class TestFromListGenerator(unittest.TestCase):
class TestGenerator(FromListGenerator):
SOURCE = os.path.join(FIXTURES_DIR, 'test_from_list_generator.json')
NAMES_RU_MALE = ['ru_m_name_1', 'ru_m_name_4', 'ru_m_name_5', 'ru_m_name_6']
NAMES_EN_MALE = ['en_m_name_1', 'en_m_name_4', 'en_m_name_5', 'en_m_name_6']
NAMES_RU_FEMALE = ['ru_f_name_2', 'ru_f_name_3', 'ru_f_name_4', 'ru_f_name_5', 'ru_f_name_6']
NAMES_EN_FEMALE = ['en_f_name_2', 'en_f_name_3', 'en_f_name_4', 'en_f_name_5', 'en_f_name_6']
def test_not_derived(self):
self.assertRaises(NotImplementedError, FromListGenerator)
def test_wrong_path(self):
class WrongGenerator(FromListGenerator):
SOURCE = ''
self.assertRaises(IOError, WrongGenerator)
def test_base(self):
generator = self.TestGenerator()
self.assertEqual(generator.get_names_number(), 6)
self.assertTrue(generator.get_name_simple() in self.NAMES_RU_MALE)
def test_male_female_selection(self):
generator = self.TestGenerator()
self.assertEqual(generator.get_names_number(genders=[GENDER.MALE]), 4)
self.assertEqual(generator.get_names_number(genders=[GENDER.FEMALE]), 5)
def test_get_name(self):
generator = self.TestGenerator()
for i in xrange(100):
name = generator.get_name_simple(gender=GENDER.MALE, language=LANGUAGE.RU)
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)
for i in xrange(100):
name = generator.get_name_simple(gender=GENDER.MALE, language=LANGUAGE.EN)
self.assertTrue(name in self.NAMES_EN_MALE)
for i in xrange(100):
name = generator.get_name_simple(gender=GENDER.FEMALE, language=LANGUAGE.EN)
self.assertTrue(name in self.NAMES_EN_FEMALE)
class TestFromTablesGenerator(unittest.TestCase):
class TestGenerator(FromTablesGenerator):
SOURCE = os.path.join(FIXTURES_DIR, 'test_from_tables_generator.json')
NAMES_RU_MALE = ["T1RU1_m_ru_1", "T1RU2_m_ru_1", "T1RU3_m_ru_1", "T1RU1_m_ru_2", "T1RU2_m_ru_2", "T1RU3_m_ru_2", "T1RU1_m_ru_1'_f_ru_1", "T1RU2_m_ru_1'_f_ru_1", "T1RU3_m_ru_1'_f_ru_1", "T1RU1_m_ru_2'_f_ru_1", "T1RU2_m_ru_2'_f_ru_1", "T1RU3_m_ru_2'_f_ru_1"]
NAMES_EN_MALE = ["T1EN1_m_en_1", "T1EN2_m_en_1", "T1EN3_m_en_1", "T1EN1_m_en_2", "T1EN2_m_en_2", "T1EN3_m_en_2", "T1EN1_m_en_1'_f_en_1", "T1EN2_m_en_1'_f_en_1", "T1EN3_m_en_1'_f_en_1", "T1EN1_m_en_2'_f_en_1", "T1EN2_m_en_2'_f_en_1", "T1EN3_m_en_2'_f_en_1"]
NAMES_RU_FEMALE = ["T1RU1_f_ru_1", "T1RU2_f_ru_1", "T1RU3_f_ru_1", "T1RU1_m_ru_1'_f_ru_1", "T1RU2_m_ru_1'_f_ru_1", "T1RU3_m_ru_1'_f_ru_1", "T1RU1_m_ru_2'_f_ru_1", "T1RU2_m_ru_2'_f_ru_1", "T1RU3_m_ru_2'_f_ru_1"]
NAMES_EN_FEMALE = ["T1EN1_f_en_1", "T1EN2_f_en_1", "T1EN3_f_en_1", "T1EN1_m_en_1'_f_en_1", "T1EN2_m_en_1'_f_en_1", "T1EN3_m_en_1'_f_en_1", "T1EN1_m_en_2'_f_en_1", "T1EN2_m_en_2'_f_en_1", "T1EN3_m_en_2'_f_en_1"]
def test_not_derived(self):
self.assertRaises(NotImplementedError, FromTablesGenerator)
def test_wrong_path(self):
class WrongGenerator(FromTablesGenerator):
SOURCE = ''
self.assertRaises(IOError, WrongGenerator)
def test_base(self):
generator = self.TestGenerator()
self.assertEqual(generator.get_names_number(), 15)
self.assertTrue(generator.get_name_simple() in self.NAMES_EN_MALE)
def test_male_female_selection(self):
generator = self.TestGenerator()
self.assertEqual(generator.get_names_number(genders=[GENDER.MALE]), 12)
self.assertEqual(generator.get_names_number(genders=[GENDER.FEMALE]), 9)
self.assertEqual(generator.get_names_number(), 15)
def test_get_name(self):
generator = self.TestGenerator()
for i in xrange(100):
name = generator.get_name_simple(gender=GENDER.MALE, language=LANGUAGE.RU)
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)
for i in xrange(100):
name = generator.get_name_simple(gender=GENDER.MALE, language=LANGUAGE.EN)
self.assertTrue(name in self.NAMES_EN_MALE)
for i in xrange(100):
name = generator.get_name_simple(gender=GENDER.FEMALE, language=LANGUAGE.EN)
self.assertTrue(name in self.NAMES_EN_FEMALE)

16
setup.py Normal file
View file

@ -0,0 +1,16 @@
# coding: utf-8
import setuptools
setuptools.setup(
name = 'Pynames',
version = '0.1.0',
author = 'Aleksey Yeletsky',
author_email = 'a.eletsky@gmail.com',
packages = setuptools.find_packages(),
url = 'https://github.com/Tiendil/pynames',
license = 'LICENSE',
description = "characters' name generation library",
long_description = open('README.md').read(),
include_package_data = True, # setuptools-git MUST be installed
test_suite = 'tests'
)