Ejemplo n.º 1
0
 public void TestCastsToDocument()
 {
     var ogen = new OidGenerator();
     var dref = new DBRef("tests.dbrefs", ogen.Generate());
     var doc = (Document)dref;
     Assert.AreEqual(dref.CollectionName, doc[DBRef.RefName]);
 }
Ejemplo n.º 2
0
        public void TestFollowNonReference(){
            var id = new Oid("BAD067c30a57000000008ecb");
            var rf = new DBRef("refs", id);

            var target = DB.FollowReference(rf);
            Assert.IsNull(target, "FollowReference returned wasn't null");
        }
Ejemplo n.º 3
0
        public void TestCastsToDocument()
        {
            var ogen = new OidGenerator();
            var dref = new DBRef("tests.dbrefs", ogen.Generate());
            var doc  = (Document)dref;

            Assert.AreEqual(dref.CollectionName, doc[DBRef.RefName]);
        }
Ejemplo n.º 4
0
        public void TestFromDocument()
        {
            const string colname = "tests";
            const string id = "32312312";
            var doc = new Document().Add(DBRef.RefName, colname).Add(DBRef.IdName, id);

            var expected = new DBRef(colname, id);
            Assert.AreEqual(expected, DBRef.FromDocument(doc));
        }
Ejemplo n.º 5
0
        public void TestEqualsUsingSameValues()
        {
            const string colname = "tests";
            const string id = "32312312";
            var r = new DBRef(colname, id);
            var r2 = new DBRef(colname, id);

            Assert.AreEqual(r, r2);
        }
Ejemplo n.º 6
0
        public void TestFollowNonReference()
        {
            var id = new Oid("BAD067c30a57000000008ecb");
            var rf = new DBRef("refs", id);

            var target = DB.FollowReference(rf);

            Assert.IsNull(target, "FollowReference returned wasn't null");
        }
Ejemplo n.º 7
0
        public void TestEqualsUsingSameValues()
        {
            const string colname = "tests";
            const string id      = "32312312";
            var          r       = new DBRef(colname, id);
            var          r2      = new DBRef(colname, id);

            Assert.AreEqual(r, r2);
        }
Ejemplo n.º 8
0
        public void TestFromDocument()
        {
            const string colname = "tests";
            const string id      = "32312312";
            var          doc     = new Document().Add(DBRef.RefName, colname).Add(DBRef.IdName, id);

            var expected = new DBRef(colname, id);

            Assert.AreEqual(expected, DBRef.FromDocument(doc));
        }
Ejemplo n.º 9
0
        public void CanBeXmlSerialized()
        {
            var source = new DBRef("collection", "id");
            var serializer = new XmlSerializer(typeof(DBRef));

            var writer = new StringWriter();
            serializer.Serialize(writer, source);
            var dest = (DBRef)serializer.Deserialize(new StringReader(writer.ToString()));

            Assert.AreEqual(source, dest);
        }
        /// <summary>
        ///   Ends the object.
        /// </summary>
        /// <param name = "instance">The instance.</param>
        /// <returns></returns>
        public object EndObject(object instance)
        {
            var document = (Document)instance;

            if (DBRef.IsDocumentDBRef(document))
            {
                return(DBRef.FromDocument(document));
            }

            return(document);
        }
Ejemplo n.º 11
0
        public void CanBeXmlSerialized()
        {
            var source     = new DBRef("collection", "id");
            var serializer = new XmlSerializer(typeof(DBRef));

            var writer = new StringWriter();

            serializer.Serialize(writer, source);
            var dest = (DBRef)serializer.Deserialize(new StringReader(writer.ToString()));

            Assert.AreEqual(source, dest);
        }
Ejemplo n.º 12
0
        public void CanBeBinarySerialized()
        {
            var source = new DBRef("collection", "id");
            var formatter = new BinaryFormatter();

            var mem = new MemoryStream();
            formatter.Serialize(mem, source);
            mem.Position = 0;

            var dest = (DBRef)formatter.Deserialize(mem);

            Assert.AreEqual(source, dest);
        }
Ejemplo n.º 13
0
        public void TestFollowReference(){
            var refs = DB["refs"];
            var id = new Oid("4a7067c30a57000000008ecb");
            var msg = "this has an oid key";
            var doc = new Document {{"_id", id}, {"msg", msg}};
            refs.Insert(doc);

            var rf = new DBRef("refs", id);

            var target = DB.FollowReference(rf);
            Assert.IsNotNull(target, "FollowReference returned null");
            Assert.IsTrue(target.ContainsKey("msg"));
            Assert.AreEqual(msg, target["msg"]);
        }
