diff --git a/src/Data.HashFunction.sln b/src/Data.HashFunction.sln
index 625121d..a5bc0e0 100644
--- a/src/Data.HashFunction.sln
+++ b/src/Data.HashFunction.sln
@@ -10,6 +10,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{D0A9A6
..\appveyor.yml = ..\appveyor.yml
Data.HashFunction.runsettings = Data.HashFunction.runsettings
FriendAssemblies.cs = FriendAssemblies.cs
+ FriendAssemblies.Unsigned.cs = FriendAssemblies.Unsigned.cs
SolutionInfo.cs = SolutionInfo.cs
EndProjectSection
EndProject
@@ -57,7 +58,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Data.HashFunction.xx
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Data.HashFunction.HashAlgorithm", "System.Data.HashFunction.HashAlgorithm\System.Data.HashFunction.HashAlgorithm.csproj", "{89C43129-57DC-445C-9521-5C7A6011A878}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.HashFunction.FarmHash", "System.Data.HashFunction.FarmHash\System.Data.HashFunction.FarmHash.csproj", "{62D94F50-2DDD-4F81-B4AF-9D1A53C1404C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Data.HashFunction.FarmHash", "System.Data.HashFunction.FarmHash\System.Data.HashFunction.FarmHash.csproj", "{62D94F50-2DDD-4F81-B4AF-9D1A53C1404C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.HashFunction.FarmHash.FarmHashSharp", "System.Data.HashFunction.FarmHash.FarmHashSharp\System.Data.HashFunction.FarmHash.FarmHashSharp.csproj", "{49823118-9A33-43FB-A191-7CED19CF79DF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.HashFunction.Test.Unsigned", "System.Data.HashFunction.Test.Unsigned\System.Data.HashFunction.Test.Unsigned.csproj", "{3B0B798B-AED7-4337-A470-3C7DE50314CC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.HashFunction.MetroHash", "System.Data.HashFunction.MetroHash\System.Data.HashFunction.MetroHash.csproj", "{F65860E9-DF4C-44F4-9AF0-3E8B2BC682FE}"
EndProject
@@ -134,6 +139,14 @@ Global
{62D94F50-2DDD-4F81-B4AF-9D1A53C1404C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{62D94F50-2DDD-4F81-B4AF-9D1A53C1404C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62D94F50-2DDD-4F81-B4AF-9D1A53C1404C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {49823118-9A33-43FB-A191-7CED19CF79DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {49823118-9A33-43FB-A191-7CED19CF79DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {49823118-9A33-43FB-A191-7CED19CF79DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {49823118-9A33-43FB-A191-7CED19CF79DF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3B0B798B-AED7-4337-A470-3C7DE50314CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3B0B798B-AED7-4337-A470-3C7DE50314CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3B0B798B-AED7-4337-A470-3C7DE50314CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3B0B798B-AED7-4337-A470-3C7DE50314CC}.Release|Any CPU.Build.0 = Release|Any CPU
{F65860E9-DF4C-44F4-9AF0-3E8B2BC682FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F65860E9-DF4C-44F4-9AF0-3E8B2BC682FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F65860E9-DF4C-44F4-9AF0-3E8B2BC682FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/src/FriendAssemblies.Unsigned.cs b/src/FriendAssemblies.Unsigned.cs
new file mode 100644
index 0000000..cc85465
--- /dev/null
+++ b/src/FriendAssemblies.Unsigned.cs
@@ -0,0 +1,7 @@
+using System.Runtime.CompilerServices;
+
+#if DEBUG
+
+[assembly:InternalsVisibleTo("System.Data.HashFunction.Test.Unsigned")]
+
+#endif
\ No newline at end of file
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash32Factory.cs b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash32Factory.cs
new file mode 100644
index 0000000..11a36c4
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash32Factory.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Data.HashFunction.FarmHash.FarmHashSharp
+{
+ ///
+ /// Provides instances of implementations of .
+ ///
+ public sealed class FarmHashSharpHash32Factory
+ : FarmHashFingerprint32FactoryBase,
+ IFarmHashSharpHash32Factory
+ {
+ ///
+ /// Gets the singleton instance of this factory.
+ ///
+ public static IFarmHashSharpHash32Factory Instance { get; } = new FarmHashSharpHash32Factory();
+
+
+ private FarmHashSharpHash32Factory()
+ {
+
+ }
+
+
+ ///
+ /// Creates a new instance.
+ ///
+ /// A instance.
+ public override IFarmHashSharpHash32 Create() =>
+ new FarmHashSharpHash32_Implementation();
+ }
+}
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash32_Implementation.cs b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash32_Implementation.cs
new file mode 100644
index 0000000..28d001a
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash32_Implementation.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Data.HashFunction.Core;
+using System.Data.HashFunction.Core.Utilities.UnifiedData;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace System.Data.HashFunction.FarmHash.FarmHashSharp
+{
+ using Farmhash = global::Farmhash.Sharp.Farmhash;
+
+ ///
+ /// Data.HashFunction implementation of via FarmHash.Sharp's Hash32 method.
+ ///
+ internal class FarmHashSharpHash32_Implementation
+ : HashFunctionAsyncBase,
+ IFarmHashSharpHash32
+ {
+ public override int HashSizeInBits { get; } = 32;
+
+
+ protected override byte[] ComputeHashInternal(IUnifiedData data, CancellationToken cancellationToken)
+ {
+ var dataArray = data.ToArray(cancellationToken);
+
+ return BitConverter.GetBytes(
+ Farmhash.Hash32(dataArray, dataArray.Length));
+ }
+
+ protected override async Task ComputeHashAsyncInternal(IUnifiedDataAsync data, CancellationToken cancellationToken)
+ {
+ var dataArray = await data.ToArrayAsync(cancellationToken)
+ .ConfigureAwait(false);
+
+ return BitConverter.GetBytes(
+ Farmhash.Hash32(dataArray, dataArray.Length));
+ }
+ }
+}
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash64Factory.cs b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash64Factory.cs
new file mode 100644
index 0000000..8729d66
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash64Factory.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Data.HashFunction.FarmHash.FarmHashSharp
+{
+ ///
+ /// Provides instances of implementations of .
+ ///
+ public sealed class FarmHashSharpHash64Factory
+ : FarmHashXoHash64FactoryBase,
+ IFarmHashSharpHash64Factory
+ {
+ ///
+ /// Gets the singleton instance of this factory.
+ ///
+ public static IFarmHashSharpHash64Factory Instance { get; } = new FarmHashSharpHash64Factory();
+
+
+ private FarmHashSharpHash64Factory()
+ {
+
+ }
+
+
+ ///
+ /// Creates a new instance.
+ ///
+ /// A instance.
+ public override IFarmHashSharpHash64 Create() =>
+ new FarmHashSharpHash64_Implementation();
+ }
+}
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash64_Implementation.cs b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash64_Implementation.cs
new file mode 100644
index 0000000..79a6536
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/FarmHashSharpHash64_Implementation.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Data.HashFunction.Core;
+using System.Data.HashFunction.Core.Utilities.UnifiedData;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace System.Data.HashFunction.FarmHash.FarmHashSharp
+{
+ using Farmhash = global::Farmhash.Sharp.Farmhash;
+
+ ///
+ /// Data.HashFunction implementation of via FarmHash.Sharp's Hash32 method.
+ ///
+ internal class FarmHashSharpHash64_Implementation
+ : HashFunctionAsyncBase,
+ IFarmHashSharpHash64
+ {
+ public override int HashSizeInBits { get; } = 64;
+
+
+ protected override byte[] ComputeHashInternal(IUnifiedData data, CancellationToken cancellationToken)
+ {
+ var dataArray = data.ToArray(cancellationToken);
+
+ return BitConverter.GetBytes(
+ Farmhash.Hash64(dataArray, dataArray.Length));
+ }
+
+ protected override async Task ComputeHashAsyncInternal(IUnifiedDataAsync data, CancellationToken cancellationToken)
+ {
+ var dataArray = await data.ToArrayAsync(cancellationToken)
+ .ConfigureAwait(false);
+
+ return BitConverter.GetBytes(
+ Farmhash.Hash64(dataArray, dataArray.Length));
+ }
+ }
+}
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash32.cs b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash32.cs
new file mode 100644
index 0000000..c936f44
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash32.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Data.HashFunction.FarmHash.FarmHashSharp
+{
+ ///
+ /// Data.HashFunction implementation of via FarmHash.Sharp's Hash32 method.
+ ///
+ public interface IFarmHashSharpHash32
+ : IFarmHashFingerprint32
+ {
+
+ }
+}
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash32Factory.cs b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash32Factory.cs
new file mode 100644
index 0000000..5f6862c
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash32Factory.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Data.HashFunction.FarmHash.FarmHashSharp
+{
+ ///
+ /// Provides instances of implementations of .
+ ///
+ public interface IFarmHashSharpHash32Factory
+ : IFarmHashFingerprint32Factory
+ {
+ ///
+ /// Creates a new instance.
+ ///
+ /// A instance.
+ new IFarmHashSharpHash32 Create();
+ }
+}
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash64.cs b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash64.cs
new file mode 100644
index 0000000..fbccb11
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash64.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Data.HashFunction.FarmHash.FarmHashSharp
+{
+ ///
+ /// Data.HashFunction implementation of via FarmHash.Sharp's Hash64 method.
+ ///
+ public interface IFarmHashSharpHash64
+ : IFarmHashXoHash64
+ {
+
+ }
+}
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash64Factory.cs b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash64Factory.cs
new file mode 100644
index 0000000..41421ca
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/IFarmHashSharpHash64Factory.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Data.HashFunction.FarmHash.FarmHashSharp
+{
+ ///
+ /// Provides instances of implementations of .
+ ///
+ public interface IFarmHashSharpHash64Factory
+ : IFarmHashXoHash64Factory
+ {
+ ///
+ /// Creates a new instance.
+ ///
+ /// A instance.
+ new IFarmHashSharpHash64 Create();
+ }
+}
diff --git a/src/System.Data.HashFunction.FarmHash.FarmHashSharp/System.Data.HashFunction.FarmHash.FarmHashSharp.csproj b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/System.Data.HashFunction.FarmHash.FarmHashSharp.csproj
new file mode 100644
index 0000000..f4e3530
--- /dev/null
+++ b/src/System.Data.HashFunction.FarmHash.FarmHashSharp/System.Data.HashFunction.FarmHash.FarmHashSharp.csproj
@@ -0,0 +1,51 @@
+
+
+
+ Data.HashFunction implementation of FarmHash via FarmHash.Sharp (https://nickbabcock.github.io/Farmhash.Sharp/).
+ Copyright 2018
+ Data.HashFunction.FarmHash.FarmHashSharp
+ 2.0.0
+ Data.HashFunction Developers
+ netstandard1.1;net45
+ true
+ System.Data.HashFunction.FarmHash.FarmHashSharp
+ ../Data.HashFunction.Production.snk
+ false
+ false
+ System.Data.HashFunction.FarmHash.FarmHashSharp
+ FarmHash;hash;function;farm;FarmHashSharp;FarmHash.Sharp
+ https://github.com/brandondahler/Data.HashFunction/wiki/Release-Notes
+ https://raw.githubusercontent.com/brandondahler/Data.HashFunction/master/LICENSE
+ git
+ https://github.com/brandondahler/Data.HashFunction/
+ false
+ false
+
+
+
+ $(PackageReleaseNotes)
+
vcs-revision: $(VcsRevision)
+
+
+
+
+ full
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/System.Data.HashFunction.Test.Unsigned/App.config b/src/System.Data.HashFunction.Test.Unsigned/App.config
new file mode 100644
index 0000000..7b47f78
--- /dev/null
+++ b/src/System.Data.HashFunction.Test.Unsigned/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash32Factory_Tests.cs b/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash32Factory_Tests.cs
new file mode 100644
index 0000000..01c7c8d
--- /dev/null
+++ b/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash32Factory_Tests.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Data.HashFunction.FarmHash.FarmHashSharp;
+using System.Text;
+using Xunit;
+
+namespace System.Data.HashFunction.Test.FarmHash.FarmHashSharp
+{
+ public class FarmHashSharpHash32Factory_Tests
+ {
+ [Fact]
+ public void FarmHashSharpHash32Factory_Instance_IsDefined()
+ {
+ Assert.NotNull(FarmHashSharpHash32Factory.Instance);
+ Assert.IsType(FarmHashSharpHash32Factory.Instance);
+ }
+
+ [Fact]
+ public void FarmHashSharpHash32Factory_Create_Works()
+ {
+ var farmHashSharpHash32Factory = FarmHashSharpHash32Factory.Instance;
+ var farmHashSharpHash32 = farmHashSharpHash32Factory.Create();
+
+ Assert.NotNull(farmHashSharpHash32);
+ Assert.IsType(farmHashSharpHash32);
+ }
+
+ }
+}
diff --git a/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash32_Implementation_Tests.cs b/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash32_Implementation_Tests.cs
new file mode 100644
index 0000000..7a1d252
--- /dev/null
+++ b/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash32_Implementation_Tests.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Data.HashFunction.FarmHash.FarmHashSharp;
+using System.Data.HashFunction.Test._Utilities;
+using System.Linq;
+using System.Text;
+using Xunit;
+
+namespace System.Data.HashFunction.Test.FarmHash.FarmHashSharp
+{
+ public class FarmHashSharpHash32_Implementation_Tests
+ {
+
+ #region Constructor
+
+ [Fact]
+ public void FarmHashSharpHash32_Implementation_Constructor_Works()
+ {
+ GC.KeepAlive(
+ new FarmHashSharpHash32_Implementation());
+ }
+
+ #endregion
+
+ #region HashSizeInBits
+
+ [Fact]
+ public void FarmHashSharpHash32_Implementation_HashSizeInBits_Is32()
+ {
+ var farmHash = new FarmHashSharpHash32_Implementation();
+
+ Assert.Equal(32, farmHash.HashSizeInBits);
+ }
+
+ #endregion
+
+
+
+ public class IHashFunctionAsync_Tests
+ : IHashFunctionAsync_TestBase
+ {
+ protected override IEnumerable KnownValues { get; } =
+ new KnownValue[] {
+ new KnownValue(32, TestConstants.Empty, 0xdc56d17a),
+ new KnownValue(32, TestConstants.FooBar.Take(3), 0x6b5025e3),
+ new KnownValue(32, TestConstants.FooBar, 0xe2f34cdf),
+ new KnownValue(32, TestConstants.LoremIpsum.Take(17), 0xe3e27892),
+ new KnownValue(32, TestConstants.LoremIpsum, 0x6482ed0d),
+ };
+
+ protected override IFarmHashSharpHash32 CreateHashFunction(int hashSize) =>
+ new FarmHashSharpHash32_Implementation();
+ }
+ }
+}
diff --git a/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash64Factory_Tests.cs b/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash64Factory_Tests.cs
new file mode 100644
index 0000000..c526c14
--- /dev/null
+++ b/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash64Factory_Tests.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Data.HashFunction.FarmHash.FarmHashSharp;
+using System.Text;
+using Xunit;
+
+namespace System.Data.HashFunction.Test.FarmHash.FarmHashSharp
+{
+ public class FarmHashSharpHash64Factory_Tests
+ {
+ [Fact]
+ public void FarmHashSharpHash64Factory_Instance_IsDefined()
+ {
+ Assert.NotNull(FarmHashSharpHash64Factory.Instance);
+ Assert.IsType(FarmHashSharpHash64Factory.Instance);
+ }
+
+ [Fact]
+ public void FarmHashSharpHash64Factory_Create_Works()
+ {
+ var farmHashSharpHash64Factory = FarmHashSharpHash64Factory.Instance;
+ var farmHashSharpHash64 = farmHashSharpHash64Factory.Create();
+
+ Assert.NotNull(farmHashSharpHash64);
+ Assert.IsType(farmHashSharpHash64);
+ }
+
+ }
+}
diff --git a/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash64_Implementation_Tests.cs b/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash64_Implementation_Tests.cs
new file mode 100644
index 0000000..26105ac
--- /dev/null
+++ b/src/System.Data.HashFunction.Test.Unsigned/FarmHash/FarmHashSharp/FarmHashSharpHash64_Implementation_Tests.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.Data.HashFunction.FarmHash.FarmHashSharp;
+using System.Data.HashFunction.Test._Utilities;
+using System.Linq;
+using System.Text;
+using Xunit;
+
+namespace System.Data.HashFunction.Test.FarmHash.FarmHashSharp
+{
+ public class FarmHashSharpHash64_Implementation_Tests
+ {
+
+ #region Constructor
+
+ [Fact]
+ public void FarmHashSharpHash64_Implementation_Constructor_Works()
+ {
+ GC.KeepAlive(
+ new FarmHashSharpHash64_Implementation());
+ }
+
+ #endregion
+
+ #region HashSizeInBits
+
+ [Fact]
+ public void FarmHashSharpHash64_Implementation_HashSizeInBits_Is64()
+ {
+ var farmHash = new FarmHashSharpHash64_Implementation();
+
+ Assert.Equal(64, farmHash.HashSizeInBits);
+ }
+
+ #endregion
+
+
+
+ public class IHashFunctionAsync_Tests
+ : IHashFunctionAsync_TestBase
+ {
+ protected override IEnumerable KnownValues { get; } =
+ new KnownValue[] {
+ new KnownValue(64, TestConstants.Empty, 0x9ae16a3b2f90404f),
+ new KnownValue(64, TestConstants.FooBar.Take(3), 0x555c6f602f9383e3),
+ new KnownValue(64, TestConstants.FooBar, 0xc43fb29ab5effcfe),
+ new KnownValue(64, TestConstants.LoremIpsum.Take(13), 0x54145170e3383fcc),
+ new KnownValue(64, TestConstants.LoremIpsum.Take(17), 0xbb25bd7ca089d86),
+ new KnownValue(64, TestConstants.LoremIpsum.Take(31), 0xd96b0e9e5ce7b4ad),
+ new KnownValue(64, TestConstants.LoremIpsum.Take(50), 0x13540d7f3372fbc8),
+ new KnownValue(64, TestConstants.LoremIpsum, 0x7975a177275d65bf),
+ };
+
+ protected override IFarmHashSharpHash64 CreateHashFunction(int hashSize) =>
+ new FarmHashSharpHash64_Implementation();
+ }
+ }
+}
diff --git a/src/System.Data.HashFunction.Test.Unsigned/System.Data.HashFunction.Test.Unsigned.csproj b/src/System.Data.HashFunction.Test.Unsigned/System.Data.HashFunction.Test.Unsigned.csproj
new file mode 100644
index 0000000..3b54cf1
--- /dev/null
+++ b/src/System.Data.HashFunction.Test.Unsigned/System.Data.HashFunction.Test.Unsigned.csproj
@@ -0,0 +1,61 @@
+
+
+
+ Test suite for Data.HashFunction implementations.
+ Copyright 2018
+ Data.HashFunction.Test.Unsigned
+ 2.0.0
+ Data.HashFunction Developers
+ netcoreapp1.1
+ $(NoWarn);CS1591
+ System.Data.HashFunction.Test.Unsigned
+ ../Data.HashFunction.Production.snk
+ false
+ false
+ System.Data.HashFunction.Test.Unsigned
+ true
+ 1.1.1
+ false
+ false
+
+
+
+ full
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/System.Data.HashFunction.Test.Unsigned/packages.config b/src/System.Data.HashFunction.Test.Unsigned/packages.config
new file mode 100644
index 0000000..14f456c
--- /dev/null
+++ b/src/System.Data.HashFunction.Test.Unsigned/packages.config
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/System.Data.HashFunction.Test/_Utilities/TestConstants.cs b/src/System.Data.HashFunction.Test/_Utilities/TestConstants.cs
index ae24c65..cc87502 100644
--- a/src/System.Data.HashFunction.Test/_Utilities/TestConstants.cs
+++ b/src/System.Data.HashFunction.Test/_Utilities/TestConstants.cs
@@ -7,7 +7,7 @@
namespace System.Data.HashFunction.Test._Utilities
{
- internal sealed class TestConstants
+ public sealed class TestConstants
{
// Constant values available for KnownValues to use.
public static readonly byte[] Empty = new byte[0];