1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
|
//
// SwitchesTest.cs:
// NUnit Test Cases for System.Diagnostics.BooleanSwitch and
// System.Diagnostics.TraceSwitch
//
// Authors:
// Jonathan Pryor (jonpryor@vt.edu)
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2002 Jonathan Pryor
// (C) 2003 Martin Willemoes Hansen
//
using NUnit.Framework;
using System;
using System.Text;
using System.Collections;
using System.Configuration;
using System.Diagnostics;
namespace MonoTests.System.Diagnostics {
class TestNewSwitch : Switch {
private string v;
private StringBuilder ops = new StringBuilder ();
private const string expected =
".ctor\n" +
"get_TestValue\n" +
"OnSwitchSettingChanged\n" +
"GetSetting\n";
public TestNewSwitch (string name, string desc)
: base (name, desc)
{
ops.Append (".ctor\n");
}
public string TestValue {
get {
ops.Append ("get_TestValue\n");
// ensure that the .config file is read in
int n = base.SwitchSetting;
// remove warning about unused variable
n = 5;
return v;
}
}
#if NET_2_0
public string [] ExposeSupportedAttributes ()
{
return GetSupportedAttributes ();
}
#endif
public bool Validate ()
{
return expected == ops.ToString();
}
private void GetSetting ()
{
ops.Append ("GetSetting\n");
IDictionary d = (IDictionary) ConfigurationSettings.GetConfig ("system.diagnostics");
if (d != null) {
d = (IDictionary) d ["switches"];
if (d != null) {
v = d [DisplayName].ToString();
}
}
}
protected override void OnSwitchSettingChanged ()
{
ops.Append ("OnSwitchSettingChanged\n");
GetSetting ();
}
}
[TestFixture]
public class SwitchesTest {
private static BooleanSwitch bon = new BooleanSwitch ("bool-true", "");
private static BooleanSwitch bon2 = new BooleanSwitch ("bool-true-2", "");
private static BooleanSwitch bon3 = new BooleanSwitch ("bool-true-3", "");
private static BooleanSwitch boff = new BooleanSwitch ("bool-false", "");
private static BooleanSwitch boff2 = new BooleanSwitch ("bool-default", "");
private static TraceSwitch toff = new TraceSwitch ("trace-off", "");
private static TraceSwitch terror = new TraceSwitch ("trace-error", "");
private static TraceSwitch twarning = new TraceSwitch ("trace-warning", "");
private static TraceSwitch tinfo = new TraceSwitch ("trace-info", "");
private static TraceSwitch tverbose = new TraceSwitch ("trace-verbose", "");
private static TraceSwitch tdefault = new TraceSwitch ("no-value", "");
private static TraceSwitch tsv = new TraceSwitch ("string-value", "");
private static TraceSwitch tnegative = new TraceSwitch ("trace-negative", "");
private static TestNewSwitch tns = new TestNewSwitch ("custom-switch", "");
[Test]
public void BooleanSwitches ()
{
Assert.IsTrue (bon.Enabled, "#BS:T:1");
Assert.IsTrue (bon2.Enabled, "#BS:T:2");
Assert.IsTrue (bon3.Enabled, "#BS:T:3");
Assert.IsTrue (!boff.Enabled, "#BS:F:1");
Assert.IsTrue (!boff2.Enabled, "#BS:F:2");
}
[Test]
public void TraceSwitches ()
{
// The levels 0..4:
CheckTraceSwitch (toff, false, false, false, false);
CheckTraceSwitch (terror, true, false, false, false);
CheckTraceSwitch (twarning, true, true, false, false);
CheckTraceSwitch (tinfo, true, true, true, false);
CheckTraceSwitch (tverbose, true, true, true, true);
// Default value is 0
CheckTraceSwitch (tdefault, false, false, false, false);
// string value can't be converted to int, so default is 0
CheckTraceSwitch (tsv, false, false, false, false);
// negative number is < 0, so all off
CheckTraceSwitch (tnegative, false, false, false, false);
}
private void CheckTraceSwitch (TraceSwitch ts, bool te, bool tw, bool ti, bool tv)
{
string desc = string.Format ("#TS:{0}", ts.DisplayName);
Assert.AreEqual (te, ts.TraceError, desc + ":TraceError");
Assert.AreEqual (tw, ts.TraceWarning, desc + ":TraceWarning");
Assert.AreEqual (ti, ts.TraceInfo, desc + ":TraceInfo");
Assert.AreEqual (tv, ts.TraceVerbose, desc + ":TraceVerbose");
}
[Test]
#if NET_2_0
[Ignore ("this test depends on 1.x configuration type")]
#endif
public void NewSwitch ()
{
Assert.AreEqual ("42", tns.TestValue, "#NS:TestValue");
Assert.IsTrue (tns.Validate(), "#NS:Validate");
}
#if NET_2_0
[Test]
public void GetSupportedAttributes ()
{
Assert.IsNull (tns.ExposeSupportedAttributes ());
}
[Test] // no ArgumentNullException happens...
public void BooleanSwitchNullDefaultValue ()
{
new BooleanSwitch ("test", "", null);
}
[Test]
public void BooleanSwitchValidDefaultValue ()
{
BooleanSwitch s = new BooleanSwitch ("test", "", "2");
Assert.IsTrue (s.Enabled, "#1");
s = new BooleanSwitch ("test", "", "0");
Assert.IsTrue (!s.Enabled, "#2");
s = new BooleanSwitch ("test", "", "true");
Assert.IsTrue (s.Enabled, "#3");
s = new BooleanSwitch ("test", "", "True");
Assert.IsTrue (s.Enabled, "#4");
s = new BooleanSwitch ("test", "", "truE");
Assert.IsTrue (s.Enabled, "#5");
}
[Test]
[ExpectedException (typeof (FormatException))]
public void BooleanSwitchInvalidDefaultValue ()
{
BooleanSwitch s = new BooleanSwitch ("test", "", "hoge");
Assert.IsTrue (!s.Enabled);
}
#endif
}
}
|