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); } }
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); } }
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)); }
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); } } }
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); } }