Esempio n. 1
0
        public void T06_RecordKeyDelimiterEscape()
        {
            string DELIM = new String(RecordKey.PRINTED_DELIMITER, 1);

            RecordKey key1 = new RecordKey();
            key1.appendKeyParts("1", "2", "3");
            Assert.AreEqual(3, key1.numParts());
            RecordKey dkey1 = new RecordKey(key1.encode());
            Assert.AreEqual(3, dkey1.numParts(), "dkey1 delimiter decode");

            RecordKey key2 = new RecordKey();
            key2.appendKeyPart("1" + DELIM + "2" + DELIM + "3");
            Assert.AreEqual(1, key2.numParts());
            RecordKey dkey2 = new RecordKey(key2.encode());
            Assert.AreEqual(1, dkey2.numParts(), "dkey2 delimiter decode");

            // key2 > key1
            Assert.AreEqual(1, key2.CompareTo(key1));
            Assert.AreEqual(-1, key1.CompareTo(key2));
        }
Esempio n. 2
0
        public void T02a_RecordKeySort()
        {
            String[] parts1 = { "test", "test2", "blah" };
            String[] parts2 = { "test", "test3", "blah" }; // > parts 1
            String[] parts3 = { "test", "test2a", "blah" }; // > parts 1 (testing per-segment sorting order!)

            RecordKey key1 = new RecordKey();
            key1.appendKeyParts(parts1);

            RecordKey key2 = new RecordKey();
            key2.appendKeyParts(parts2);

            RecordKey key3 = new RecordKey();
            key3.appendKeyParts(parts3);

            // key2 > key1
            Assert.True(key2.CompareTo(key1) > 0);
            Assert.True(key1.CompareTo(key2) < 0);

            // key3 > key1
            Assert.True(key3.CompareTo(key1) > 0);
            Assert.True(key1.CompareTo(key3) < 0);
        }
Esempio n. 3
0
        public void T02b_RecordKeyNesting()
        {
            String[] parts1 = { "aaaa", "bbbb" };
            String[] parts2 = { "xxxx", "yyyy", "zzzz" };

            RecordKey nestedkey = new RecordKey();
            nestedkey.appendKeyParts(parts2);

            RecordKey parentkey = new RecordKey();
            parentkey.appendKeyPart(parts1[0]); // "aaaa"
            parentkey.appendKeyPart(nestedkey.encode());  // (xxxx,yyyy,zzzz)
            parentkey.appendKeyPart(parts1[1]); // "bbbb"

            RecordKey decodedkey = new RecordKey(parentkey.encode());

            Assert.AreEqual(decodedkey.ToString(), parentkey.ToString(), "tostring versions of keys don't match");
            Assert.AreEqual(decodedkey.numParts(), parentkey.numParts(), "nested delimiters are changing number of keyparts");

            Assert.AreEqual(decodedkey, parentkey, "nested key encode/decode error");
        }
Esempio n. 4
0
        public void T01_RecordKey()
        {
            String[] parts1 = { "test", "test2", "blah" };

            {
                RecordKey key = new RecordKey();
                key.appendKeyParts(parts1);
                byte[] data = key.encode();

                // decode
                RecordKey key2 = new RecordKey(data);

                // verify tostring matches
                Assert.AreEqual(key.ToString(), key2.ToString());

                // verify comparison
                Assert.AreEqual(0, key.CompareTo(key2));

                // verify individual parts

            }

            // verify hierarchial sorting
            {
                RecordKey key1 = new RecordKey().appendParsedKey(".ROOT/GEN/000");
                RecordKey key2 = new RecordKey().appendParsedKey(".ROOT/GEN/000/</aaaa");   // ord('<') -> 60
                RecordKey key3 = new RecordKey().appendParsedKey(".ROOT/GEN/000/>");     // ord('>') -> 62
                RecordKey key4 = new RecordKey().appendParsedKey(".ROOT/GEN");

                Assert.AreEqual(true, ">".CompareTo("<") > 0, "expect '>' > '<'");

                Assert.AreEqual(true, key1.CompareTo(key2) < 0, "prefix key should be considered earlier");
                Assert.AreEqual(true, key3.CompareTo(key2) > 0, "but parts are considered individually before using length ord('_') > ord('<')");

                IComparable<RecordKey> prefixend = RecordKey.AfterPrefix(key1);
                Assert.AreEqual(true, prefixend.CompareTo(key1) > 0, "prefix1");
                Assert.AreEqual(true, prefixend.CompareTo(key2) > 0, "prefix2");
                Assert.AreEqual(true, prefixend.CompareTo(key3) > 0, "prefix3");
                Assert.AreEqual(true, prefixend.CompareTo(key4) > 0, "prefix4");

            }
        }