[bcl] Remove more NET_2_0 checks from class libs
[mono.git] / mcs / class / Mono.Posix / Test / Mono.Unix.Native / StdlibTest.cs
1 //
2 // StdlibTest.cs:
3 //      NUnit Test Cases for Mono.Unix.Native.Stdlib
4 //
5 // Authors:
6 //   Jonathan Pryor (jonpryor@vt.edu)
7 //
8 // (C) 2004-2005 Jonathan Pryor
9 // 
10
11 using System;
12 using System.Text;
13
14 using NUnit.Framework;
15
16 using Mono.Unix.Native;
17
18 namespace MonoTests.Mono.Unix.Native {
19
20         [TestFixture]
21         public class StdlibTest
22         {
23                 private class SignalTest {
24                         public int signalReceived;
25
26                         public void Handler (int sn)
27                         {
28                                 signalReceived = sn;
29                         }
30                 }
31
32                 // [Test]
33                 public void Signal ()
34                 {
35                         SignalTest st = new SignalTest ();
36
37                         // Insert handler
38                         SignalHandler oh = Stdlib.signal (Signum.SIGURG, 
39                                         new SignalHandler (st.Handler));
40
41                         st.signalReceived = ~NativeConvert.FromSignum (Signum.SIGURG);
42
43                         // Send signal
44                         Stdlib.raise (Signum.SIGURG);
45
46                         Assert.IsTrue (
47                                 NativeConvert.ToSignum (st.signalReceived) == Signum.SIGURG,
48                                         "#IH: Signal handler not invoked for SIGURG");
49
50                         // Reset old signal
51                         Stdlib.signal (Signum.SIGURG, oh);
52
53                         st.signalReceived = NativeConvert.FromSignum (Signum.SIGUSR1);
54                         Stdlib.raise (Signum.SIGURG);
55
56                         Assert.IsFalse (NativeConvert.ToSignum (st.signalReceived) == Signum.SIGURG,
57                                         "#IH: Signal Handler invoked when it should have been removed!");
58                 }
59
60                 [Test]
61                 // MSVCRT.DLL doesn't export snprintf(3).
62                 [Category ("NotDotNet")]
63                 [Category ("NotWorking")]
64                 public void Snprintf ()
65                 {
66                         StringBuilder s = new StringBuilder (1000);
67                         Stdlib.snprintf (s, "hello, %s world!\n");
68                         Assert.AreEqual (s.ToString(), "hello, %s world!\n", 
69                                         "#SNPF: string not echoed");
70                         s = new StringBuilder (1000);
71                         Stdlib.snprintf (s, "yet another %s test", "simple");
72                         Assert.AreEqual (s.ToString(), "yet another simple test",
73                                         "#SNPF: string argument not printed");
74                         s = new StringBuilder (1000);
75                         string fmt = 
76 @"this is another test:
77           char: '%c'
78          short: %i
79            int: %i
80           long: %li
81          float: %g
82         double: %g" + "\n";
83                 Stdlib.snprintf (s, fmt, 'a', (short) 16, 32, (long) 64, (double) 32.23, 64.46);
84                         string expected = 
85 @"this is another test:
86           char: 'a'
87          short: 16
88            int: 32
89           long: 64
90          float: 32.23
91         double: 64.46" + "\n";
92                         Assert.AreEqual (s.ToString(), expected,
93                                         "#SNPF: printf of many builtin types failed");
94                 }
95         }
96 }
97