示例#1
0
        public void DynamicCompositesCanBeClonedAndCompared()
        {
            dynamic bike = new DynamicBicycle();

            bike.Wheels = new List <Wheel> {
                new Wheel {
                    Brand = "Noname"
                }, new Wheel {
                    Brand = "Noname"
                }
            };
            bike.Frame      = new Frame();
            bike.Frame.Type = "BMX";
            var mixin = (IComposite)bike;

            dynamic clone = mixin.Clone(deep: true);

            Assert.AreNotSame(bike, clone);
            Assert.AreNotSame(bike.Frame, clone.Frame);
            Assert.AreNotSame(bike.Wheels, clone.Wheels);

            Assert.IsTrue(mixin.EqualsByValue((IComposite)clone));

            clone.Frame.Type = "Hybrid";
            Assert.IsFalse(mixin.EqualsByValue((IComposite)clone));
        }
示例#2
0
        public void DynamicCompositesCanBeClonedAndCompared()
        {
            dynamic bike = new DynamicBicycle();
            bike.Wheels = new List<Wheel> { new Wheel { Brand = "Noname" }, new Wheel { Brand = "Noname" } };
            bike.Frame = new Frame();
            bike.Frame.Type = "BMX";
            var mixin = (IComposite) bike;

            dynamic clone = mixin.Clone(deep: true);
            Assert.AreNotSame(bike, clone);
            Assert.AreNotSame(bike.Frame, clone.Frame);
            Assert.AreNotSame(bike.Wheels, clone.Wheels);

            Assert.IsTrue(mixin.EqualsByValue((IComposite)clone));

            clone.Frame.Type = "Hybrid";
            Assert.IsFalse(mixin.EqualsByValue((IComposite)clone));
        }