public void CreateGene_Successful() { const string source = @" using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; namespace ConsoleApplication1 { class Calculations { double CalculateTotal(int quantity, int itemPrice) { double basePrice = quantity * itemPrice; if (basePrice > 1000) { return basePrice * 0.95; } else { return basePrice * 0.98; } } } }"; var factory = new RefactoringChromosome(3, source); var chromosome = factory.GenerateGene(0); Assert.IsNotNull(chromosome); }
public void LinesOfCode() { const string source = @" using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; namespace ConsoleApplication1 { class Calculations { double CalculateTotal(int quantity, int itemPrice) { double basePrice = quantity * itemPrice; if (basePrice > 1000) { return basePrice * 0.95; } else { return basePrice * 0.98; } } } }"; var selection = new EliteSelection(); var crossover = new OrderedCrossover(); var mutation = new ReverseSequenceMutation(); var fitness = new MetricsFitness <LinesOfCodeMetrics>(); var chromosome = new RefactoringChromosome(3, source); var population = new Population(20, 30, chromosome); var ga = new GeneticAlgorithm(population, fitness, selection, crossover, mutation) { Termination = new GenerationNumberTermination(50) }; ga.Start(); Assert.IsNotNull(ga.BestChromosome.Fitness); TestContext.WriteLine($"Best fitness is {ga.BestChromosome.Fitness} and source looks like: \n {ga.BestChromosome}"); }
public void CreateGene_OutOfBound() { const string source = @" using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; namespace ConsoleApplication1 { class Calculations { double CalculateTotal(int quantity, int itemPrice) { double basePrice = quantity * itemPrice; if (basePrice > 1000) { return basePrice * 0.95; } else { return basePrice * 0.98; } } } }"; var factory = new RefactoringChromosome(3, source); foreach (var i in Enumerable.Range(0, 30)) { var gene = factory.GenerateGene(i); Assert.IsNotNull(gene); } }