def testSplitByteStringPropertySmallRange(self): """User specified a small range. Small range has few splitpoints comparing to shards. So property_range._STRING_LENGTH should kick in to provide more precision. """ property_range._ALPHABET = "ab" property_range._STRING_LENGTH = 3 start = "aa" "a" end = "aa" "b" # With "aa" as commom prefix. we are really doing a split on this space. # space = ["a", "aa", "aaa", "aab", "ab", "aba", "abb", "b"] result = property_range._split_byte_string_property( start, end, 2, True, False) self.assertEquals(["aa" "a", "aa" "ab", "aa" "b"], result) result = property_range._split_byte_string_property( start, end, 3, True, False) self.assertEquals(["aa" "a", "aa" "aaa", "aa" "aba", "aa" "b"], result) result = property_range._split_byte_string_property( start, end, 4, True, False) self.assertEquals( ["aa" "a", "aa" "aaa", "aa" "ab", "aa" "aba", "aa" "b"], result)
def testSplitByteStringPropertySmallRange(self): """User specified a small range. Small range has few splitpoints comparing to shards. So property_range._STRING_LENGTH should kick in to provide more precision. """ property_range._ALPHABET = "ab" property_range._STRING_LENGTH = 3 start = "aa" "a" end = "aa" "b" # With "aa" as commom prefix. we are really doing a split on this space. # space = ["a", "aa", "aaa", "aab", "ab", "aba", "abb", "b"] result = property_range._split_byte_string_property(start, end, 2, True, False) self.assertEquals(["aa" "a", "aa" "ab", "aa" "b"], result) result = property_range._split_byte_string_property(start, end, 3, True, False) self.assertEquals(["aa" "a", "aa" "aaa", "aa" "aba", "aa" "b"], result) result = property_range._split_byte_string_property(start, end, 4, True, False) self.assertEquals(["aa" "a", "aa" "aaa", "aa" "ab", "aa" "aba", "aa" "b"], result)
def testSplitByteStringPropertyInputWithSuffix(self): """Verify suffix is correctly appended.""" property_range._ALPHABET = "ab" property_range._STRING_LENGTH = 3 # With "aa" as commom prefix. # "bbb" and "aaa" are suffixes. start = "aa" "aaa" "bbb" end = "aa" "baa" "aaa" # we are doing a split on this space. # space = ["aaa", "aab", "ab", "aba", "abb", "b", "ba", "baa", "bab"] result = property_range._split_byte_string_property(start, end, 2, True, False) self.assertEquals([start, "aa" "abb", end], result) result = property_range._split_byte_string_property(start, end, 2, True, True) self.assertEquals([start, "aa" "abb", "aa" "bab" "aaa"], result)
def testSplitByteStringPropertyInputWithSuffix(self): """Verify suffix is correctly appended.""" property_range._ALPHABET = "ab" property_range._STRING_LENGTH = 3 # With "aa" as commom prefix. # "bbb" and "aaa" are suffixes. start = "aa" "aaa" "bbb" end = "aa" "baa" "aaa" # we are doing a split on this space. # space = ["aaa", "aab", "ab", "aba", "abb", "b", "ba", "baa", "bab"] result = property_range._split_byte_string_property( start, end, 2, True, False) self.assertEquals([start, "aa" "abb", end], result) result = property_range._split_byte_string_property( start, end, 2, True, True) self.assertEquals([start, "aa" "abb", "aa" "bab" "aaa"], result)
def testSplitByteStringPropertyComplexLargeRange(self): """User specified a large range. Large range has lots of splitpoints so the split looks intuitive. """ property_range._ALPHABET = "ab" start = "aa" end = "aa" "bbb" # With "aa" as commom prefix. we are really doing a split on this space. # space = ["", "a", "aa", "aaa", "aab", "ab", "aba", "abb", "b", "ba", # "baa", "bab", "bb", "bba", "bbb"] result = property_range._split_byte_string_property(start, end, 2, True, False) self.assertEquals(["aa", "aaabb", "aabbb"], result) result = property_range._split_byte_string_property(start, end, 3, True, False) self.assertEquals(["aa", "aaab", "aaba", "aabbb"], result) result = property_range._split_byte_string_property(start, end, 4, True, False) self.assertEquals(["aa", "aaaab", "aaabb", "aabab", "aabbb"], result)
def testSplitByteStringPropertyComplexLargeRange(self): """User specified a large range. Large range has lots of splitpoints so the split looks intuitive. """ property_range._ALPHABET = "ab" start = "aa" end = "aa" "bbb" # With "aa" as commom prefix. we are really doing a split on this space. # space = ["", "a", "aa", "aaa", "aab", "ab", "aba", "abb", "b", "ba", # "baa", "bab", "bb", "bba", "bbb"] result = property_range._split_byte_string_property( start, end, 2, True, False) self.assertEquals(["aa", "aaabb", "aabbb"], result) result = property_range._split_byte_string_property( start, end, 3, True, False) self.assertEquals(["aa", "aaab", "aaba", "aabbb"], result) result = property_range._split_byte_string_property( start, end, 4, True, False) self.assertEquals(["aa", "aaaab", "aaabb", "aabab", "aabbb"], result)
def testSplitByteStringPropertySimple(self): start = "a\x01" end = "a\x05" # Test combinations of inclusion and exclusion of start and end. # This should produce intuitive splitting. result = property_range._split_byte_string_property( start, end, 4, True, False) self.assertEquals(["a\x01", "a\x02", "a\x03", "a\x04", "a\x05"], result) property_range._STRING_LENGTH = 1 result = property_range._split_byte_string_property( start, end, 4, False, True) self.assertEquals(["a\x02", "a\x03", "a\x04", "a\x05", "a\x06"], result) result = property_range._split_byte_string_property( start, end, 5, True, True) self.assertEquals( ["a\x01", "a\x02", "a\x03", "a\x04", "a\x05", "a\x06"], result) result = property_range._split_byte_string_property( start, end, 3, False, False) self.assertEquals(["a\x02", "a\x03", "a\x04", "a\x05"], result) # points >> shards # 100 in decimal end = "a\x64" result = property_range._split_byte_string_property( start, end, 3, True, True) # ord('"') = 34 # ord("D") = 68 # ord("e") = 101 self.assertEquals(["a\x01", "a\"", "aD", "ae"], result) # Tricky edge cases. end = "a\x01" result = property_range._split_byte_string_property( start, end, 6, True, True) self.assertEquals(["a\x01", "a\x02"], result) self.assertRaises(ValueError, property_range._split_byte_string_property, start, end, 6, False, True)
def testSplitByteStringPropertySimple(self): start = "a\x01" end = "a\x05" # Test combinations of inclusion and exclusion of start and end. # This should produce intuitive splitting. result = property_range._split_byte_string_property(start, end, 4, True, False) self.assertEquals(["a\x01", "a\x02", "a\x03", "a\x04", "a\x05"], result) property_range._STRING_LENGTH = 1 result = property_range._split_byte_string_property(start, end, 4, False, True) self.assertEquals(["a\x02", "a\x03", "a\x04", "a\x05", "a\x06"], result) result = property_range._split_byte_string_property(start, end, 5, True, True) self.assertEquals(["a\x01", "a\x02", "a\x03", "a\x04", "a\x05", "a\x06"], result) result = property_range._split_byte_string_property(start, end, 3, False, False) self.assertEquals(["a\x02", "a\x03", "a\x04", "a\x05"], result) # points >> shards # 100 in decimal end = "a\x64" result = property_range._split_byte_string_property(start, end, 3, True, True) # ord('"') = 34 # ord("D") = 68 # ord("e") = 101 self.assertEquals(["a\x01", "a\"", "aD", "ae"], result) # Tricky edge cases. end = "a\x01" result = property_range._split_byte_string_property(start, end, 6, True, True) self.assertEquals(["a\x01", "a\x02"], result) self.assertRaises(ValueError, property_range._split_byte_string_property, start, end, 6, False, True)