New test.
[mono.git] / mcs / class / corlib / Test / System / SingleTest.cs
1 // 
2 // System.SingleTest.cs - Unit test for Single
3 //      adapted from a subset of DoubleTest.cs
4 //
5 // Authors
6 //      Bob Doan  <bdoan@sicompos.com>
7 //      Sebastien Pouliot  <sebastien@ximian.com>
8 //
9 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
10 //
11
12 using System;
13 using System.Globalization;
14 using NUnit.Framework;
15
16 namespace MonoTests.System  {
17
18         [TestFixture]
19         public class SingleTest : Assertion {
20
21                 [Test]
22                 public void Equals () 
23                 {
24                         Single s1 = 1f;
25                         Single s2 = 1f;
26                         Assert ("Equals s1==s2", s1.Equals (s2));
27                         Assert ("Equals s1!=NaN", !s1.Equals (Single.NaN));
28
29                         Assert ("Equals NaN=!s2", !Single.NaN.Equals (s2));
30                         Assert ("Equals NaN==NaN", Single.NaN.Equals (Single.NaN));
31
32                         Single p0 = 0.0f;
33                         Single m0 = -0.0f;
34                         Assert ("0.0==-0.0", p0.Equals (m0));
35                         Assert ("-0.0==0.0", m0.Equals (p0));
36                 }
37
38                 [Test]
39                 public void IsInfinity ()
40                 {
41                         Assert ("PositiveInfinity",  Single.IsInfinity (Single.PositiveInfinity));
42                         Assert ("NegativeInfinity", Single.IsInfinity (Single.NegativeInfinity));
43                         Assert ("12", !Single.IsInfinity(12));          
44                         Assert ("NaN", !Single.IsInfinity (Single.NaN));                
45                 }
46
47                 [Test]
48                 public void IsNan ()
49                 {
50                         Assert ("Nan", Single.IsNaN (Single.NaN));
51                         Assert ("12", !Single.IsNaN (12));
52                         Assert ("PositiveInfinity", !Single.IsNaN (Single.PositiveInfinity));
53                         Assert ("NegativeInfinity", !Single.IsNaN (Single.PositiveInfinity));
54                 }
55
56                 [Test]
57                 public void IsNegativeInfinity ()
58                 {
59                         Assert ("IsNegativeInfinity", Single.IsNegativeInfinity (Single.NegativeInfinity));
60                         Assert ("12", !Single.IsNegativeInfinity (12));         
61                         Assert ("NaN", !Single.IsNegativeInfinity (Single.NaN));                
62                 }
63
64                 [Test]
65                 public void IsPositiveInfinity ()
66                 {
67                         Assert ("PositiveInfinity", Single.IsPositiveInfinity (Single.PositiveInfinity));
68                         Assert ("12", !Single.IsPositiveInfinity (12));         
69                         Assert ("NaN", !Single.IsPositiveInfinity (Single.NaN));                
70                 }
71
72                 [Test]
73                 public void ToString_Defaults () 
74                 {
75                         Single i = 254.9f;
76                         // everything defaults to "G"
77                         string def = i.ToString ("G");
78                         AssertEquals ("ToString()", def, i.ToString ());
79                         AssertEquals ("ToString((IFormatProvider)null)", def, i.ToString ((IFormatProvider)null));
80                         AssertEquals ("ToString((string)null)", def, i.ToString ((string)null));
81                         AssertEquals ("ToString(empty)", def, i.ToString (String.Empty));
82                         AssertEquals ("ToString(null,null)", def, i.ToString (null, null));
83                         AssertEquals ("ToString(empty,null)", def, i.ToString (String.Empty, null));
84
85                         AssertEquals ("ToString(G)", "254.9", def);
86                 }
87
88 #if NET_2_0
89                 [Test]
90                 [ExpectedException (typeof (ArgumentException))]
91                 public void HexNumber_WithHexToParse ()
92                 {
93                         // from bug #72221
94                         float f;
95                         Single.TryParse ("0dead", NumberStyles.HexNumber, null, out f);
96                 }
97
98                 [Test]
99                 [ExpectedException (typeof (ArgumentException))]
100                 public void HexNumber_NoHexToParse ()
101                 {
102                         float f;
103                         Single.TryParse ("0", NumberStyles.HexNumber, null, out f);
104                 }
105 #endif
106         }
107 }