Ejemplo n.º 14
0
        public void CanBeBinarySerialized()
        {
            var source    = new DBRef("collection", "id");
            var formatter = new BinaryFormatter();

            var mem = new MemoryStream();

            formatter.Serialize(mem, source);
            mem.Position = 0;

            var dest = (DBRef)formatter.Deserialize(mem);

            Assert.AreEqual(source, dest);
        }
Ejemplo n.º 15
0
        public void Fetch()
        {
            IDBCollection c = Mongo.DefaultDatabase.GetCollection("test");
            c.Drop();

            Document obj = new Document() {{"test","me"}};
            c.Save(obj);

            DBRef r = new DBRef(c, obj.ID);
            IDocument deref = r.Fetch();

            Assert.That(deref, Is.Not.Null);
            Assert.That(deref.ID, Is.EqualTo(obj.ID));
        }
Ejemplo n.º 16
0
        public void TestDBRef()
        {
            Document source = new Document();

            source.Append("x", 1).Append("ref", new DBRef("refs", "ref1"));

            Document copy = WriteAndRead(source);

            Assert.IsTrue(copy.Contains("ref"));
            Assert.IsTrue(copy["ref"].GetType() == typeof(DBRef));

            DBRef sref = (DBRef)source["ref"];
            DBRef cref = (DBRef)copy["ref"];

            Assert.AreEqual(sref.Id, cref.Id);
        }
Ejemplo n.º 17
0
        public void TestReferenceNonOid()
        {
            var refs = DB["refs"];

            var doc = new Document().Add("_id", 123).Add("msg", "this has a non oid key");

            refs.Insert(doc);

            var rf = new DBRef("refs", 123);

            var recv = DB.FollowReference(rf);

            Assert.IsNotNull(recv);
            Assert.IsTrue(recv.ContainsKey("msg"));
            Assert.AreEqual(recv["_id"], (long)123);
        }
Ejemplo n.º 18
0
        public void TestFollowReference()
        {
            var refs = DB["refs"];
            var id   = new Oid("4a7067c30a57000000008ecb");
            var msg  = "this has an oid key";
            var doc  = new Document {
                { "_id", id }, { "msg", msg }
            };

            refs.Insert(doc);

            var rf = new DBRef("refs", id);

            var target = DB.FollowReference(rf);

            Assert.IsNotNull(target, "FollowReference returned null");
            Assert.IsTrue(target.ContainsKey("msg"));
            Assert.AreEqual(msg, target["msg"]);
        }
Ejemplo n.º 19
0
        public void TestIsDocumentDBRef()
        {
            var doc = new Document();

            Assert.IsFalse(DBRef.IsDocumentDBRef(null));
            Assert.IsFalse(DBRef.IsDocumentDBRef(doc));

            doc[DBRef.RefName] = "tests";
            Assert.IsFalse(DBRef.IsDocumentDBRef(doc));

            doc.Remove(DBRef.RefName);
            doc[DBRef.IdName] = "12312131";
            Assert.IsFalse(DBRef.IsDocumentDBRef(doc));

            doc[DBRef.RefName] = "tests";
            Assert.IsTrue(DBRef.IsDocumentDBRef(doc));

            doc[DBRef.MetaName] = new Document();
            Assert.IsTrue(DBRef.IsDocumentDBRef(doc));
        }
Ejemplo n.º 20
0
 /// <summary>
 ///   Writes the specified reference.
 /// </summary>
 /// <param name = "reference">The reference.</param>
 public void Write(DBRef reference)
 {
     WriteObject((Document)reference);
 }
Ejemplo n.º 21
0
        public void TestEqualsAreSameObject()
        {
            var r = new DBRef("tests", "2312314");

            Assert.AreEqual(r, r);
        }
Ejemplo n.º 22
0
 public void TestEqualsAreSameObject()
 {
     var r = new DBRef("tests", "2312314");
     Assert.AreEqual(r, r);
 }
Ejemplo n.º 23
0
 public void TestFromIncompleteDocumentThrowsArguementException()
 {
     DBRef.FromDocument(new Document(DBRef.RefName, "tests"));
 }
