// BooleanTest.cs - NUnit Test Cases for the System.Double class // // Bob Doan // // (C) Ximian, Inc. http://www.ximian.com // using System; using System.Collections; using System.Globalization; using NUnit.Framework; namespace MonoTests.System { [TestFixture] public class DoubleTest { private const Double d_zero = 0.0; private const Double d_neg = -1234.5678; private const Double d_pos = 1234.9999; private const Double d_pos2 = 1234.9999; private const Double d_nan = Double.NaN; private const Double d_pinf = Double.PositiveInfinity; private const Double d_ninf = Double.NegativeInfinity; private const String s = "What Ever"; private NumberFormatInfo Nfi = NumberFormatInfo.InvariantInfo; private string[] string_values = { "1", ".1", "1.1", "-12", "44.444432", ".000021121", " .00001", " .223 ", " -221.3233", " 1.7976931348623157e308 ", "+1.7976931348623157E308", "-1.7976931348623157e308", "4.9406564584124650e-324", "6.28318530717958647692528676655900577", "1e-05", }; private double[] double_values = { 1, .1, 1.1, -12, 44.444432, .000021121, .00001, .223, -221.3233, 1.7976931348623157e308, 1.7976931348623157e308, -1.7976931348623157e308, 4.9406564584124650e-324, 6.28318530717958647692528676655900577, 1e-05 }; [SetUp] public void GetReady() { string sep = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator; string_values [0] = "1"; string_values [1] = sep + "1"; string_values [2] = "1" + sep + "1"; string_values [3] = "-12"; string_values [4] = "44" + sep + "444432"; string_values [5] = sep + "000021121"; string_values [6] = " " + sep + "00001"; string_values [7] = " " + sep + "223 "; string_values [8] = " -221" + sep + "3233"; string_values [9] = " 1" + sep + "7976931348623157e308 "; string_values [10] = "+1" + sep + "7976931348623157E308"; string_values [11] = "-1" + sep + "7976931348623157e308"; string_values [12] = "4" + sep + "9406564584124650e-324"; string_values [13] = "6" + sep + "28318530717958647692528676655900577"; string_values [14] = "1e-05"; } [Test] public void PublicFields () { Assertion.AssertEquals("Epsilon Field has wrong value", 3.9406564584124654e-324, Double.Epsilon); Assertion.AssertEquals("MaxValue Field has wrong value", 1.7976931348623157e+308, Double.MaxValue); Assertion.AssertEquals("MinValue Field has wrong value", -1.7976931348623157e+308, Double.MinValue); Assertion.AssertEquals("NegativeInfinity Field has wrong value", (double)-1.0 / (double)(0.0), Double.NegativeInfinity); Assertion.AssertEquals("PositiveInfinity Field has wrong value", (double)1.0 / (double)(0.0), Double.PositiveInfinity); } [Test] public void CompareTo () { //If you do int foo = d_ninf.CompareTo(d_pinf); Assertion.Assert(".." foo < 0, true) this works.... WHY??? Assertion.Assert("CompareTo Infinity failed", d_ninf.CompareTo(d_pinf) < 0); Assertion.Assert("CompareTo Failed01", d_neg.CompareTo(d_pos) < 0); Assertion.Assert("CompareTo NaN Failed", d_nan.CompareTo(d_neg) < 0); Assertion.AssertEquals("CompareTo Failed02", 0, d_pos.CompareTo(d_pos2)); Assertion.AssertEquals("CompareTo Failed03", 0, d_pinf.CompareTo(d_pinf)); Assertion.AssertEquals("CompareTo Failed04", 0, d_ninf.CompareTo(d_ninf)); Assertion.AssertEquals("CompareTo Failed05", 0, d_nan.CompareTo(d_nan)); Assertion.Assert("CompareTo Failed06", d_pos.CompareTo(d_neg) > 0); Assertion.Assert("CompareTo Failed07", d_pos.CompareTo(d_nan) > 0); Assertion.Assert("CompareTo Failed08", d_pos.CompareTo(null) > 0); try { d_pos.CompareTo(s); Assertion.Fail("CompareTo should raise a System.ArgumentException"); } catch (Exception e) { Assertion.AssertEquals("CompareTo should be a System.ArgumentException", typeof(ArgumentException), e.GetType()); } } [Test] public void Equals () { Assertion.AssertEquals("Equals Failed", true, d_pos.Equals(d_pos2)); Assertion.AssertEquals("Equals Failed", false, d_pos.Equals(d_neg)); Assertion.AssertEquals("Equals Failed", false, d_pos.Equals(s)); } [Test] public void TestTypeCode () { Assertion.AssertEquals("GetTypeCode Failed", TypeCode.Double, d_pos.GetTypeCode()); } [Test] public void IsInfinity() { Assertion.AssertEquals("IsInfinity Failed", true, Double.IsInfinity(Double.PositiveInfinity)); Assertion.AssertEquals("IsInfinity Failed", true, Double.IsInfinity(Double.NegativeInfinity)); Assertion.AssertEquals("IsInfinity Failed", false, Double.IsInfinity(12)); } [Test] public void IsNan() { Assertion.AssertEquals("IsNan Failed", true, Double.IsNaN(Double.NaN)); Assertion.AssertEquals("IsNan Failed", false, Double.IsNaN(12)); Assertion.AssertEquals("IsNan Failed", false, Double.IsNaN(Double.PositiveInfinity)); } [Test] public void IsNegativeInfinity() { Assertion.AssertEquals("IsNegativeInfinity Failed", true, Double.IsNegativeInfinity(Double.NegativeInfinity)); Assertion.AssertEquals("IsNegativeInfinity Failed", false, Double.IsNegativeInfinity(12)); } [Test] public void IsPositiveInfinity() { Assertion.AssertEquals("IsPositiveInfinity Failed", true, Double.IsPositiveInfinity(Double.PositiveInfinity)); Assertion.AssertEquals("IsPositiveInfinity Failed", false, Double.IsPositiveInfinity(12)); } [Test] public void Parse() { int i=0; try { for(i=0;i