public void TestUInt16ToSByteOrDefault() { // Test conversion of source type minimum value UInt16 source = UInt16.MinValue; Assert.IsInstanceOfType(source, typeof(UInt16)); SByte?result = source.ToSByteOrDefault((sbyte)86); Assert.AreEqual((sbyte)0, result); Assert.IsInstanceOfType(result, typeof(SByte)); // Test conversion of source type value 42 to target type source = (ushort)42; Assert.IsInstanceOfType(source, typeof(UInt16)); result = source.ToSByteOrDefault((sbyte)86); Assert.AreEqual((sbyte)42, result); Assert.IsInstanceOfType(result, typeof(SByte)); // Test conversion of source type maximum value source = UInt16.MaxValue; Assert.IsInstanceOfType(source, typeof(UInt16)); result = source.ToSByteOrDefault((sbyte)86); // Here we would expect this conversion to fail (and return the default value of (sbyte)86), // since the source type's maximum value (65535) is greater than the target type's maximum value (127). Assert.AreEqual((sbyte)86, result); Assert.IsInstanceOfType(result, typeof(SByte)); }