Beispiel #1
0
 public FieldCrawler(object declaringValue, FieldInfo field, ICrawlToken parentToken, ObjectCrawler objectCrawler)
 {
     _declaringValue = declaringValue;
     _field          = field;
     _parentToken    = parentToken;
     _objectCrawler  = objectCrawler;
 }
 public ValueCrawler(object value, Type type, ICrawlToken parentToken, ObjectCrawler objectCrawler)
 {
     _value         = value;
     _type          = type;
     _parentToken   = parentToken;
     _objectCrawler = objectCrawler;
 }
Beispiel #3
0
 public PropertyCrawler(object declaringValue, PropertyInfo property, ICrawlToken parentToken, ObjectCrawler objectCrawler)
 {
     _declaringValue = declaringValue;
     _property       = property;
     _parentToken    = parentToken;
     _objectCrawler  = objectCrawler;
 }
        public void null_value_cannot_be_crawled()
        {
            ObjectCrawler objectCrawler = new ObjectCrawler();

            Action action = () => objectCrawler.Crawl(null);

            action.Should().Throw <ArgumentNullException>();
        }
Beispiel #5
0
        public void dictionary_should_be_detected()
        {
            Dictionary <int, int>         someDictionary = new Dictionary <int, int>();
            ObjectCrawler                 crawler        = new ObjectCrawler();
            ObjectGraphVisitorVisitorStub visitor        = new ObjectGraphVisitorVisitorStub();

            crawler.AddVisitor(visitor);

            crawler.Crawl(someDictionary);

            visitor.Enumerable?.Type.Should().NotBeNull().And.Be <Dictionary <int, int> >();
        }
Beispiel #6
0
        public void enumerable_should_be_detected()
        {
            List <int>    someList = new List <int>();
            ObjectCrawler crawler  = new ObjectCrawler();
            ObjectGraphVisitorVisitorStub visitor = new ObjectGraphVisitorVisitorStub();

            crawler.AddVisitor(visitor);

            crawler.Crawl(someList);

            visitor.Enumerable?.Type.Should().NotBeNull().And.Be <List <int> >();
        }
Beispiel #7
0
        public void string_should_be_detected_as_value()
        {
            string        value   = "some string";
            ObjectCrawler crawler = new ObjectCrawler();
            ObjectGraphVisitorVisitorStub visitor = new ObjectGraphVisitorVisitorStub();

            crawler.AddVisitor(visitor);

            crawler.Crawl(value);

            visitor.Value?.Type.Should().Be <string>();
        }
Beispiel #8
0
        public void structures_should_be_detected_as_value()
        {
            DateTime      dateTime = DateTime.Now;
            ObjectCrawler crawler  = new ObjectCrawler();
            ObjectGraphVisitorVisitorStub visitor = new ObjectGraphVisitorVisitorStub();

            crawler.AddVisitor(visitor);

            crawler.Crawl(dateTime);

            visitor.Value?.Type.Should().Be <DateTime>();
        }
        public void a_simple_object_should_be_detected_as_reference()
        {
            object        o       = new object();
            ObjectCrawler crawler = new ObjectCrawler();
            ObjectGraphVisitorVisitorStub visitor = new ObjectGraphVisitorVisitorStub();

            crawler.AddVisitor(visitor);

            crawler.Crawl(o);

            visitor.Reference?.Type.Should().NotBeNull().And.Be <object>();
        }
        public void field_should_be_detected_on_reference()
        {
            AClassWithSingleField         classWithSingleField = new AClassWithSingleField();
            ObjectCrawler                 crawler = new ObjectCrawler();
            ObjectGraphVisitorVisitorStub visitor = new ObjectGraphVisitorVisitorStub();

            crawler.AddVisitor(visitor);

            crawler.Crawl(classWithSingleField);

            visitor.Reference?.Type.Should().Be <AClassWithSingleField>();
            visitor.Field.Should().NotBeNull();
            visitor.Field.Field.Name.Should().Be("_singleField");
        }
        public void property_should_be_detected_on_reference()
        {
            AClassWithSingleProperty      classWithSingleProperty = new AClassWithSingleProperty();
            ObjectCrawler                 crawler = new ObjectCrawler();
            ObjectGraphVisitorVisitorStub visitor = new ObjectGraphVisitorVisitorStub();

            crawler.AddVisitor(visitor);

            crawler.Crawl(classWithSingleProperty);

            visitor.Reference?.Type.Should().Be <AClassWithSingleProperty>();
            visitor.Property.Should().NotBeNull();
            visitor.Property.Property.Name.Should().Be(nameof(AClassWithSingleProperty.SingleProperty));
        }
        public void self_reference_should_not_cause_stack_overflow()
        {
            AClassWithSelfReference classWithSelfReference = new AClassWithSelfReference();

            classWithSelfReference.Self = classWithSelfReference;
            ObjectCrawler crawler = new ObjectCrawler();
            ObjectGraphVisitorVisitorStub visitor = new ObjectGraphVisitorVisitorStub();

            crawler.AddVisitor(visitor);

            crawler.Crawl(classWithSelfReference);

            visitor.Reference?.Type.Should().Be <AClassWithSelfReference>();
            visitor.Property.Should().NotBeNull();
            visitor.Property.Property.Name.Should().Be(nameof(AClassWithSelfReference.Self));
        }