using Claunia.PropertyList; using Xunit; namespace plistcil.test { public class NSNumberTests { [Fact] public static void NSNumberConstructorTest() { NSNumber number = new NSNumber("10032936613", NSNumber.INTEGER); Assert.Equal(NSNumber.INTEGER, number.GetNSNumberType()); Assert.Equal(10032936613, number.ToObject()); } [Fact] public static void NSNumberWithDecimalTest() { NSNumber number = new NSNumber("1360155352.748765", NSNumber.REAL); Assert.Equal("1360155352.748765", number.ToString()); } // The tests below make sure the numbers are being parsed correctly, and do not depend on the culture info // being set. Especially, decimal point may vary between cultures and we don't want to take a dependency on that // The value being used comes seen in a real property list: // TimeZoneOffsetFromUTC // 7200.000000 #if !NETCORE [Fact] [UseCulture("en-US")] public static void ParseNumberEnTest() { NSNumber number = new NSNumber("7200.000001"); Assert.True(number.isReal()); Assert.Equal(7200.000001d, number.ToDouble()); } [Fact] [UseCulture("nl-BE")] public static void ParseNumberNlTest() { // As seen in a real property list: // TimeZoneOffsetFromUTC // 7200.000000 NSNumber number = new NSNumber("7200.000001"); Assert.True(number.isReal()); Assert.Equal(7200.000001d, number.ToDouble()); } [Fact] [UseCulture("en-US")] public static void ParseNumberEnTest2() { // As seen in a real property list: // TimeZoneOffsetFromUTC // 7200.000000 NSNumber number = new NSNumber("7200.000000", NSNumber.REAL); Assert.True(number.isReal()); Assert.Equal(7200d, number.ToDouble()); } [Fact] [UseCulture("nl-BE")] public static void ParseNumberNlTest2() { // As seen in a real property list: // TimeZoneOffsetFromUTC // 7200.000000 NSNumber number = new NSNumber("7200.000000", NSNumber.REAL); Assert.True(number.isReal()); Assert.Equal(7200d, number.ToDouble()); } #endif } }