forked from dotnet/runtime
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathKeyValueConfigurationCollectionTests.cs
More file actions
137 lines (121 loc) · 4.93 KB
/
KeyValueConfigurationCollectionTests.cs
File metadata and controls
137 lines (121 loc) · 4.93 KB
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
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Configuration;
using Xunit;
namespace System.ConfigurationTests
{
public class KeyValueConfigurationCollectionTests
{
[Fact]
public void MsdnRootSample()
{
// https://msdn.microsoft.com/en-us/library/system.configuration.keyvalueconfigurationcollection(v=vs.110).aspx
using (var temp = new TempConfig(TestData.EmptyConfig))
{
var config = ConfigurationManager.OpenExeConfiguration(temp.ExePath);
AppSettingsSection configSection = (AppSettingsSection)config.GetSection("appSettings");
Assert.Equal("appSettings", configSection.SectionInformation.Name);
KeyValueConfigurationElement myAdminKeyVal = new KeyValueConfigurationElement("myAdminTool", "admin.aspx");
KeyValueConfigurationCollection configSettings = config.AppSettings.Settings;
Assert.Equal(0, configSettings.AllKeys.Length);
config.AppSettings.Settings.Add(myAdminKeyVal);
Assert.False(configSection.SectionInformation.IsLocked);
config.Save();
KeyValueConfigurationCollection settings =
config.AppSettings.Settings;
foreach (KeyValueConfigurationElement keyValueElement in settings)
{
Assert.Equal("myAdminTool", keyValueElement.Key);
Assert.Equal("admin.aspx", keyValueElement.Value);
}
}
}
[Fact]
public void CollectionTypeIsAddRemoveMap()
{
Assert.Equal(ConfigurationElementCollectionType.AddRemoveClearMap, new KeyValueConfigurationCollection().CollectionType);
}
[Fact]
public void ThrowOnDuplicateIsFalse()
{
Assert.False(new TestKeyValueCollection().TestThrowOnDuplicate);
}
[Fact]
public void CreateNewElement()
{
var element = new TestKeyValueCollection().TestCreateNewElement();
Assert.IsType<KeyValueConfigurationElement>(element);
Assert.Equal("", ((KeyValueConfigurationElement)element).Key);
Assert.Equal("", ((KeyValueConfigurationElement)element).Value);
}
[Fact]
public void EmptyAllKeys()
{
Assert.Equal(0, new KeyValueConfigurationCollection().AllKeys.Length);
}
[Fact]
public void AddNullKeyValueThrows()
{
Assert.Throws<ConfigurationErrorsException>(() => new KeyValueConfigurationCollection().Add(null, null));
}
[Fact]
public void AddNullKeyValueElementThrows()
{
var element = new KeyValueConfigurationElement(null, null);
Assert.Throws<ConfigurationErrorsException>(() => new KeyValueConfigurationCollection().Add(element));
}
[Fact]
public void AddNullKeyThrows()
{
Assert.Throws<ConfigurationErrorsException>(() => new KeyValueConfigurationCollection().Add(null, "foo"));
}
[Fact]
public void AddNullValue()
{
var collection = new KeyValueConfigurationCollection();
collection.Add("foo", null);
Assert.Null(collection["foo"].Value);
}
[Fact]
public void AddOverValue()
{
var collection = new KeyValueConfigurationCollection();
collection.Add("foo", "foo");
Assert.Equal("foo", collection["foo"].Value);
collection.Add("foo", "bar");
Assert.Equal("foo,bar", collection["foo"].Value);
}
[Fact]
public void ModifyElementValue()
{
var collection = new KeyValueConfigurationCollection();
collection.Add("foo", "foo");
collection["foo"].Value = "bar";
Assert.Equal("bar", collection["foo"].Value);
}
[Fact]
public void RemoveKey()
{
var collection = new KeyValueConfigurationCollection();
collection.Add("foo", "foo");
Assert.Equal("foo", collection["foo"].Value);
collection.Remove("foo");
Assert.Null(collection["foo"]);
}
[Fact]
public void Clear()
{
var collection = new KeyValueConfigurationCollection();
collection.Add("foo", "foo");
Assert.Equal("foo", collection["foo"].Value);
collection.Clear();
Assert.Null(collection["foo"]);
}
private class TestKeyValueCollection : KeyValueConfigurationCollection
{
public bool TestThrowOnDuplicate => ThrowOnDuplicate;
public ConfigurationElement TestCreateNewElement() => CreateNewElement();
}
}
}