2 // EnvironmentTest.cs - NUnit Test Cases for Environment
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // (C) 2004-2005 Novell (http://www.novell.com)
8 // Copyright 2011 Xamarin Inc (http://www.xamarin.com).
12 using System.Collections;
14 using NUnit.Framework;
16 namespace MonoTests.System
19 public class EnvironmentTest
21 private void ExpandEquals (string toExpand, string toMatch)
23 string expanded = Environment.ExpandEnvironmentVariables (toExpand);
24 Assert.AreEqual (toMatch, expanded, "ExpandEnvironmentVariables(" + toExpand + ").Match");
27 private void ExpandStartsEnds (string toExpand, string start, string end)
29 string expanded = Environment.ExpandEnvironmentVariables (toExpand);
30 Assert.IsTrue (expanded.StartsWith (start), "ExpandEnvironmentVariables(" + toExpand + ").Start");
31 Assert.IsTrue (expanded.EndsWith (end), "ExpandEnvironmentVariables(" + toExpand + ").End");
34 private void ExpandDifferent (string toExpand)
36 string expanded = Environment.ExpandEnvironmentVariables (toExpand);
37 Assert.IsFalse ((toExpand == expanded), "ExpandEnvironmentVariables(" + toExpand + ").Different");
41 public void ExpandEnvironmentVariables_UnknownVariable ()
43 ExpandEquals ("Hello %UNKNOWN_ENV_VAR% :-)", "Hello %UNKNOWN_ENV_VAR% :-)");
47 public void ExpandEnvironmentVariables_KnownVariable ()
49 ExpandStartsEnds ("Path %PATH% :-)", "Path ", " :-)");
53 public void ExpandEnvironmentVariables_NotVariable ()
55 ExpandEquals ("100% :-)", "100% :-)");
59 public void ExpandEnvironmentVariables_Alone ()
61 ExpandDifferent ("%PATH%");
65 public void ExpandEnvironmentVariables_End ()
67 ExpandStartsEnds ("Hello %PATH%", "Hello ", "");
71 public void ExpandEnvironmentVariables_None ()
73 ExpandEquals ("Hello Mono", "Hello Mono");
77 public void ExpandEnvironmentVariables_EmptyVariable ()
79 ExpandEquals ("Hello %% Mono", "Hello %% Mono");
83 public void ExpandEnvironmentVariables_Double ()
85 ExpandDifferent ("%PATH%%PATH%");
86 string path = Environment.GetEnvironmentVariable ("PATH");
88 string expanded = Environment.ExpandEnvironmentVariables ("%PATH%%PATH%");
89 Assert.AreEqual (path + path, expanded, "#01");
94 public void ExpandEnvironmentVariables_ComplexExpandable ()
96 ExpandStartsEnds ("Hello %%%PATH%%%", "Hello %%", "%%");
100 public void ExpandEnvironmentVariables_ExpandableAndNonExpandable ()
102 string path = Environment.GetEnvironmentVariable ("PATH");
103 string expanded=Environment.ExpandEnvironmentVariables("%PATH% PATH%");
104 Assert.AreEqual (path + " PATH%", expanded);
109 public void ExpandEnvironmentVariables_ExpandableWithTrailingPercent ()
111 string path = Environment.GetEnvironmentVariable ("PATH");
112 string expanded=Environment.ExpandEnvironmentVariables("%PATH% %");
113 Assert.AreEqual (path+" %",expanded);
117 public void ExpandEnvironmentVariables_ComplexExpandable2 ()
119 ExpandStartsEnds ("Hello %%PATH%%%", "Hello %", "%%");
124 public void ExpandEnvironmentVariables_ExpandMultiple ()
126 string path = Environment.GetEnvironmentVariable ("PATH");
127 var expected = "%TEST123" + path + "TEST456%";
128 ExpandEquals ("%TEST123%PATH%TEST456%", expected);
132 public void GetEnvironmentVariables ()
134 IDictionary d = Environment.GetEnvironmentVariables ();
135 Assert.IsTrue ((d is Hashtable), "Hashtable");
136 Assert.IsFalse (d.IsFixedSize, "IsFixedSize");
137 Assert.IsFalse (d.IsReadOnly, "IsReadOnly");
138 Assert.IsFalse (d.IsSynchronized, "IsSynchronized");
142 [Test] // bug #333740
143 public void GetEnvironmentVariables_NewlySet ()
145 Environment.SetEnvironmentVariable ("MonoTestVariable", "TestValue");
146 IDictionary d = Environment.GetEnvironmentVariables ();
147 Assert.AreEqual ("TestValue", d ["MonoTestVariable"], "#1");
148 Environment.SetEnvironmentVariable ("MonoTestVariable", string.Empty);
149 Assert.AreEqual ("TestValue", d ["MonoTestVariable"], "#2");
150 d = Environment.GetEnvironmentVariables ();
151 Assert.IsNull (d ["MonoTestVariable"], "#3");
156 public void GetCommandLineArgs ()
158 string[] args = Environment.GetCommandLineArgs ();
159 Assert.IsNotNull (args, "not null");
160 Assert.IsTrue (((args.Length > 0) && (args.Length < 256)), "reasonable");
161 Assert.IsNotNull (args [0], "application");
166 [ExpectedException (typeof (ArgumentException))]
167 public void GetEnvironmentVariable_Target_Invalid ()
169 Environment.GetEnvironmentVariable ("MONO", (EnvironmentVariableTarget)Int32.MinValue);
173 [ExpectedException (typeof (ArgumentException))]
174 public void GetEnvironmentVariables_Target_Invalid ()
176 Environment.GetEnvironmentVariables ((EnvironmentVariableTarget)Int32.MinValue);
180 [ExpectedException (typeof (ArgumentException))]
181 public void SetEnvironmentVariable_Target_Invalid ()
183 Environment.SetEnvironmentVariable ("MONO", "GO", (EnvironmentVariableTarget)Int32.MinValue);
187 [ExpectedException (typeof (ArgumentNullException))]
188 public void SetEnvironmentVariable_Name_Null ()
190 Environment.SetEnvironmentVariable (null, "A");
194 [ExpectedException (typeof (ArgumentException))]
195 public void SetEnvironmentVariable_Name_Empty ()
197 Environment.SetEnvironmentVariable ("", "A");
201 [ExpectedException (typeof (ArgumentException))]
202 public void SetEnvironmentVariable_Name_ZeroChar ()
204 Environment.SetEnvironmentVariable ("\0", "A");
208 public void SetEnvironmentVariable ()
211 Environment.SetEnvironmentVariable ("A1", "B1");
212 Environment.SetEnvironmentVariable ("A2", "B2");
213 Environment.SetEnvironmentVariable ("A3", "B3");
214 Assert.AreEqual (Environment.GetEnvironmentVariable ("A1"), "B1");
215 Assert.AreEqual (Environment.GetEnvironmentVariable ("A2"), "B2");
216 Assert.AreEqual (Environment.GetEnvironmentVariable ("A3"), "B3");
219 Environment.SetEnvironmentVariable ("A3", "B4");
220 Assert.AreEqual (Environment.GetEnvironmentVariable ("A3"), "B4");
223 Environment.SetEnvironmentVariable ("A1", null);
224 Assert.IsNull (Environment.GetEnvironmentVariables ()["A1"]);
225 Environment.SetEnvironmentVariable ("A2", "");
226 Assert.IsNull (Environment.GetEnvironmentVariables ()["A2"]);
227 Environment.SetEnvironmentVariable ("A3", "\0");
228 Assert.IsNull (Environment.GetEnvironmentVariables ()["A3"]);