46 lines
1.4 KiB
C#
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]));
|
|
}
|
|
} |