def test_generate_by_pattern(self): generator = RandomNameGenerator({ 'all': { 'type': 'cartesian', 'lists': ['size', 'color', 'fruit'], }, 'justcolor': { 'generator': True, 'type': 'cartesian', 'lists': ['color', 'fruit'], }, 'size': { 'type': 'words', 'words': ['small', 'large'] }, 'color': { 'type': 'words', 'words': ['green', 'yellow'] }, 'fruit': { 'type': 'words', 'words': ['apple', 'banana'] }, }) with patch('coolname.impl.randrange', return_value=0): self.assertEqual(generator.generate_slug(), 'small-green-apple') self.assertEqual(generator.generate_slug('justcolor'), 'green-apple')
def test_max_slug_length(self): generator = RandomNameGenerator({ 'all': {'type': 'cartesian', 'max_slug_length': 9, 'lists': ['one', 'two']}, 'one': {'type': 'words', 'words': ['big', 'small']}, 'two': {'type': 'words', 'words': ['cat', 'tiger']}, }) self.assertEqual(set(generator.generate_slug() for i in range(0, 100)), set(['big-cat', 'big-tiger', 'small-cat']))
def test_dump_generator(self): config = { 'all': { 'type': 'words', 'words': ['one', 'two', 'three'] } } generator = RandomNameGenerator(config) stream = io.StringIO() generator._dump(stream) self.assertEqual(stream.getvalue(), "WordList(['one', 'two', 'three'], len=3)\n")
def test_create_from_file(self, load_config_mock, *args): load_config_mock.return_value = { 'all': { 'type': 'cartesian', 'lists': ['number', 'number'] }, 'number': { 'type': 'words', 'words': [str(x) for x in range(0, 10)] } } generator = RandomNameGenerator(load_config('dummy')) with patch('coolname.impl.randrange', return_value=35): self.assertEqual(generator.generate_slug(), '3-5')
def test_unicode_config(self): generator = RandomNameGenerator({ u('all'): { u('type'): u('cartesian'), u('lists'): [u('прилагательное'), u('существительное')] }, u('прилагательное'): { u('type'): u('words'), u('words'): [u('белый'), u('черный')] }, u('существительное'): { u('type'): u('words'), u('words'): [u('круг'), u('квадрат')] } }) with patch('coolname.impl.randrange', side_effect=partial(next, cycle(iter(range(4))))): self.assertEqual(generator.generate_slug(), u('белый-круг')) self.assertEqual(generator.generate_slug(), u('белый-квадрат')) self.assertEqual(generator.generate_slug(), u('черный-круг')) self.assertEqual(generator.generate(), [u('черный'), u('квадрат')])
def test_avoid_similar_words(self): generator = RandomNameGenerator({ 'all': { 'type': 'cartesian', 'lists': ['w1', 'w2'], }, 'w1': { 'type': 'words', 'words': ['brave', 'agile'] }, 'w2': { 'type': 'words', 'words': ['bravery', 'brass', 'agility', 'age'] } }) with patch('coolname.impl.randrange', side_effect=partial(next, cycle(iter(range(9))))): self.assertEqual(generator.generate_slug(), 'brave-brass') self.assertEqual(generator.generate_slug(), 'brave-agility') self.assertEqual(generator.generate_slug(), 'brave-age') self.assertEqual(generator.generate_slug(), 'agile-bravery') self.assertEqual(generator.generate_slug(), 'agile-brass') self.assertEqual(generator.generate_slug(), 'agile-age') self.assertEqual(generator.generate_slug(), 'brave-brass')
def test_avoid_repeating(self): generator = RandomNameGenerator({ 'all': { 'type': 'cartesian', 'lists': ['adjective', 'of', 'noun'], }, 'adjective': { 'type': 'words', 'words': ['one', 'two'] }, 'of': { 'type': 'const', 'value': 'of' }, 'noun': { 'type': 'words', 'words': ['one', 'two'] } }) with patch('coolname.impl.randrange', side_effect=partial(next, cycle(iter([0, 1, 2, 3])))): self.assertEqual(generator.generate_slug(), 'one-of-two') self.assertEqual(generator.generate_slug(), 'two-of-one') self.assertEqual(generator.generate_slug(), 'one-of-two')