public void AddOwnered_Property_Should_Have_OwnerType_Set()
        {
            var p1 = new PerspexProperty <string>("p1", typeof(Class1));
            var p2 = p1.AddOwner <Class3>();

            Assert.Equal(typeof(Class3), p2.OwnerType);
        }
        public void AddOwnered_Direct_Property_Should_Have_OwnerType_Set()
        {
            var p1 = new PerspexProperty <string>("d1", typeof(Class1), o => null, (o, v) => { });
            var p2 = p1.AddOwner <Class3>(o => null, (o, v) => { });

            Assert.Equal(typeof(Class3), p2.OwnerType);
        }
        public void AddOwnered_Direct_Properties_Should_Share_Observables()
        {
            var p1 = new PerspexProperty <string>("d1", typeof(Class1), o => null, (o, v) => { });
            var p2 = p1.AddOwner <Class3>(o => null, (o, v) => { });

            Assert.Same(p1.Changed, p2.Changed);
            Assert.Same(p1.Initialized, p2.Initialized);
        }
        public void AddOwnered_Properties_Should_Share_Observables()
        {
            var p1 = new PerspexProperty <string>("p1", typeof(Class1));
            var p2 = p1.AddOwner <Class3>();

            Assert.Same(p1.Changed, p2.Changed);
            Assert.Same(p1.Initialized, p2.Initialized);
        }
        public void AddOwnered_Direct_Property_Should_Equal_Original()
        {
            var p1 = new PerspexProperty <string>("d1", typeof(Class1), o => null, (o, v) => { });
            var p2 = p1.AddOwner <Class3>(o => null, (o, v) => { });

            Assert.Equal(p1, p2);
            Assert.Equal(p1.GetHashCode(), p2.GetHashCode());
            Assert.True(p1 == p2);
        }
        public void AddOwnered_Property_Should_Equal_Original()
        {
            var p1 = new PerspexProperty <string>("p1", typeof(Class1));
            var p2 = p1.AddOwner <Class3>();

            Assert.Equal(p1, p2);
            Assert.Equal(p1.GetHashCode(), p2.GetHashCode());
            Assert.True(p1 == p2);
        }
        public void AddOwner_On_Direct_Property_Without_Getter_Or_Setter_Should_Throw()
        {
            var p1 = new PerspexProperty <string>("e1", typeof(Class1), o => null, (o, v) => { });

            Assert.Throws <InvalidOperationException>(() => p1.AddOwner <Class3>());
        }
        public void AddOwner_With_Getter_And_Setter_On_Standard_Property_Should_Throw()
        {
            var p1 = new PerspexProperty <string>("p1", typeof(Class1));

            Assert.Throws <InvalidOperationException>(() => p1.AddOwner <Class3>(o => null, (o, v) => { }));
        }
        public void AddOwner_On_Direct_Property_Without_Getter_Or_Setter_Should_Throw()
        {
            var p1 = new PerspexProperty<string>("e1", typeof(Class1), o => null, (o, v) => { });

            Assert.Throws<InvalidOperationException>(() => p1.AddOwner<Class3>());
        }
        public void AddOwnered_Direct_Properties_Should_Share_Observables()
        {
            var p1 = new PerspexProperty<string>("d1", typeof(Class1), o => null, (o, v) => { });
            var p2 = p1.AddOwner<Class3>(o => null, (o, v) => { });

            Assert.Same(p1.Changed, p2.Changed);
            Assert.Same(p1.Initialized, p2.Initialized);
        }
        public void AddOwner_With_Getter_And_Setter_On_Standard_Property_Should_Throw()
        {
            var p1 = new PerspexProperty<string>("p1", typeof(Class1));

            Assert.Throws<InvalidOperationException>(() => p1.AddOwner<Class3>(o => null, (o, v) => { }));
        }
        public void AddOwnered_Direct_Property_Should_Have_OwnerType_Set()
        {
            var p1 = new PerspexProperty<string>("d1", typeof(Class1), o => null, (o, v) => { });
            var p2 = p1.AddOwner<Class3>(o => null, (o, v) => { });

            Assert.Equal(typeof(Class3), p2.OwnerType);
        }
        public void AddOwnered_Direct_Property_Should_Equal_Original()
        {
            var p1 = new PerspexProperty<string>("d1", typeof(Class1), o => null, (o,v) => { });
            var p2 = p1.AddOwner<Class3>(o => null, (o, v) => { });

            Assert.Equal(p1, p2);
            Assert.Equal(p1.GetHashCode(), p2.GetHashCode());
            Assert.True(p1 == p2);
        }
        public void AddOwnered_Properties_Should_Share_Observables()
        {
            var p1 = new PerspexProperty<string>("p1", typeof(Class1));
            var p2 = p1.AddOwner<Class3>();

            Assert.Same(p1.Changed, p2.Changed);
            Assert.Same(p1.Initialized, p2.Initialized);
        }
        public void AddOwnered_Property_Should_Have_OwnerType_Set()
        {
            var p1 = new PerspexProperty<string>("p1", typeof(Class1));
            var p2 = p1.AddOwner<Class3>();

            Assert.Equal(typeof(Class3), p2.OwnerType);
        }
        public void AddOwnered_Property_Should_Equal_Original()
        {
            var p1 = new PerspexProperty<string>("p1", typeof(Class1));
            var p2 = p1.AddOwner<Class3>();

            Assert.Equal(p1, p2);
            Assert.Equal(p1.GetHashCode(), p2.GetHashCode());
            Assert.True(p1 == p2);
        }