New test.
[mono.git] / mcs / class / corlib / Test / System / EnvironmentTest.cs
1 //
2 // EnvironmentTest.cs - NUnit Test Cases for Environment
3 //
4 // Author:
5 //      Sebastien Pouliot <sebastien@ximian.com>
6 //
7 // (C) 2004-2005 Novell (http://www.novell.com)
8 //
9
10 using NUnit.Framework;
11 using System;\r
12 using System.Collections;
13
14 namespace MonoTests.System {
15
16         [TestFixture]
17         public class EnvironmentTest {
18
19                 private void ExpandEquals (string toExpand, string toMatch) 
20                 {
21                         string expanded = Environment.ExpandEnvironmentVariables (toExpand);
22                         Assert.AreEqual (toMatch, expanded, "ExpandEnvironmentVariables(" + toExpand + ").Match");
23                 }
24
25                 private void ExpandStartsEnds (string toExpand, string start, string end) 
26                 {
27                         string expanded = Environment.ExpandEnvironmentVariables (toExpand);
28                         Assert.IsTrue (expanded.StartsWith (start), "ExpandEnvironmentVariables(" + toExpand + ").Start");\r
29                         Assert.IsTrue (expanded.EndsWith (end), "ExpandEnvironmentVariables(" + toExpand + ").End");
30                 }
31
32                 private void ExpandDifferent (string toExpand)
33                 {
34                         string expanded = Environment.ExpandEnvironmentVariables (toExpand);
35                         Assert.IsFalse ((toExpand == expanded), "ExpandEnvironmentVariables(" + toExpand + ").Different");
36                 }
37
38                 [Test]
39                 public void ExpandEnvironmentVariables_UnknownVariable () 
40                 {
41                         ExpandEquals ("Hello %UNKNOWN_ENV_VAR% :-)", "Hello %UNKNOWN_ENV_VAR% :-)");
42                 }
43
44                 [Test]
45                 public void ExpandEnvironmentVariables_KnownVariable () 
46                 {
47                         ExpandStartsEnds ("Path %PATH% :-)", "Path ", " :-)");
48                 }
49
50                 [Test]
51                 public void ExpandEnvironmentVariables_NotVariable () 
52                 {
53                         ExpandEquals ("100% :-)", "100% :-)");
54                 }
55                 
56                 [Test]
57                 public void ExpandEnvironmentVariables_Alone () 
58                 {
59                         ExpandDifferent ("%PATH%");
60                 }
61
62                 [Test]
63                 public void ExpandEnvironmentVariables_End () 
64                 {
65                         ExpandStartsEnds ("Hello %PATH%", "Hello ", "");
66                 }
67
68                 [Test]
69                 public void ExpandEnvironmentVariables_None () 
70                 {
71                         ExpandEquals ("Hello Mono", "Hello Mono");
72                 }
73
74                 [Test]
75                 public void ExpandEnvironmentVariables_EmptyVariable () 
76                 {
77                         ExpandEquals ("Hello %% Mono", "Hello %% Mono");
78                 }
79
80                 [Test]
81                 public void ExpandEnvironmentVariables_Double () 
82                 {
83                         ExpandDifferent ("%PATH%%PATH%");
84                         string path = Environment.GetEnvironmentVariable ("PATH");
85                         if (path != null) {
86                                 string expanded = Environment.ExpandEnvironmentVariables ("%PATH%%PATH%");\r
87                                 Assert.AreEqual (path + path, expanded, "#01");
88                         }
89                 }
90                 
91                 [Test]
92                 public void ExpandEnvironmentVariables_ComplexExpandable () 
93                 {
94                         ExpandStartsEnds ("Hello %%%PATH%%%", "Hello %%", "%%");
95                 }
96
97                 [Test]
98                 public void ExpandEnvironmentVariables_ExpandableAndNonExpandable () 
99                 {
100                         string path = Environment.GetEnvironmentVariable ("PATH");
101                         string expanded=Environment.ExpandEnvironmentVariables("%PATH% PATH%");\r
102                         Assert.AreEqual (path + " PATH%", expanded);
103                 }
104
105
106                 [Test]
107                 public void ExpandEnvironmentVariables_ExpandableWithTrailingPercent () 
108                 {
109                         string path = Environment.GetEnvironmentVariable ("PATH");
110                         string expanded=Environment.ExpandEnvironmentVariables("%PATH% %");
111                         Assert.AreEqual (path+" %",expanded);
112                 }
113                 
114                 [Test]
115                 public void ExpandEnvironmentVariables_ComplexExpandable2 () 
116                 {
117                         ExpandStartsEnds ("Hello %%PATH%%%", "Hello %", "%%");
118                 }\r
119 \r
120                 [Test]\r
121                 public void GetEnvironmentVariables ()\r
122                 {\r
123                         IDictionary d = Environment.GetEnvironmentVariables ();\r
124                         Assert.IsTrue ((d is Hashtable), "Hashtable");\r
125                         Assert.IsFalse (d.IsFixedSize, "IsFixedSize");\r
126                         Assert.IsFalse (d.IsReadOnly, "IsReadOnly");\r
127                         Assert.IsFalse (d.IsSynchronized, "IsSynchronized");\r
128                 }
129
130                 [Test]
131                 public void GetCommandLineArgs ()
132                 {
133                         string[] args = Environment.GetCommandLineArgs ();
134                         Assert.IsNotNull (args, "not null");
135                         Assert.IsTrue (((args.Length > 0) && (args.Length < 256)), "reasonable");
136                         Assert.IsNotNull (args [0], "application");
137                 }
138
139 #if NET_2_0
140                 [Test]
141                 [ExpectedException (typeof (ArgumentException))]
142                 public void GetEnvironmentVariable_Target ()
143                 {
144                         Environment.GetEnvironmentVariable ("MONO", (EnvironmentVariableTarget)Int32.MinValue);
145                 }
146
147                 [Test]\r
148                 [ExpectedException (typeof (ArgumentException))]\r
149                 public void GetEnvironmentVariables_Target ()
150                 {
151                         Environment.GetEnvironmentVariables ((EnvironmentVariableTarget)Int32.MinValue);
152                 }
153
154                 [Test]\r
155                 [ExpectedException (typeof (ArgumentException))]\r
156                 public void SetEnvironmentVariable_Target ()
157                 {
158                         Environment.SetEnvironmentVariable ("MONO", "GO", (EnvironmentVariableTarget)Int32.MinValue);
159                 }
160
161                 [Test]
162                 [ExpectedException (typeof (ArgumentNullException))]
163                 public void SetEnvironmentVariable_NameNull ()
164                 {
165                         Environment.SetEnvironmentVariable (null, "A");
166                 }
167
168                 [Test]
169                 [ExpectedException (typeof (ArgumentException))]
170                 public void SetEnvironmentVariable_NameEmpty ()
171                 {
172                         Environment.SetEnvironmentVariable ("", "A");
173                 }
174
175                 [Test]
176                 [ExpectedException (typeof (ArgumentException))]
177                 public void SetEnvironmentVariable_NameZeroChar ()
178                 {
179                         Environment.SetEnvironmentVariable ("\0", "A");
180                 }
181
182                 [Test]
183                 public void SetEnvironmentVariable ()
184                 {
185                         // Test set
186                         Environment.SetEnvironmentVariable ("A1", "B1");
187                         Environment.SetEnvironmentVariable ("A2", "B2");
188                         Environment.SetEnvironmentVariable ("A3", "B3");
189                         Assert.AreEqual (Environment.GetEnvironmentVariable ("A1"), "B1");
190                         Assert.AreEqual (Environment.GetEnvironmentVariable ("A2"), "B2");
191                         Assert.AreEqual (Environment.GetEnvironmentVariable ("A3"), "B3");
192
193                         // Test update
194                         Environment.SetEnvironmentVariable ("A3", "B4");
195                         Assert.AreEqual (Environment.GetEnvironmentVariable ("A3"), "B4");
196
197                         // Test delete
198                         Environment.SetEnvironmentVariable ("A1", null);
199                         Assert.AreEqual (Environment.GetEnvironmentVariables ()["A1"], null);
200                         Environment.SetEnvironmentVariable ("A2", "");
201                         Assert.AreEqual (Environment.GetEnvironmentVariables ()["A2"], null);
202                         Environment.SetEnvironmentVariable ("A3", "\0");
203                         Assert.AreEqual (Environment.GetEnvironmentVariables ()["A3"], null);
204                 }
205 #endif
206         }
207 }