summaryrefslogtreecommitdiff
path: root/testtools/tests
diff options
context:
space:
mode:
authorBrant Knudson <bknudson@us.ibm.com>2015-12-09 13:12:01 -0600
committerRobert Collins <robertc@robertcollins.net>2016-02-29 12:28:49 +1300
commit4d4bc6f384a920daf1710101ac2a5dc68c49fc01 (patch)
treedf84d2c5241ff2ec1cf62ed67d9aa4dee946a8a6 /testtools/tests
parent11e50d3fc2e89b902e1b464f0a60bab2a1620442 (diff)
downloadtesttools-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.py49
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."""