Ejemplo n.º 24
0
 /// <summary>
 ///   Calculates the size.
 /// </summary>
 /// <param name = "reference">The reference.</param>
 /// <returns></returns>
 public int CalculateSize(DBRef reference)
 {
     return CalculateSizeObject((Document)reference);
 }
Ejemplo n.º 25
0
        public void TestReferenceNonOid(){
            var refs = DB["refs"];

            var doc = new Document().Add("_id", 123).Add("msg", "this has a non oid key");
            refs.Insert(doc);

            var rf = new DBRef("refs", 123);

            var recv = DB.FollowReference(rf);

            Assert.IsNotNull(recv);
            Assert.IsTrue(recv.ContainsKey("msg"));
            Assert.AreEqual(recv["_id"], (long)123);
        }
Ejemplo n.º 26
0
 /// <summary>
 ///   Writes the specified reference.
 /// </summary>
 /// <param name = "reference">The reference.</param>
 public void Write(DBRef reference)
 {
     WriteObject((Document)reference);
 }
Ejemplo n.º 27
0
 /// <summary>
 ///   Calculates the size.
 /// </summary>
 /// <param name = "reference">The reference.</param>
 /// <returns></returns>
 public int CalculateSize(DBRef reference)
 {
     return(CalculateSizeObject((Document)reference));
 }
Ejemplo n.º 28
0
        public Object ReadElementType(sbyte typeNum)
        {
            switch ((BsonDataType)typeNum)
            {
            case BsonDataType.Null:
            case BsonDataType.Undefined:
                return(MongoDBNull.Value);

            case BsonDataType.MinKey:
                return(MongoMinKey.Value);

            case BsonDataType.MaxKey:
                return(MongoMaxKey.Value);

            case BsonDataType.Boolean:
                position++;
                return(reader.ReadBoolean());

            case BsonDataType.Integer:
                position += 4;
                return(reader.ReadInt32());

            case BsonDataType.Long:
                position += 8;
                return(reader.ReadInt64());

            case BsonDataType.Date:
                position += 8;
                long millis = reader.ReadInt64();
                return(epoch.AddMilliseconds(millis));

            case BsonDataType.Oid:
                position += 12;
                return(new Oid(reader.ReadBytes(12)));

            case BsonDataType.Number:
                position += 8;
                return(reader.ReadDouble());

            case BsonDataType.String: {
                return(ReadLenString());
            }

            case BsonDataType.Obj: {
                Document doc = this.ReadDocument();
                if (DBRef.IsDocumentDBRef(doc))
                {
                    return(DBRef.FromDocument(doc));
                }
                return(doc);
            }

            case BsonDataType.Array: {
                Document doc = this.ReadDocument();
                return(ConvertToArray(doc));
            }

            case BsonDataType.Regex: {
                MongoRegex r = new MongoRegex();
                r.Expression = this.ReadString();
                r.Options    = this.ReadString();
                return(r);
            }

            case BsonDataType.Code: {
                Code c = new Code();
                c.Value = ReadLenString();
                return(c);
            }

            case BsonDataType.CodeWScope: {
                int startpos = position;
                int size     = reader.ReadInt32();
                position += 4;

                String   val   = this.ReadLenString();
                Document scope = this.ReadDocument();
                if (size != position - startpos)
                {
                    throw new System.IO.InvalidDataException(string.Format("Should have read {0} bytes from stream but read {1} in CodeWScope", size, position - startpos));
                }
                return(new CodeWScope(val, scope));
            }

            case BsonDataType.Binary: {
                int size = reader.ReadInt32();
                position += 4;
                byte subtype = reader.ReadByte();
                position++;
                if (subtype == (byte)Binary.TypeCode.General)
                {
                    size      = reader.ReadInt32();
                    position += 4;
                }
                byte[] bytes = reader.ReadBytes(size);
                position += size;

                // From http://en.wikipedia.org/wiki/Universally_Unique_Identifier
                // The most widespread use of this standard is in Microsoft's Globally Unique Identifiers (GUIDs).
                if (subtype == 3 && 16 == size)
                {
                    return(new Guid(bytes));
                }

                Binary b = new Binary();
                b.Bytes   = bytes;
                b.Subtype = (Binary.TypeCode)subtype;
                return(b);
            }

            default:
                throw new ArgumentOutOfRangeException(String.Format("Type Number: {0} not recognized", typeNum));
            }
        }