1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
from unittest import TestCase
from unittest.mock import MagicMock, patch
from flask_seeder.generator import String
class TestStringGenerator(TestCase):
def setUp(self):
self.generator = String()
def test_integer_range_produce_character_from_valid_range(self):
m_rnd = MagicMock()
self.generator.rnd = m_rnd
self.generator.pattern = "[4-6]"
self.generator.generate()
m_rnd.choice.assert_called_once_with("456")
def test_string_range_produce_character_from_valid_range(self):
m_rnd = MagicMock()
self.generator.rnd = m_rnd
self.generator.pattern = "[i-o]"
self.generator.generate()
m_rnd.choice.assert_called_once_with("ijklmno")
def test_integer_range_pattern(self):
self.generator.pattern = "[0-9]"
string = self.generator.generate()
self.assertRegex(string, r"^\d$")
def test_string_range_pattern(self):
self.generator.pattern = "[a-z]"
string = self.generator.generate()
self.assertRegex(string, "^[a-z]$")
def test_range_pattern_quantifier(self):
self.generator.pattern = "[0-9]{5}"
string = self.generator.generate()
self.assertRegex(string, r"^\d{5}$")
def test_multiple_range_patterns(self):
self.generator.pattern = "[0-9][a-c]"
string = self.generator.generate()
self.assertRegex(string, r"^\d[a-c]$")
def test_multiple_range_patterns_with_quantifiers(self):
self.generator.pattern = "[0-9]{4}[x-z]{2}"
string = self.generator.generate()
self.assertRegex(string, r"^\d{4}[x-z]{2}$")
def test_integer_character_code(self):
self.generator.pattern = r"\d"
string = self.generator.generate()
self.assertRegex(string, r"^\d$")
def test_string_character_code(self):
self.generator.pattern = r"\c"
string = self.generator.generate()
self.assertRegex(string, "^[a-zA-Z]$")
def test_character_code_with_quantifier(self):
self.generator.pattern = r"\d{3}"
string = self.generator.generate()
self.assertRegex(string, r"^\d{3}$")
def test_oneof_pattern(self):
self.generator.pattern = r"[aoueiy]"
string = self.generator.generate()
self.assertRegex(string, "^[aoueiy]$")
def test_oneof_pattern_with_quantifier(self):
self.generator.pattern = r"[aoueiy]{3}"
string = self.generator.generate()
self.assertRegex(string, "^[aoueiy]{3}$")
def test_complex_string_generation(self):
self.generator.pattern = r"abc\d{4}[i-m]{2}[qwerty]xyz"
string = self.generator.generate()
self.assertRegex(string, r"^abc\d{4}[i-m]{2}[qwerty]xyz$")
def test_charcode_with_quantifier_range(self):
self.generator.pattern = r"\c{1,2}"
string = self.generator.generate()
self.assertRegex(string, "[a-zA-Z]{1,2}")
def test_invalid_charcode_raise_ValueError(self):
self.generator.pattern = r"\q"
with self.assertRaises(ValueError):
self.generator.generate()
def test_string_group(self):
self.generator.pattern = r"(one|two)"
string = self.generator.generate()
self.assertRegex(string, r"(one|two)")
def test_number(self):
self.generator.pattern = r"123"
string = self.generator.generate()
self.assertEqual(string, "123")
|