diff options
| author | Brant Knudson <bknudson@us.ibm.com> | 2015-12-09 13:12:01 -0600 |
|---|---|---|
| committer | Robert Collins <robertc@robertcollins.net> | 2016-02-29 12:28:49 +1300 |
| commit | 4d4bc6f384a920daf1710101ac2a5dc68c49fc01 (patch) | |
| tree | df84d2c5241ff2ec1cf62ed67d9aa4dee946a8a6 /testtools/tests | |
| parent | 11e50d3fc2e89b902e1b464f0a60bab2a1620442 (diff) | |
| download | testtools-4d4bc6f384a920daf1710101ac2a5dc68c49fc01.tar.gz | |
Add unique_text_generator
This provides a way to make it easier to test with
unicode text strings. The value returned will be like
TestCase.getUniqueString but the value is six.text_type
and contains unicode.
Change-Id: I3f144e1294a801b23793f7a2520465e15f3a5222
Diffstat (limited to 'testtools/tests')
| -rw-r--r-- | testtools/tests/test_testcase.py | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/testtools/tests/test_testcase.py b/testtools/tests/test_testcase.py index 9153680..f0aa881 100644 --- a/testtools/tests/test_testcase.py +++ b/testtools/tests/test_testcase.py @@ -7,6 +7,8 @@ from pprint import pformat import sys import unittest +import six + from testtools import ( DecorateTestCaseResult, ErrorHolder, @@ -1117,7 +1119,7 @@ class TestExpectedFailure(TestWithDetails): class TestUniqueFactories(TestCase): - """Tests for getUniqueString and getUniqueInteger.""" + """Tests for getUniqueString, getUniqueInteger, unique_text_generator.""" run_test_with = FullStackRunTest @@ -1145,6 +1147,51 @@ class TestUniqueFactories(TestCase): name_two = self.getUniqueString('bar') self.assertThat(name_two, Equals('bar-2')) + def test_unique_text_generator(self): + # unique_text_generator yields the prefix's id followed by unique + # unicode string. + prefix = self.getUniqueString() + unique_text_generator = testcase.unique_text_generator(prefix) + first_result = next(unique_text_generator) + self.assertEqual(six.text_type('%s-%s') % (prefix, _u('\u1e00')), + first_result) + # The next value yielded by unique_text_generator is different. + second_result = next(unique_text_generator) + self.assertEqual(six.text_type('%s-%s') % (prefix, _u('\u1e01')), + second_result) + + def test_mods(self): + # given a number and max, generate a list that's the mods. + # The list should contain no numbers >= mod + self.assertEqual([0], list(testcase._mods(0, 5))) + self.assertEqual([1], list(testcase._mods(1, 5))) + self.assertEqual([2], list(testcase._mods(2, 5))) + self.assertEqual([3], list(testcase._mods(3, 5))) + self.assertEqual([4], list(testcase._mods(4, 5))) + self.assertEqual([0, 1], list(testcase._mods(5, 5))) + self.assertEqual([1, 1], list(testcase._mods(6, 5))) + self.assertEqual([2, 1], list(testcase._mods(7, 5))) + self.assertEqual([0, 2], list(testcase._mods(10, 5))) + self.assertEqual([0, 0, 1], list(testcase._mods(25, 5))) + self.assertEqual([1, 0, 1], list(testcase._mods(26, 5))) + self.assertEqual([1], list(testcase._mods(1, 100))) + self.assertEqual([0, 1], list(testcase._mods(100, 100))) + self.assertEqual([0, 10], list(testcase._mods(1000, 100))) + + def test_unique_text(self): + self.assertEqual( + u'\u1e00', + testcase._unique_text(base_cp=0x1e00, cp_range=5, index=0)) + self.assertEqual( + u'\u1e01', + testcase._unique_text(base_cp=0x1e00, cp_range=5, index=1)) + self.assertEqual( + u'\u1e00\u1e01', + testcase._unique_text(base_cp=0x1e00, cp_range=5, index=5)) + self.assertEqual( + u'\u1e03\u1e02\u1e01', + testcase._unique_text(base_cp=0x1e00, cp_range=5, index=38)) + class TestCloneTestWithNewId(TestCase): """Tests for clone_test_with_new_id.""" |
