Skip to content

Commit e6b7c05

Browse files
committed
More unit tests
1 parent 126e8da commit e6b7c05

1 file changed

Lines changed: 97 additions & 0 deletions

File tree

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// Copyright 2020 New Relic, Inc. All rights reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
using NewRelic.Agent.Extensions.Providers.Wrapper;
5+
using NUnit.Framework;
6+
7+
namespace NewRelic.Agent.Core.Database;
8+
9+
[TestFixture]
10+
public class CacheByDatastoreVendorTests
11+
{
12+
private CacheByDatastoreVendor<string, string> _cache;
13+
14+
[SetUp]
15+
public void SetUp()
16+
{
17+
_cache = new CacheByDatastoreVendor<string, string>("TestCache");
18+
}
19+
20+
[Test]
21+
public void GetOrAdd_AddsNewItemToCache()
22+
{
23+
var result = _cache.GetOrAdd(DatastoreVendor.MongoDB, "key1", () => "value1");
24+
25+
Assert.That(result, Is.EqualTo("value1"));
26+
Assert.That(_cache.Contains(DatastoreVendor.MongoDB, "key1"), Is.True);
27+
}
28+
29+
[Test]
30+
public void GetOrAdd_ReturnsExistingItemFromCache()
31+
{
32+
_cache.GetOrAdd(DatastoreVendor.MongoDB, "key1", () => "value1");
33+
var result = _cache.GetOrAdd(DatastoreVendor.MongoDB, "key1", () => "value2");
34+
35+
Assert.That(result, Is.EqualTo("value1"));
36+
}
37+
38+
[Test]
39+
public void TryAdd_AddsNewItemToCache()
40+
{
41+
var result = _cache.TryAdd(DatastoreVendor.MongoDB, "key1", () => "value1");
42+
43+
Assert.That(result, Is.True);
44+
Assert.That(_cache.Contains(DatastoreVendor.MongoDB, "key1"), Is.True);
45+
}
46+
47+
[Test]
48+
public void TryAdd_DoesNotAddExistingItemToCache()
49+
{
50+
_cache.TryAdd(DatastoreVendor.MongoDB, "key1", () => "value1");
51+
var result = _cache.TryAdd(DatastoreVendor.MongoDB, "key1", () => "value2");
52+
53+
Assert.That(result, Is.False);
54+
Assert.That(_cache.Contains(DatastoreVendor.MongoDB, "key1"), Is.True);
55+
}
56+
57+
[Test]
58+
public void Contains_ReturnsTrueForExistingItem()
59+
{
60+
_cache.GetOrAdd(DatastoreVendor.MongoDB, "key1", () => "value1");
61+
62+
var result = _cache.Contains(DatastoreVendor.MongoDB, "key1");
63+
64+
Assert.That(result, Is.True);
65+
}
66+
67+
[Test]
68+
public void Contains_ReturnsFalseForNonExistingItem()
69+
{
70+
var result = _cache.Contains(DatastoreVendor.MongoDB, "key1");
71+
72+
Assert.That(result, Is.False);
73+
}
74+
75+
[Test]
76+
public void SetCapacity_UpdatesCacheCapacity()
77+
{
78+
_cache.SetCapacity(500);
79+
80+
var result = _cache.GetOrAdd(DatastoreVendor.MongoDB, "key1", () => "value1");
81+
82+
Assert.That(result, Is.EqualTo("value1"));
83+
Assert.That(_cache.Contains(DatastoreVendor.MongoDB, "key1"), Is.True);
84+
}
85+
86+
[Test]
87+
public void Reset_ClearsAllCaches()
88+
{
89+
_cache.GetOrAdd(DatastoreVendor.MongoDB, "key1", () => "value1");
90+
_cache.GetOrAdd(DatastoreVendor.MySQL, "key2", () => "value2");
91+
92+
_cache.Reset();
93+
94+
Assert.That(_cache.Contains(DatastoreVendor.MongoDB, "key1"), Is.False);
95+
Assert.That(_cache.Contains(DatastoreVendor.MySQL, "key2"), Is.False);
96+
}
97+
}

0 commit comments

Comments
 (0)