Free cookie consent management tool by TermsFeed Policy Generator

source: addons/HeuristicLab.PushGP/HeuristicLab.Tests/Simplifier/SimplifierTests.cs @ 16101

Last change on this file since 16101 was 15017, checked in by pkimmesw, 8 years ago

#2665 Fixed Benchmark Problem Definition, Converted LoopExpressions to stateless expressions, Added several unit test to ensure funcionality, Fixed UI bugs

File size: 1.8 KB
Line 
1namespace HeuristicLab.Tests.Simplifier {
2  using System;
3  using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions;
4  using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
5  using HeuristicLab.Problems.ProgramSynthesis.Push.Parser;
6  using HeuristicLab.Problems.ProgramSynthesis.Push.Simplifier;
7  using HeuristicLab.Random;
8
9  using Microsoft.VisualStudio.TestTools.UnitTesting;
10
11  [TestClass]
12  public class SimplifierTests {
13
14    [TestMethod]
15    [TestProperty("Time", "Short")]
16    [TestCategory("Simplifier")]
17    public void SimplifySubProgramsTest() {
18      var program = PushParser.ParseProgram("( ( ( ( ( 1 ) ) ) ) )");
19      var result = PushParser.ParseProgram("( 1 )");
20      var simplerProgram = Simplifier.SimplifySubPrograms(program);
21
22      Console.WriteLine(simplerProgram);
23      Assert.AreEqual(result, simplerProgram);
24    }
25
26    [TestMethod]
27    [TestProperty("Time", "Short")]
28    [TestCategory("Simplifier")]
29    public void RemoveUnnecessaryExpressionsTest() {
30      var program = PushParser.ParseProgram("( 5 ( INTEGER.DUP FLOAT.+ FLOAT.- ) ( EXEC.DO ( EXEC.IF ) EXEC.Y ) INTEGER.+ )");
31      var result = PushParser.ParseProgram("( 5 INTEGER.DUP INTEGER.+ )");
32      var pool = new PushInterpreterPool();
33      var random = new MersenneTwister(1337);
34
35      Func<PushProgram, double> evaluator = p => {
36        using (var interpreter = pool.Create(random)) {
37          interpreter.Run(p);
38          return interpreter.IntegerStack.IsEmpty
39            ? double.MaxValue
40            : Math.Abs(interpreter.IntegerStack.Top - 10);
41        }
42      };
43
44      var simplerProgram = Simplifier.Simplify(program, pool.PushConfiguration, evaluator);
45
46      Console.WriteLine(simplerProgram);
47      Assert.AreEqual(result, simplerProgram);
48    }
49  }
50}
Note: See TracBrowser for help on using the repository browser.