-
-
Notifications
You must be signed in to change notification settings - Fork 150
/
JsonAppenderTests.cs
90 lines (69 loc) · 1.89 KB
/
JsonAppenderTests.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
public class JsonAppenderTests : IDisposable
{
static AsyncLocal<bool> isInThisTest = new();
[ModuleInitializer]
public static void Initialize() =>
#region RegisterJsonAppender
VerifierSettings.RegisterJsonAppender(
context =>
{
if (ShouldInclude(context))
{
return new ToAppend("theData", "theValue");
}
return null;
});
#endregion
// ReSharper disable once UnusedParameter.Local
static bool ShouldInclude(IReadOnlyDictionary<string, object> context) =>
isInThisTest.Value;
public JsonAppenderTests() =>
isInThisTest.Value = true;
public void Dispose() =>
isInThisTest.Value = false;
#region JsonAppender
[Fact]
public Task WithJsonAppender() =>
Verify("TheValue");
#endregion
#region JsonLocalAppender
[Fact]
public Task WithLocalJsonAppender() =>
Verify("TheValue")
.AppendValue("name", "value");
#endregion
[Fact]
public Task WithDuplicate() =>
Verify("TheValue")
.AppendValue("duplicate", "value1")
.AppendValue("duplicate", "value2");
[Fact]
public Task NullText() =>
Verify((string) null!);
[Fact]
public Task Anon() =>
Verify(new
{
foo = "bar"
});
#region JsonAppenderStream
[Fact]
public Task Stream() =>
Verify(IoHelpers.OpenRead("sample.txt"));
#endregion
[Fact]
public Task StringInfoAndStreamTarget() =>
Verify("info", [new("bin", new MemoryStream([1]))]);
[Fact]
public Task File() =>
VerifyFile("sample.txt");
[Fact]
public Task OnlyJsonAppender() =>
Verify();
[Fact]
public Task NoJsonAppender()
{
isInThisTest.Value = false;
return Verify();
}
}