public void Can_Get_Details_For_Instance()
        {
            var containerManager = new ContainerManager();
            var testObject       = new TestClass
            {
                NumberProperty = 123,
                StringProperty = "abc"
            };

            containerManager.AddObjectToContainer("container", testObject, "obj");
            var reference = containerManager.GetInstancesInContainer("container")
                            .Single(x => x.Name == "obj");

            var details = containerManager.GetInstanceDetails(reference.InstanceId);

            details.Should().NotBeNull();
            details.InstanceId.Should().Be(reference.InstanceId);
            details.Name.Should().Be(reference.Name);
            details.Properties.Should().NotBeNull();
            details.Properties.Length.Should().Be(2);

            var stringProperty = details.Properties.Single(x => x.Name == nameof(TestClass.StringProperty));

            stringProperty.TypeName.Should().Be(typeof(string).FullName);
            stringProperty.ValueAsString.Should().Be(testObject.StringProperty);

            var numberProperty = details.Properties.Single(x => x.Name == nameof(TestClass.NumberProperty));

            numberProperty.TypeName.Should().Be(typeof(int).FullName);
            numberProperty.ValueAsString.Should().Be(testObject.NumberProperty.ToString());
        }
        public void Can_Tell_If_Properties_Are_Read_Or_Write_Only()
        {
            var containerManager = new ContainerManager();
            var testObject       = new ReadWriteOnlyTestClass {
                WriteOnlyProperty = 33
            };

            containerManager.AddObjectToContainer("container", testObject, "obj");
            var reference = containerManager.GetInstancesInContainer("container")
                            .Single(x => x.Name == "obj");

            var details = containerManager.GetInstanceDetails(reference.InstanceId);

            details.Properties.Length.Should().Be(2);

            var readProperty = details.Properties.Single(x => x.Name == nameof(ReadWriteOnlyTestClass.ReadOnlyProperty));

            readProperty.IsReadable.Should().BeTrue();
            readProperty.IsWritable.Should().BeFalse();
            readProperty.ValueAsString.Should().Be("33");

            var writeProperty = details.Properties.Single(x => x.Name == nameof(ReadWriteOnlyTestClass.WriteOnlyProperty));

            writeProperty.IsReadable.Should().BeFalse();
            writeProperty.IsWritable.Should().BeTrue();
            writeProperty.ValueAsString.Should().BeNull();
        }
        public void Can_Mark_Instance_As_Child_Of_Another_Instance()
        {
            var containerManager = new ContainerManager();

            var parentId = containerManager.AddObjectToContainer("container", this, "parent");
            var childId  = containerManager.AddObjectToContainer("container", this, "child", parentId);

            var details = containerManager.GetInstanceDetails(childId);

            details.ParentInstanceId.Should().Be(parentId);
        }
        public void Indexer_Properties_Are_Ignored()
        {
            var containerManager = new ContainerManager();
            var testObject       = new IndexerClass();

            containerManager.AddObjectToContainer("container", testObject, "obj");
            var reference = containerManager.GetInstancesInContainer("container")
                            .Single(x => x.Name == "obj");

            var details = containerManager.GetInstanceDetails(reference.InstanceId);

            details.Properties.Length.Should().Be(0);
        }
        public void Fields_Are_Included_In_Instance_Details()
        {
            var containerManager = new ContainerManager();
            var testObject       = new ClassWithField {
                IntField = 1
            };

            containerManager.AddObjectToContainer("container", testObject, "obj");
            var reference = containerManager.GetInstancesInContainer("container")
                            .Single(x => x.Name == "obj");

            var details = containerManager.GetInstanceDetails(reference.InstanceId);

            details.Should().NotBeNull();
            details.Properties.Length.Should().Be(1);
            details.Properties[0].Name.Should().Be(nameof(ClassWithField.IntField));
            details.Properties[0].ValueAsString.Should().Be("1");
        }
示例#6
0
 public InstanceDetails GetInstanceDetails(Guid instanceId)
 {
     return(_containerManager.GetInstanceDetails(instanceId));
 }