44 lines
995 B
C#
44 lines
995 B
C#
using FluentAssertions;
|
|
using PerfectNumbers.Core.Gpu.Accelerators;
|
|
using Xunit;
|
|
|
|
namespace PerfectNumbers.Core.Tests;
|
|
|
|
[Trait("Category", "Fast")]
|
|
public class MersenneResidueModeTests
|
|
{
|
|
[Fact]
|
|
public void IsMersennePrime_residue_mode_rejects_composite_exponent()
|
|
{
|
|
var tester = new MersenneNumberTesterForResidueCalculationMethodForDisabledCacheStatusForCpuOrderDeviceForCpu();
|
|
var gpu = PrimeOrderCalculatorAccelerator.Rent(1);
|
|
try
|
|
{
|
|
tester.IsMersennePrime(gpu, 136_000_002UL).Should().BeFalse();
|
|
}
|
|
finally
|
|
{
|
|
PrimeOrderCalculatorAccelerator.Return(gpu);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void IsMersennePrime_residue_mode_accepts_prime_exponent()
|
|
{
|
|
var tester = new MersenneNumberTesterForResidueCalculationMethodForDisabledCacheStatusForCpuOrderDeviceForCpu(
|
|
maxK: 1_000UL);
|
|
var gpu = PrimeOrderCalculatorAccelerator.Rent(1);
|
|
try
|
|
{
|
|
tester.IsMersennePrime(gpu, 31UL).Should().BeTrue();
|
|
}
|
|
finally
|
|
{
|
|
PrimeOrderCalculatorAccelerator.Return(gpu);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|