2 // EnvironmentTest.cs - NUnit Test Cases for Environment
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // (C) 2004-2005 Novell (http://www.novell.com)
11 using System.Collections;
13 using NUnit.Framework;
15 namespace MonoTests.System
18 public class EnvironmentTest
20 private void ExpandEquals (string toExpand, string toMatch)
22 string expanded = Environment.ExpandEnvironmentVariables (toExpand);
23 Assert.AreEqual (toMatch, expanded, "ExpandEnvironmentVariables(" + toExpand + ").Match");
26 private void ExpandStartsEnds (string toExpand, string start, string end)
28 string expanded = Environment.ExpandEnvironmentVariables (toExpand);
29 Assert.IsTrue (expanded.StartsWith (start), "ExpandEnvironmentVariables(" + toExpand + ").Start");
30 Assert.IsTrue (expanded.EndsWith (end), "ExpandEnvironmentVariables(" + toExpand + ").End");
33 private void ExpandDifferent (string toExpand)
35 string expanded = Environment.ExpandEnvironmentVariables (toExpand);
36 Assert.IsFalse ((toExpand == expanded), "ExpandEnvironmentVariables(" + toExpand + ").Different");
40 public void ExpandEnvironmentVariables_UnknownVariable ()
42 ExpandEquals ("Hello %UNKNOWN_ENV_VAR% :-)", "Hello %UNKNOWN_ENV_VAR% :-)");
46 public void ExpandEnvironmentVariables_KnownVariable ()
48 ExpandStartsEnds ("Path %PATH% :-)", "Path ", " :-)");
52 public void ExpandEnvironmentVariables_NotVariable ()
54 ExpandEquals ("100% :-)", "100% :-)");
58 public void ExpandEnvironmentVariables_Alone ()
60 ExpandDifferent ("%PATH%");
64 public void ExpandEnvironmentVariables_End ()
66 ExpandStartsEnds ("Hello %PATH%", "Hello ", "");
70 public void ExpandEnvironmentVariables_None ()
72 ExpandEquals ("Hello Mono", "Hello Mono");
76 public void ExpandEnvironmentVariables_EmptyVariable ()
78 ExpandEquals ("Hello %% Mono", "Hello %% Mono");
82 public void ExpandEnvironmentVariables_Double ()
84 ExpandDifferent ("%PATH%%PATH%");
85 string path = Environment.GetEnvironmentVariable ("PATH");
87 string expanded = Environment.ExpandEnvironmentVariables ("%PATH%%PATH%");
88 Assert.AreEqual (path + path, expanded, "#01");
93 public void ExpandEnvironmentVariables_ComplexExpandable ()
95 ExpandStartsEnds ("Hello %%%PATH%%%", "Hello %%", "%%");
99 public void ExpandEnvironmentVariables_ExpandableAndNonExpandable ()
101 string path = Environment.GetEnvironmentVariable ("PATH");
102 string expanded=Environment.ExpandEnvironmentVariables("%PATH% PATH%");
103 Assert.AreEqual (path + " PATH%", expanded);
108 public void ExpandEnvironmentVariables_ExpandableWithTrailingPercent ()
110 string path = Environment.GetEnvironmentVariable ("PATH");
111 string expanded=Environment.ExpandEnvironmentVariables("%PATH% %");
112 Assert.AreEqual (path+" %",expanded);
116 public void ExpandEnvironmentVariables_ComplexExpandable2 ()
118 ExpandStartsEnds ("Hello %%PATH%%%", "Hello %", "%%");
122 public void GetEnvironmentVariables ()
124 IDictionary d = Environment.GetEnvironmentVariables ();
125 Assert.IsTrue ((d is Hashtable), "Hashtable");
126 Assert.IsFalse (d.IsFixedSize, "IsFixedSize");
127 Assert.IsFalse (d.IsReadOnly, "IsReadOnly");
128 Assert.IsFalse (d.IsSynchronized, "IsSynchronized");
131 #if NET_2_0 && !TARGET_JVM
132 [Test] // bug #333740
133 [Category ("NotWorking")]
134 public void GetEnvironmentVariables_NewlySet ()
136 Environment.SetEnvironmentVariable ("MonoTestVariable", "TestValue");
137 IDictionary d = Environment.GetEnvironmentVariables ();
138 Assert.AreEqual ("TestValue", d ["MonoTestVariable"], "#1");
139 Environment.SetEnvironmentVariable ("MonoTestVariable", string.Empty);
140 Assert.AreEqual ("TestValue", d ["MonoTestVariable"], "#2");
141 d = Environment.GetEnvironmentVariables ();
142 Assert.IsNull (d ["MonoTestVariable"], "#3");
147 public void GetCommandLineArgs ()
149 string[] args = Environment.GetCommandLineArgs ();
150 Assert.IsNotNull (args, "not null");
151 Assert.IsTrue (((args.Length > 0) && (args.Length < 256)), "reasonable");
152 Assert.IsNotNull (args [0], "application");
157 [ExpectedException (typeof (ArgumentException))]
158 public void GetEnvironmentVariable_Target_Invalid ()
160 Environment.GetEnvironmentVariable ("MONO", (EnvironmentVariableTarget)Int32.MinValue);
164 [ExpectedException (typeof (ArgumentException))]
165 public void GetEnvironmentVariables_Target_Invalid ()
167 Environment.GetEnvironmentVariables ((EnvironmentVariableTarget)Int32.MinValue);
170 #if !TARGET_JVM // Environment.SetEnvironmentVariable not supported under TARGET_JVM
172 [ExpectedException (typeof (ArgumentException))]
173 public void SetEnvironmentVariable_Target_Invalid ()
175 Environment.SetEnvironmentVariable ("MONO", "GO", (EnvironmentVariableTarget)Int32.MinValue);
179 [ExpectedException (typeof (ArgumentNullException))]
180 public void SetEnvironmentVariable_Name_Null ()
182 Environment.SetEnvironmentVariable (null, "A");
186 [ExpectedException (typeof (ArgumentException))]
187 public void SetEnvironmentVariable_Name_Empty ()
189 Environment.SetEnvironmentVariable ("", "A");
193 [ExpectedException (typeof (ArgumentException))]
194 public void SetEnvironmentVariable_Name_ZeroChar ()
196 Environment.SetEnvironmentVariable ("\0", "A");
200 public void SetEnvironmentVariable ()
203 Environment.SetEnvironmentVariable ("A1", "B1");
204 Environment.SetEnvironmentVariable ("A2", "B2");
205 Environment.SetEnvironmentVariable ("A3", "B3");
206 Assert.AreEqual (Environment.GetEnvironmentVariable ("A1"), "B1");
207 Assert.AreEqual (Environment.GetEnvironmentVariable ("A2"), "B2");
208 Assert.AreEqual (Environment.GetEnvironmentVariable ("A3"), "B3");
211 Environment.SetEnvironmentVariable ("A3", "B4");
212 Assert.AreEqual (Environment.GetEnvironmentVariable ("A3"), "B4");
215 Environment.SetEnvironmentVariable ("A1", null);
216 Assert.IsNull (Environment.GetEnvironmentVariables ()["A1"]);
217 Environment.SetEnvironmentVariable ("A2", "");
218 Assert.IsNull (Environment.GetEnvironmentVariables ()["A2"]);
219 Environment.SetEnvironmentVariable ("A3", "\0");
220 Assert.IsNull (Environment.GetEnvironmentVariables ()["A3"]);