void AssertEquals <T>(T[] expected, T[] actual) { if (expected == null) { if (actual != null) { Assert.Fail("Expected null but got {0}", Sos.SerializeObject(actual)); } } else if (actual == null) { Assert.Fail("Expected {0} but got null", Sos.SerializeObject(expected)); } else { if (expected.Length != actual.Length) { Assert.Fail("Expected array of length {0} but actual was length {1} (expected {2}, actual {3})", expected.Length, actual.Length, Sos.SerializeObject(expected), Sos.SerializeObject(actual)); } for (int i = 0; i < expected.Length; i++) { if (!expected[i].Equals(actual[i])) { Assert.Fail("Array mismatch at index {0} (expected {1}, actual {2})", i, Sos.SerializeObject(expected), Sos.SerializeObject(actual)); } } } }