tests/DotNetCommon.Test/Accessors/ObjectAccessorTests.cs

(开头部分) 9KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace DotNetCommon.Test.Accessors
{
    using System;
    using System.Diagnostics.CodeAnalysis;
    using DotNetCommon.Accessors;
    using NUnit.Framework;
    using Shouldly;

    [TestFixture]
    public sealed class ObjectAccessorTests
    {
        [Test]
        public void When_creating_object_accessor_with_default_flags()
        {
            var parent = new Parent();
            ObjectAccessor parentAccessor = Accessor.Build(parent);
            parentAccessor.ShouldBeOfType<ObjectAccessor>();
            parentAccessor.Type.ShouldBe(typeof(Parent));
            parentAccessor.IgnoreCase.ShouldBe(false);
            parentAccessor.IncludesNonPublic.ShouldBe(false);

            parentAccessor.ShouldNotBeNull();
            parentAccessor.Properties.ShouldNotBeNull();
            parentAccessor.Properties.Count.ShouldBe(2);

            parentAccessor.Properties["Name"].PropertyType.ShouldBe(typeof(string));
            parentAccessor.Properties["Age"].PropertyType.ShouldBe(typeof(int));

            parentAccessor[parent, "Name"].ShouldBeNull();
            parentAccessor[parent, "Name"] = "Foo";
            parentAccessor[parent, "Name"].ShouldBe("Foo");

            parentAccessor[parent, "Age"].ShouldBe(0);
            parentAccessor[parent, "Age"] = 10;
            parentAccessor[parent, "Age"].ShouldBe(10);

            var child = new Child();
            ObjectAccessor childAccessor = Accessor.Build(child);
            childAccessor.ShouldBeOfType<ObjectAccessor>();
            childAccessor.Type.ShouldBe(typeof(Child));
            childAccessor.IgnoreCase.ShouldBe(false);
            childAccessor.IncludesNonPublic.ShouldBe(false);

            childAccessor.ShouldNotBeNull();
            childAccessor.Properties.ShouldNotBeNull();
            childAccessor.Properties.Count.ShouldBe(3);

            childAccessor.Properties["ChildName"].PropertyType.ShouldBe(typeof(string));
            childAccessor.Properties["Name"].PropertyType.ShouldBe(typeof(string));
            childAccessor.Properties["Age"].PropertyType.ShouldBe(typeof(int));

            childAccessor[child, "ChildName"].ShouldBe("Bar");
            childAccessor[child, "ChildName"] = "BarBar";
            childAccessor[child, "ChildName"].ShouldBe("BarBar");

            childAccessor[child, "Name"].ShouldBeNull();
            childAccessor[child, "Name"] = "Foo";
            childAccessor[child, "Name"].ShouldBe("Foo");
        }

后面还有 178 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。