public void FloatPredeterminationTest() { var problem = new Problem("test"); var dom = new FloatDomain("signed unit", -1, 1); var x = (FloatVariable)dom.Instantiate("x", problem); var y = (FloatVariable)dom.Instantiate("y", problem); var z = (FloatVariable)dom.Instantiate("z", problem); var bigThresh = 1.5f; var smallThresh = -2.3f; var xBig = x > bigThresh; var ySmall = y < smallThresh; var zBig = z > bigThresh; var zSmall = z < smallThresh; var xLTy = x < y; var xGTz = x > z; var yLTz = y < z; for (var i = 0; i < 100; i++) { var xVal = Random.Float(-1, 1); var yVal = Random.Float(-1, 1); x.PredeterminedValue = xVal; y.PredeterminedValue = yVal; var s = problem.Solve(); Assert.AreEqual(xVal, x.Value(s)); Assert.AreEqual(yVal, y.Value(s)); Assert.IsTrue(problem.IsPredetermined(xBig)); Assert.AreEqual(s[xBig], xVal >= bigThresh); Assert.IsTrue(problem.IsPredetermined(ySmall)); Assert.AreEqual(s[ySmall], yVal <= smallThresh); Assert.IsTrue(problem.IsPredetermined(xLTy)); Assert.AreEqual(s[xLTy], xVal <= yVal); Assert.IsFalse(problem.IsPredetermined(zBig)); Assert.IsFalse(problem.IsPredetermined(zSmall)); Assert.IsFalse(problem.IsPredetermined(xGTz)); Assert.IsFalse(problem.IsPredetermined(yLTz)); } }