public void TestShallow() { var cl = new Cloner(); { var src = new Sample1 { X = 9, Y = "qwe" }; var dst = (Sample1)cl.ShallowObject(src); Assert.AreEqual(src.X, dst.X); Assert.AreEqual(src.Y, dst.Y); } { var src = new Sample2 { X = 19, Y = "qwe" }; var dst = cl.Shallow(src); Assert.AreEqual(src.X, dst.X); Assert.AreEqual(src.Y, dst.Y); } { var src = new SampleDict { Value = 1, Children = new Dictionary <string, SampleDict> { { "a", new SampleDict { Value = 2 } } } }; var dst = cl.Shallow(src); Assert.AreEqual(src.Value, dst.Value); Assert.AreEqual(src.Children, dst.Children); } }
public void TestDict() { TestGen(cl => { var src = new Dictionary <string, int> { { "a", 1 }, { "b", 2 } }; var dst = cl.Deep(src); Assert.AreNotEqual(src, dst); Assert.AreEqual(src.Count, dst.Count); Assert.AreEqual(src["a"], dst["a"]); Assert.AreEqual(src["b"], dst["b"]); }); TestGen(cl => { var src = new SampleDict { Value = 1, Children = new Dictionary <string, SampleDict> { { "a", new SampleDict { Value = 2 } } } }; var dst = cl.Deep(src); Assert.AreEqual(src.Value, dst.Value); Assert.AreNotEqual(src.Children, dst.Children); Assert.AreEqual(src.Children["a"].Value, dst.Children["a"].Value); }); TestGen(cl => { var src = new SampleDictKeys { E = new Dictionary <SampleEnum, int> { { SampleEnum.E2, 6 } }, I = null, K = new Dictionary <SampleKey, int> { { new SampleKey { V = 7 }, 8 } } }; var dst = cl.Deep(src); Assert.AreNotEqual(src.E, dst.E); Assert.AreNotEqual(src.K, dst.K); Assert.AreEqual(src.I, dst.I); Assert.AreEqual(src.E[SampleEnum.E2], dst.E[SampleEnum.E2]); Assert.AreEqual(src.K[new SampleKey { V = 7 }], dst.K[new SampleKey { V = 7 }]); }); }