def _testLengthsImpl(self, first, power): num = 10 ** power combined = 0 for n in range(first, first + num): combined = combined + len(number.repr(n)) prefix = len(number.repr(first)) self.assertEquals((combined, num), number.lengthUnder(power, prefix))
def _testLengthsImpl(self, first, power): num = 10**power combined = 0 for n in range(first, first + num): combined = combined + len(number.repr(n)) prefix = len(number.repr(first)) self.assertEquals((combined, num), number.lengthUnder(power, prefix))
def _testListImpl(self, power): num = 10**power expected = [number.repr(n) for n in range(num)] expected.sort() listener = number.ListMaker(num) number.traverse("", power, listener) self.assertEquals(expected, listener.seen)
def _testListImpl(self, power): num = 10 ** power expected = [number.repr(n) for n in range(num)] expected.sort() listener = number.ListMaker(num) number.traverse("", power, listener) self.assertEquals(expected, listener.seen)
def testRepr(self): self.assertEquals("", number.repr(0)) self.assertEquals("eight", number.repr(8)) self.assertEquals("thirtynine", number.repr(39)) self.assertEquals("fourhundredeleven", number.repr(411)) self.assertEquals("fivethousandtwohundredseven", number.repr(5207)) self.assertEquals("twohundredfifteenmillionone", number.repr(215000001)) self.assertEquals("thirteenbilliontwentysix", number.repr(13000000026))
def _testListImpl(self, power): num = 1000**power limit = min(num, 1000) listener = number.ListMaker(limit) number.traverse("", power, listener) if limit == num: expected = [number.repr(n) for n in range(num)] expected.sort() self.assertEquals(expected, listener.seen) else: # Just check the number we have are in sequence self.assertEquals(limit, len(listener.seen)) for i in range(1, limit): self.assertTrue(listener.seen[i - 1] < listener.seen[i])
def _testListImpl(self, power): num = 1000 ** power limit = min(num, 1000) listener = number.ListMaker(limit) number.traverse("", power, listener) if limit == num: expected = [number.repr(n) for n in range(num)] expected.sort() self.assertEquals(expected, listener.seen) else: # Just check the number we have are in sequence self.assertEquals(limit, len(listener.seen)) for i in range(1, limit): self.assertTrue(listener.seen[i-1] < listener.seen[i])
def _testFindImpl(self, power, i): num = 10**power all = [number.repr(n) for n in range(num)] all.sort() expectedChar = ("".join(all))[i] count = 0 for item in all: if i - count >= len(item): count = count + len(item) else: expectedWord = item self.assertEqual(expectedChar, item[i - count]) break listener = number.IthCharFinder(i) number.traverse("", power, listener) self.assertEquals(expectedChar, listener.foundChar) self.assertEquals(expectedWord, listener.foundWord)
def _testFindImpl(self, power, i): num = 10 ** power all = [number.repr(n) for n in range(num)] all.sort() expectedChar = ("".join(all))[i] count = 0 for item in all: if i - count >= len(item): count = count + len(item) else: expectedWord = item self.assertEqual(expectedChar, item[i - count]) break listener = number.IthCharFinder(i) number.traverse("", power, listener) self.assertEquals(expectedChar, listener.foundChar) self.assertEquals(expectedWord, listener.foundWord)
def testConvenienceFuncs(self): expected = [number.repr(n) for n in range(10**4)] expected.sort() self.assertEquals(expected[:100], number.makeList(100)) char, word, index = number.findIth(999) self.assertEquals("".join(expected)[999], char)
def testRepr(self): self.assertEquals("", number.repr(0)) self.assertEquals("eight", number.repr(8)) self.assertEquals("threetennine", number.repr(39)) self.assertEquals("fourhundredonetenone", number.repr(411)) self.assertEquals("fivethousandtwohundredseven", number.repr(5207))
def testConvenienceFuncs(self): expected = [number.repr(n) for n in range(10 ** 4)] expected.sort() self.assertEquals(expected[:100], number.makeList(100)) char, word, index = number.findIth(999) self.assertEquals("".join(expected)[999], char)