forked from ReClassNET/ReClass.NET
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCustomDataMapTest.cs
158 lines (127 loc) · 3.88 KB
/
CustomDataMapTest.cs
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using NFluent;
using ReClassNET.Util;
using Xunit;
namespace ReClass.NET_Tests.Util
{
public class CustomDataMapTest
{
[Fact]
public void TestNullKeyNotAllowed()
{
var sut = new CustomDataMap();
Check.ThatCode(() => sut.SetString(null, default)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.SetBool(null, default)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.SetLong(null, default)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.SetULong(null, default)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.SetXElement(null, default)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.GetString(null)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.GetBool(null, default)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.GetLong(null, default)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.GetULong(null, default)).Throws<ArgumentNullException>();
Check.ThatCode(() => sut.GetXElement(null, default)).Throws<ArgumentNullException>();
}
[Theory]
[InlineData("key", "")]
[InlineData("key", "value")]
public void TestSetGetString(string key, string value)
{
var sut = new CustomDataMap();
sut.SetString(key, value);
Check.That(sut.GetString(key)).IsEqualTo(value);
}
[Theory]
[InlineData("key", "")]
[InlineData("key", "value")]
public void TestIndexString(string key, string value)
{
var sut = new CustomDataMap();
sut.SetString(key, value);
Check.That(sut[key]).IsEqualTo(value);
}
[Fact]
public void TestItemEnumeration()
{
var data = new Dictionary<string, string>
{
{ "key1", "value1" },
{ "key2", "value2" },
{ "key3", "value3" }
};
var sut = new CustomDataMap();
foreach (var kv in data)
{
sut.SetString(kv.Key, kv.Value);
}
Check.That(sut).IsEquivalentTo(data);
}
[Fact]
public void TestRemoveItem()
{
const string KeyToRemove = "key2";
var data = new Dictionary<string, string>
{
{ "key1", "value1" },
{ KeyToRemove, "value2" },
{ "key3", "value3" }
};
var sut = new CustomDataMap();
foreach (var kv in data)
{
sut.SetString(kv.Key, kv.Value);
}
sut.RemoveValue(KeyToRemove);
Check.That(sut).IsEquivalentTo(data.Where(kv => kv.Key != KeyToRemove));
}
[Theory]
[InlineData("key", true)]
[InlineData("key", false)]
public void TestSetGetBool(string key, bool value)
{
var sut = new CustomDataMap();
sut.SetBool(key, value);
Check.That(sut.GetBool(key, !value)).IsEqualTo(value);
}
[Theory]
[InlineData("key", -1)]
[InlineData("key", 0)]
[InlineData("key", 1)]
[InlineData("key", long.MaxValue)]
[InlineData("key", long.MinValue)]
public void TestSetGetLong(string key, long value)
{
var sut = new CustomDataMap();
sut.SetLong(key, value);
Check.That(sut.GetLong(key, 0)).IsEqualTo(value);
}
[Theory]
[InlineData("key", 0)]
[InlineData("key", 1)]
[InlineData("key", ulong.MaxValue)]
[InlineData("key", ulong.MinValue)]
public void TestSetGetULong(string key, ulong value)
{
var sut = new CustomDataMap();
sut.SetULong(key, value);
Check.That(sut.GetULong(key, 0)).IsEqualTo(value);
}
public static IEnumerable<object[]> GetTestSetGetXElementData() => new List<object[]>
{
new object[] { "key", null },
new object[] { "key", new XElement("name") },
new object[] { "key", new XElement("name", new XAttribute("attr", "test")) },
new object[] { "key", new XElement("name", new XElement("value", "test")) }
};
[Theory]
[MemberData(nameof(GetTestSetGetXElementData))]
public void TestSetGetXElement(string key, XElement value)
{
var sut = new CustomDataMap();
sut.SetXElement(key, value);
Check.That(XNode.DeepEquals(sut.GetXElement(key, null), value)).IsTrue();
}
}
}