From a599e3ba1b72702f467c04b886c0584ebc3d5d27 Mon Sep 17 00:00:00 2001 From: Tiendil Date: Wed, 18 Jan 2012 23:43:37 +0300 Subject: [PATCH] prepair package --- pynames/tests/__init__.py | 1 + .../fixtures/test_from_list_generator.json | 0 .../fixtures/test_from_tables_generator.json | 0 pynames/tests/test.py | 135 ++++++++++++++++++ setup.py | 16 +++ 5 files changed, 152 insertions(+) create mode 100644 pynames/tests/__init__.py rename pynames/{ => tests}/fixtures/test_from_list_generator.json (100%) rename pynames/{ => tests}/fixtures/test_from_tables_generator.json (100%) create mode 100644 pynames/tests/test.py create mode 100644 setup.py diff --git a/pynames/tests/__init__.py b/pynames/tests/__init__.py new file mode 100644 index 0000000..57d631c --- /dev/null +++ b/pynames/tests/__init__.py @@ -0,0 +1 @@ +# coding: utf-8 diff --git a/pynames/fixtures/test_from_list_generator.json b/pynames/tests/fixtures/test_from_list_generator.json similarity index 100% rename from pynames/fixtures/test_from_list_generator.json rename to pynames/tests/fixtures/test_from_list_generator.json diff --git a/pynames/fixtures/test_from_tables_generator.json b/pynames/tests/fixtures/test_from_tables_generator.json similarity index 100% rename from pynames/fixtures/test_from_tables_generator.json rename to pynames/tests/fixtures/test_from_tables_generator.json diff --git a/pynames/tests/test.py b/pynames/tests/test.py new file mode 100644 index 0000000..183581a --- /dev/null +++ b/pynames/tests/test.py @@ -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) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..9882a18 --- /dev/null +++ b/setup.py @@ -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' +)