public void ExceptionUnwrapTest() { var lv0 = new ArgumentNullException("name", "lv0"); var lv1 = new InvalidOperationException("lv1", lv0); var lv2 = new ArgumentException("lv2", lv1); var lv3 = new ArgumentException("lv2", lv2); var lv4 = new ArgumentException("lv2", lv3); var lv5 = new ArgumentException("lv2", lv4); var lvA = lv5.Unwrap(); var lvB = lv5.Unwrap(typeof(ArgumentNullException)); var lvC = lv5.Unwrap <ArgumentNullException>(); var lvD = lv5.Unwrap(typeof(InvalidOperationException)); var lvE = lv5.Unwrap <InvalidOperationException>(); lvA.ShouldNotBeNull(); lvB.ShouldNotBeNull(); lvC.ShouldNotBeNull(); lvD.ShouldNotBeNull(); lvE.ShouldNotBeNull(); var message = #if NETFRAMEWORK @"lv0 Parameter name: name"; #else @"lv0 (Parameter 'name')"; #endif lvA.Message.ShouldBe(message); lvB.Message.ShouldBe(message); lvC.Message.ShouldBe(message); lvD.Message.ShouldBe("lv1"); lvE.Message.ShouldBe("lv1"); }