Ejemplo n.º 1
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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)