38 lines
No EOL
1.4 KiB
C#
38 lines
No EOL
1.4 KiB
C#
namespace PersistentMap.Tests;
|
|
using PersistentOrderedMap;
|
|
using System.Linq;
|
|
using Xunit;
|
|
public class StandardStrategy
|
|
{
|
|
private static string GenerateRandomString(int length, Random rnd)
|
|
{
|
|
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
return new string(Enumerable.Repeat(chars, length).Select(s => s[rnd.Next(s.Length)]).ToArray());
|
|
}
|
|
|
|
[Fact]
|
|
public void Setup()
|
|
{
|
|
var n = 1000;
|
|
var stdStrategy = new StandardStrategy<string>();
|
|
var uniStrategy = new UnicodeStrategy();
|
|
var rnd = new Random(42);
|
|
var stringLength = 10;
|
|
// Build random strings
|
|
var allKeys = Enumerable.Range(0, n).Select(_ => GenerateRandomString(stringLength, rnd)).Distinct().ToArray();
|
|
|
|
// Regenerate if Distinct() reduced array size (highly unlikely with length 8/50, but safe)
|
|
while (allKeys.Length < n)
|
|
{
|
|
allKeys = allKeys.Concat(new[] { GenerateRandomString(stringLength, rnd) }).Distinct().ToArray();
|
|
}
|
|
|
|
var transStd = BaseOrderedMap<string, int, StandardStrategy<string>>.CreateTransient(stdStrategy);
|
|
var transUni = BaseOrderedMap<string, int, UnicodeStrategy>.CreateTransient(uniStrategy);
|
|
for (int i = 0; i < allKeys.Length; i++)
|
|
{
|
|
transStd.Set(allKeys[i], i);
|
|
transUni.Set(allKeys[i], i);
|
|
}
|
|
}
|
|
} |