Skip to content

Commit 987fd4a

Browse files
Expanded collection tests.
1 parent 853f98a commit 987fd4a

8 files changed

Lines changed: 65 additions & 9 deletions

testing/Open.Collections.Tests/BasicListTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
using Xunit;
55

66
namespace Open.Collections.Tests;
7-
public abstract class BasicListTests<TList> : BasicCollectionTests<TList>
7+
public abstract class BasicListTests<TList>
8+
: BasicCollectionTests<TList>
89
where TList : IList<int>
910
{
1011
protected BasicListTests(TList list) : base(list)

testing/Open.Collections.Tests/Collections/LockSyncDictionaryTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
namespace Open.Collections.Tests.Collections;
44
public class LockSyncDictionaryTests
5-
: BasicDictionaryTests<LockSynchronizedDictionary<int, int>>
5+
: ParallelDictionaryTests<LockSynchronizedDictionary<int, int>>
66
{
77
public LockSyncDictionaryTests() : base(new())
88
{
99
}
1010
}
1111

1212
public class LockSyncOrderedDictionaryTests
13-
: BasicDictionaryTests<LockSynchronizedDictionary<int, int>>
13+
: ParallelDictionaryTests<LockSynchronizedDictionary<int, int>>
1414
{
1515
public LockSyncOrderedDictionaryTests() : base(new())
1616
{

testing/Open.Collections.Tests/Collections/LockSyncListTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Open.Collections.Tests.Collections;
44
public class LockSyncListTests
5-
: BasicListTests<LockSynchronizedList<int>>
5+
: ParallelListTests<LockSynchronizedList<int>>
66
{
77
public LockSyncListTests() : base(new())
88
{

testing/Open.Collections.Tests/Collections/ReadWriteSyncLDictionaryTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
namespace Open.Collections.Tests.Collections;
44
public class ReadWriteSyncDictionaryTests
5-
: BasicDictionaryTests<ReadWriteSynchronizedDictionary<int, int>>
5+
: ParallelDictionaryTests<ReadWriteSynchronizedDictionary<int, int>>
66
{
77
public ReadWriteSyncDictionaryTests() : base(new())
88
{
99
}
1010
}
1111

1212
public class ReadWriteSyncOrderedDictionaryTests
13-
: BasicDictionaryTests<ReadWriteSynchronizedDictionary<int, int>>
13+
: ParallelDictionaryTests<ReadWriteSynchronizedDictionary<int, int>>
1414
{
1515
public ReadWriteSyncOrderedDictionaryTests() : base(new())
1616
{

testing/Open.Collections.Tests/Collections/ReadWriteSyncListTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Open.Collections.Tests.Collections;
44
public class ReadWriteSyncListTests
5-
: BasicListTests<ReadWriteSynchronizedList<int>>
5+
: ParallelListTests<ReadWriteSynchronizedList<int>>
66
{
77
public ReadWriteSyncListTests() : base(new())
88
{

testing/Open.Collections.Tests/Collections/TrackedDictionaryTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,17 @@ namespace Open.Collections.Tests.Collections;
44
public class TrackedDictionaryTests
55
: BasicDictionaryTests<TrackedDictionary<int, int>>
66
{
7-
public TrackedDictionaryTests() : base(new())
7+
public TrackedDictionaryTests()
8+
: base(new (new Threading.ReadWriteModificationSynchronizer()))
89
{
910
}
1011
}
1112

1213
public class TrackedOrderedDictionaryTests
1314
: BasicDictionaryTests<TrackedOrderedDictionary<int, int>>
1415
{
15-
public TrackedOrderedDictionaryTests() : base(new())
16+
public TrackedOrderedDictionaryTests()
17+
: base(new(new Threading.SimpleLockingModificationSynchronizer()))
1618
{
1719
}
1820
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using FluentAssertions;
2+
using System.Collections.Generic;
3+
using System.Threading.Tasks;
4+
using Xunit;
5+
6+
namespace Open.Collections.Tests;
7+
public abstract class ParallelDictionaryTests<TDictionary>
8+
: BasicDictionaryTests<TDictionary>
9+
where TDictionary : IDictionary<int, int>
10+
{
11+
protected ParallelDictionaryTests(TDictionary dictionary) : base(dictionary)
12+
{
13+
}
14+
15+
[Fact]
16+
public void ParallelAddThenRemove()
17+
{
18+
const int count = 10000000;
19+
Dictionary.Clear();
20+
Parallel.For(0, count, i => Dictionary.Add(i, i));
21+
Dictionary.Count.Should().Be(count);
22+
23+
Parallel.For(0, count, i => Dictionary.Remove(i));
24+
Dictionary.Count.Should().Be(0);
25+
}
26+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using FluentAssertions;
2+
using System.Collections.Generic;
3+
using System.Threading.Tasks;
4+
using Xunit;
5+
6+
namespace Open.Collections.Tests;
7+
public abstract class ParallelListTests<TList>
8+
: BasicListTests<TList>
9+
where TList : IList<int>
10+
{
11+
protected ParallelListTests(TList list) : base(list)
12+
{
13+
}
14+
15+
[Fact]
16+
public void ParallelAddThenRemove()
17+
{
18+
const int countAdd = 10000000;
19+
Collection.Clear();
20+
Parallel.For(0, countAdd, i => Collection.Add(i));
21+
Collection.Count.Should().Be(countAdd);
22+
23+
const int countRemove = 900;
24+
Parallel.For(0, countRemove, i => Collection.Remove(i * 3));
25+
Collection.Count.Should().Be(countAdd - countRemove);
26+
}
27+
}

0 commit comments

Comments
 (0)