Files
InverseOfLife.Test/tests/EvoluteTests.cs
2025-01-18 08:30:10 +00:00

46 lines
1.4 KiB
C#

using NUnit.Framework;
namespace InverseOfLife.Test;
[TestFixture]
public class EvoluteTests
{
[Test]
public void Mutate_ShouldModifyBitsBasedOnRate()
{
int resolution = 3;
byte[] riboseSequence = [0b10101010, 0b11110000, 0b00001111, 0b00110011];
var gene = new Gene(resolution, riboseSequence);
float mutationRate = 1.0f;
var mutatedGene = gene.Mutate(0, mutationRate);
Assert.That(mutatedGene.RiboseSequence, Is.Not.EqualTo(riboseSequence));
}
[Test]
public void Mutate_WithZeroRate_ShouldNotChangeRiboseSequence()
{
int resolution = 3;
byte[] riboseSequence = [0b10101010, 0b11110000, 0b00001111, 0b00110011];
var gene = new Gene(resolution, riboseSequence);
float mutationRate = 0.0f;
var mutatedGene = gene.Mutate(0, mutationRate);
Assert.That(mutatedGene.RiboseSequence, Is.EqualTo(riboseSequence));
}
[Test]
public void Mutate_WithSpecificRiboseIndex_ShouldOnlyAffectSpecifiedIndex()
{
int resolution = 3;
byte[] riboseSequence = [0b10101010, 0b11110000, 0b00001111, 0b00001111];
var gene = new Gene(resolution, riboseSequence);
float mutationRate = 0.5f;
int riboseIndex = 1;
var mutatedGene = gene.Mutate(riboseIndex, mutationRate);
Assert.That(mutatedGene.RiboseSequence[0], Is.EqualTo(riboseSequence[0]));
}
}