Пример #1
0
        public void TestFromRqlIds()
        {
            var rqlIds = new RqlId[]
            {
                new RqlId("$0"),
                new RqlId("$0"),
                new RqlId("$1F2mgA9gNyZtkTIf6"),
                new RqlId("$1Ad4Xro7A6yeAl77J")  // This one caused problems
            };

            var objIds = new ObjectId[]
            {
                ObjectId.Empty,
                new ObjectId(0, 0, 0, 0),
                new ObjectId("8000000000006400c800ffff"),
                new ObjectId("53d5244dec98e866c0d800f4")
            };

            for (int i = 0; i < rqlIds.Length; i++)
            {
                var objId  = rqlIds[i].ToObjectId();
                var rqlId  = objId.ToRqlId();
                var objId2 = rqlId.ToObjectId();

                Assert.AreEqual(rqlIds[i], rqlId, "ObjectId value {0}", i);
                Assert.AreEqual(objIds[i], objId2, "RqlId value {0}", i);
            }
        }
Пример #2
0
        public void TestFromObjectIds()
        {
            var objIds = new ObjectId[]
            {
                ObjectId.Empty,
                new ObjectId(0, 0, 0, 0),
                new ObjectId(0, 100, 200, 65535),
                new ObjectId(int.MaxValue, 0xffffff, short.MaxValue, 0xffffff),
            };

            var rqlIds = new RqlId[]
            {
                new RqlId("$0"),
                new RqlId("$0"),
                new RqlId("$1F2mgA9gNyZtkTId2"),
                new RqlId("$1F2si9jk4p8AzQuuP")
            };

            for (int i = 0; i < objIds.Length; i++)
            {
                var rqlId  = objIds[i].ToRqlId();
                var objId  = rqlId.ToObjectId();
                var rqlId2 = objId.ToRqlId();

                Assert.AreEqual(objIds[i], objId, "ObjectId value {0}", i);
                Assert.AreEqual(rqlIds[i], rqlId2, "RqlId value {0}", i);
            }
        }
Пример #3
0
        public static ObjectId ToObjectId(this RqlId rqlId)
        {
            var bytes = rqlId.ToByteArray();

            byte[] tmp;

            if (bytes.Length > 12)
            {
                tmp = new byte[12];
                Array.Copy(bytes, tmp, 12);
            }
            else if (bytes.Length < 12)
            {
                tmp = new byte[12];
                Array.Copy(bytes, tmp, bytes.Length);
                for (int i = bytes.Length; i < 12; i++)
                {
                    tmp[i] = 0;
                }
            }
            else
            {
                tmp = bytes;
            }

            return(new ObjectId(tmp));
        }
Пример #4
0
        public static void Main(string[] args)
        {
            if (args.Length == 0 || (args.Length == 1 && (args[0] == "-?" || args[0] == "--help" || args[0] == "-h")))
            {
                Console.WriteLine("usage: {0} <id>", Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location));
                Console.WriteLine();
                Console.WriteLine("Give the id in RQL or MongoDB format, e.g. $1234 or ObjectId(\"51d1e6baec98e811b7ee9d20\").  The program will show the other.");
                return;
            }

            string id = args[0];

            if (id.StartsWith("$"))
            {
                RqlId rqlId;

                if (RqlId.TryParse(id, out rqlId))
                {
                    Console.WriteLine("ObjectId(\"{0}\")", rqlId.ToObjectId().ToString());
                }
                else
                {
                    Console.WriteLine("error: '{0}' is an invalid RQL id", id);
                }
            }
            else
            {
                int objectIdLen = 24 + 2 + 2 + 8;

                if (id.StartsWith("ObjectId") && id.Length != objectIdLen)
                {
                    Console.WriteLine("error: '{0}' must be exactly {1} characters long", objectIdLen);
                }
                else
                {
                    id = id.Substring(10, 24);
                }

                ObjectId objId;

                if (ObjectId.TryParse(id, out objId))
                {
                    Console.WriteLine(objId.ToRqlId().ToString());
                }
                else
                {
                    Console.WriteLine("error: '{0}' is an invalid MongoDB ObjectId", id);
                }
            }
        }
Пример #5
0
        public void TestFromString()
        {
            var datas = new string[]
            {
                "$0",
                "$1",
                "$123abcABC",
                "$ZZZZZZZZZ"
            };

            for (int i = 0; i < datas.Length; i++)
            {
                var id1 = new RqlId(datas[i]);
                var s   = id1.ToString();
                var id2 = new RqlId(s);

                Assert.AreEqual(id1, id2, "Data value {0}", i);
            }
        }