DTLib.XXHash/DTLib.XXHash.Tests/UtilsTest.cs

84 lines
2.3 KiB
C#

namespace DTLib.XXHash.Tests
{
using System;
using Xunit;
public class UtilsTest
{
[Fact]
public void Copy_different_blocks()
{
// Arrange
byte[] src = new byte[100];
byte[] dst = new byte[100];
int[] counts = new int[]
{
0, 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, 64, 65, 66, 96, 99
};
var rand = new Random(42);
rand.NextBytes(src);
// Act, Assert
foreach (int count in counts)
{
Utils.BlockCopy(src, 0, dst, 0, count);
for (int i = 0; i < count; i++)
{
Assert.Equal(src[i], dst[i]);
}
}
}
[Fact]
public void Should_convert_to_bytes()
{
var hash = new uint128
{
high64 = 3466251221427321594,
low64 = 2862260537881727713
};
// (hBits * 18446744073709551616) + lBits
// (3466251221427321594 * 18446744073709551616) + 2862260537881727713
// dec: 63941049176852939372872402763456123617
// hex: 301A991EF3707AFA27B8CACB570F12E1
var expected = new byte[]
{
0xe1, 0x12, 0x0F, 0x57, 0xcb, 0xca, 0xb8, 0x27,
0xfa, 0x7a, 0x70, 0xf3, 0x1e, 0x99, 0x1a, 0x30
};
// Act
var actual = hash.ToBytes();
// Assert
for (int i = 0; i < 16; i++)
Assert.Equal(expected[i], actual[i]);
}
[Fact]
public void Should_convert_to_guid()
{
var hash = new uint128
{
high64 = 3466251221427321594,
low64 = 2862260537881727713
};
// Act
var guid1 = new Guid(hash.ToBytes());
var guid2 = hash.ToGuid();
// Assert
Assert.Equal(guid1, guid2);
}
}
}