Mark tests as not working under TARGET_JVM
[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 #if !TARGET_JVM // Environment.SetEnvironmentVariable not supported under TARGET_JVM
155                 [Test]\r
156                 [ExpectedException (typeof (ArgumentException))]\r
157                 public void SetEnvironmentVariable_Target ()
158                 {
159                         Environment.SetEnvironmentVariable ("MONO", "GO", (EnvironmentVariableTarget)Int32.MinValue);
160                 }
161
162                 [Test]
163                 [ExpectedException (typeof (ArgumentNullException))]
164                 public void SetEnvironmentVariable_NameNull ()
165                 {
166                         Environment.SetEnvironmentVariable (null, "A");
167                 }
168
169                 [Test]
170                 [ExpectedException (typeof (ArgumentException))]
171                 public void SetEnvironmentVariable_NameEmpty ()
172                 {
173                         Environment.SetEnvironmentVariable ("", "A");
174                 }
175
176                 [Test]
177                 [ExpectedException (typeof (ArgumentException))]
178                 public void SetEnvironmentVariable_NameZeroChar ()
179                 {
180                         Environment.SetEnvironmentVariable ("\0", "A");
181                 }
182
183                 [Test]
184                 public void SetEnvironmentVariable ()
185                 {
186                         // Test set
187                         Environment.SetEnvironmentVariable ("A1", "B1");
188                         Environment.SetEnvironmentVariable ("A2", "B2");
189                         Environment.SetEnvironmentVariable ("A3", "B3");
190                         Assert.AreEqual (Environment.GetEnvironmentVariable ("A1"), "B1");
191                         Assert.AreEqual (Environment.GetEnvironmentVariable ("A2"), "B2");
192                         Assert.AreEqual (Environment.GetEnvironmentVariable ("A3"), "B3");
193
194                         // Test update
195                         Environment.SetEnvironmentVariable ("A3", "B4");
196                         Assert.AreEqual (Environment.GetEnvironmentVariable ("A3"), "B4");
197
198                         // Test delete
199                         Environment.SetEnvironmentVariable ("A1", null);
200                         Assert.AreEqual (Environment.GetEnvironmentVariables ()["A1"], null);
201                         Environment.SetEnvironmentVariable ("A2", "");
202                         Assert.AreEqual (Environment.GetEnvironmentVariables ()["A2"], null);
203                         Environment.SetEnvironmentVariable ("A3", "\0");
204                         Assert.AreEqual (Environment.GetEnvironmentVariables ()["A3"], null);
205                 }
206 #endif // TARGET_JVM
207 #endif
208         }
209 }