Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3073_IA_constraint_splitting_reintegration/Tests/ShapeConstraintsParserTest.cs @ 17887

Last change on this file since 17887 was 17887, checked in by gkronber, 3 years ago

#3073: intermediate comment while refactoring the branch

File size: 6.4 KB
Line 
1using Microsoft.VisualStudio.TestTools.UnitTesting;
2using System;
3using HeuristicLab.Problems.DataAnalysis;
4using System.Globalization;
5
6namespace Tests {
7  [TestClass]
8  public class ShapeConstraintsParserTest {
9    [TestMethod]
10    public void TestFunctionRangeConstraints() {
11      System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
12      {
13        var constraint = ShapeConstraintsParser.ParseFunctionRangeConstraint("f in [1 .. 2]");
14        Assert.AreEqual(string.Empty, constraint.Variable);
15        Assert.AreEqual(0, constraint.NumberOfDerivations);
16        Assert.AreEqual(false, constraint.IsDerivative);
17        Assert.AreEqual(1.0, constraint.Weight);
18        Assert.AreEqual(0, constraint.Regions.Count);
19        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
20        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
21      }
22      {
23        var constraint = ShapeConstraintsParser.ParseFunctionRangeConstraint("f in [1 2]");
24        Assert.AreEqual(string.Empty, constraint.Variable);
25        Assert.AreEqual(0, constraint.NumberOfDerivations);
26        Assert.AreEqual(false, constraint.IsDerivative);
27        Assert.AreEqual(1.0, constraint.Weight);
28        Assert.AreEqual(0, constraint.Regions.Count);
29        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
30        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
31      }
32      {
33        var constraint = ShapeConstraintsParser.ParseFunctionRangeConstraint("f in [1; 2]");
34        Assert.AreEqual(string.Empty, constraint.Variable);
35        Assert.AreEqual(0, constraint.NumberOfDerivations);
36        Assert.AreEqual(false, constraint.IsDerivative);
37        Assert.AreEqual(1.0, constraint.Weight);
38        Assert.AreEqual(0, constraint.Regions.Count);
39        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
40        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
41      }
42      {
43        var constraint = ShapeConstraintsParser.ParseFunctionRangeConstraint("f in [1 .. 2] weight: 2.0");
44        Assert.AreEqual(string.Empty, constraint.Variable);
45        Assert.AreEqual(0, constraint.NumberOfDerivations);
46        Assert.AreEqual(false, constraint.IsDerivative);
47        Assert.AreEqual(2.0, constraint.Weight);
48        Assert.AreEqual(0, constraint.Regions.Count);
49        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
50        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
51      }
52      {
53        var constraint = ShapeConstraintsParser.ParseFunctionRangeConstraint("f in [1 .. 2], x in [2 .. 3], y in [4 .. 5]");
54        Assert.AreEqual(string.Empty, constraint.Variable);
55        Assert.AreEqual(0, constraint.NumberOfDerivations);
56        Assert.AreEqual(false, constraint.IsDerivative);
57        Assert.AreEqual(1.0, constraint.Weight);
58        Assert.AreEqual(2, constraint.Regions.Count);
59        Assert.AreEqual(2, constraint.Regions.GetInterval("x").LowerBound);
60        Assert.AreEqual(3, constraint.Regions.GetInterval("x").UpperBound);
61        Assert.AreEqual(4, constraint.Regions.GetInterval("y").LowerBound);
62        Assert.AreEqual(5, constraint.Regions.GetInterval("y").UpperBound);
63        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
64        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
65      }
66      {
67        var constraint = ShapeConstraintsParser.ParseFunctionRangeConstraint("f in [1 .. 2], x in [2 .. 3], y in [4 .. 5] weight: 2.0");
68        Assert.AreEqual(string.Empty, constraint.Variable);
69        Assert.AreEqual(0, constraint.NumberOfDerivations);
70        Assert.AreEqual(false, constraint.IsDerivative);
71        Assert.AreEqual(2.0, constraint.Weight);
72        Assert.AreEqual(2, constraint.Regions.Count);
73        Assert.AreEqual(2, constraint.Regions.GetInterval("x").LowerBound);
74        Assert.AreEqual(3, constraint.Regions.GetInterval("x").UpperBound);
75        Assert.AreEqual(4, constraint.Regions.GetInterval("y").LowerBound);
76        Assert.AreEqual(5, constraint.Regions.GetInterval("y").UpperBound);
77        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
78        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
79      }
80    }
81    [TestMethod]
82    public void TestDerivationConstraints() {
83      System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
84      var variables = new string[] { "x", "var x" };
85      {
86        var constraint = ShapeConstraintsParser.ParseDerivationConstraint("df/dx in [1 .. 2]", variables);
87        Assert.AreEqual("x", constraint.Variable);
88        Assert.AreEqual(1, constraint.NumberOfDerivations);
89        Assert.AreEqual(true, constraint.IsDerivative);
90        Assert.AreEqual(1.0, constraint.Weight);
91        Assert.AreEqual(0, constraint.Regions.Count);
92        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
93        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
94      }
95      {
96        var constraint = ShapeConstraintsParser.ParseDerivationConstraint("d²f/dx² in [1 .. 2]", variables);
97        Assert.AreEqual("x", constraint.Variable);
98        Assert.AreEqual(2, constraint.NumberOfDerivations);
99        Assert.AreEqual(true, constraint.IsDerivative);
100        Assert.AreEqual(1.0, constraint.Weight);
101        Assert.AreEqual(0, constraint.Regions.Count);
102        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
103        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
104      }
105      {
106        var constraint = ShapeConstraintsParser.ParseDerivationConstraint("d² f / d x² in [1 .. 2]", variables);
107        Assert.AreEqual("x", constraint.Variable);
108        Assert.AreEqual(2, constraint.NumberOfDerivations);
109        Assert.AreEqual(true, constraint.IsDerivative);
110        Assert.AreEqual(1.0, constraint.Weight);
111        Assert.AreEqual(0, constraint.Regions.Count);
112        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
113        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
114      }
115      {
116        var constraint = ShapeConstraintsParser.ParseDerivationConstraint("d³ f / d 'var x'³ in [1 .. 2]", variables);
117        Assert.AreEqual("var x", constraint.Variable);
118        Assert.AreEqual(3, constraint.NumberOfDerivations);
119        Assert.AreEqual(true, constraint.IsDerivative);
120        Assert.AreEqual(1.0, constraint.Weight);
121        Assert.AreEqual(0, constraint.Regions.Count);
122        Assert.AreEqual(1.0, constraint.Interval.LowerBound);
123        Assert.AreEqual(2.0, constraint.Interval.UpperBound);
124      }
125    }
126  }
127}
Note: See TracBrowser for help on using the repository browser.