internal static bool ValidateDomain(dynamic a, MockDomain b) { if (a == null && b == null) return true; ValidateC(a as MockClassC, b); if (a.ADomain == null && b.ADomain == null) return true; ValidateA(a.ADomain, b.ADomain); if (a.BDomain == null && b.BDomain == null) return true; ValidateB(a.BDomain, b.BDomain); if (a.CDomain == null && b.CDomain == null) return true; ValidateC(a.CDomain, b.CDomain); if (a.CDomains == null && b.CDomains == null) return true; Assert.AreEqual(a.CDomains.Count, b.CDomains.Count); for (var i = 0; i < a.CDomains.Count; i++) ValidateC(a.CDomains[i], b.CDomains[i]); if (a.BDomains == null && b.BDomains == null) return true; Assert.AreEqual(a.BDomains.Length, b.BDomains.Length); for (var i = 0; i < a.BDomains.Length; i++) ValidateB(a.BDomains[i], b.BDomains[i]); if (a.MyHashMash != null) { Assert.IsNotNull(b.MyHashMash); Assert.AreEqual(a.MyHashMash.Count, b.MyHashMash.Count); foreach (var k in a.MyHashMash.Keys) { Assert.IsTrue(b.MyHashMash.ContainsKey(k)); Assert.AreEqual(a.MyHashMash[k], b.MyHashMash[k]); } } Assert.AreEqual(a.GetFieldTestValue(), b.GetFieldTestValue()); Assert.AreEqual(a.GetFieldTest2Value(), b.GetFieldTest2Value()); return true; }