mirror of
https://github.com/ldqk/Masuit.Tools.git
synced 2026-10-29 12:43:16 +08:00
95 lines
2.4 KiB
C#
95 lines
2.4 KiB
C#
using System.Numerics;
|
|
using Masuit.Tools.Strings;
|
|
using Xunit;
|
|
|
|
namespace Masuit.Tools.Abstractions.Test.Strings;
|
|
|
|
public class SimHashTests
|
|
{
|
|
[Fact]
|
|
public void SimHash_Constructor_WithTokensAndHashBits_ShouldInitializeCorrectly()
|
|
{
|
|
// Arrange
|
|
string tokens = "测试字符串";
|
|
int hashBits = 64;
|
|
|
|
// Act
|
|
var simHash = new SimHash(tokens, hashBits);
|
|
|
|
// Assert
|
|
Assert.Equal(2374431774038, simHash.StrSimHash);
|
|
Assert.Equal(13, simHash.StrSimHash.ToString().Length);
|
|
}
|
|
|
|
[Fact]
|
|
public void SimHash_Constructor_WithTokens_ShouldInitializeCorrectly()
|
|
{
|
|
// Arrange
|
|
string tokens = "测试字符串";
|
|
|
|
// Act
|
|
var simHash = new SimHash(tokens);
|
|
|
|
// Assert
|
|
Assert.Equal(2374431774038, simHash.StrSimHash);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetSimHash_ShouldReturnCorrectSimHash()
|
|
{
|
|
// Arrange
|
|
string tokens = "测试字符串";
|
|
var simHash = new SimHash(tokens);
|
|
|
|
// Act
|
|
var result = simHash.StrSimHash;
|
|
|
|
// Assert
|
|
Assert.NotEqual(BigInteger.Zero, result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Hash_ShouldReturnCorrectHash()
|
|
{
|
|
// Arrange
|
|
string source = "测试";
|
|
var simHash = new SimHash(source);
|
|
|
|
// Act
|
|
var result = simHash.GetType().GetMethod("Hash", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Invoke(simHash, new object[] { source });
|
|
|
|
// Assert
|
|
Assert.NotEqual(BigInteger.Zero, result);
|
|
}
|
|
|
|
[Fact]
|
|
public void HammingDistance_ShouldReturnCorrectDistance()
|
|
{
|
|
// Arrange
|
|
string tokens1 = "测试字符串1";
|
|
string tokens2 = "测试字符串2";
|
|
var simHash1 = new SimHash(tokens1);
|
|
var simHash2 = new SimHash(tokens2);
|
|
|
|
// Act
|
|
var distance = simHash1.HammingDistance(simHash2);
|
|
|
|
// Assert
|
|
Assert.True(distance >= 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void SimTokenizer_ShouldTokenizeCorrectly()
|
|
{
|
|
// Arrange
|
|
string source = "测试";
|
|
var tokenizer = new SimTokenizer(source);
|
|
|
|
// Act & Assert
|
|
Assert.True(tokenizer.HasMoreTokens());
|
|
Assert.Equal("测", tokenizer.NextToken());
|
|
Assert.True(tokenizer.HasMoreTokens());
|
|
Assert.Equal("试", tokenizer.NextToken());
|
|
Assert.False(tokenizer.HasMoreTokens());
|
|
}
|
|
} |