示例#1
0
        public void test_managing_edit_variable()
        {
            // Test adding/removing edit variables.

            var s  = new Solver();
            var v1 = new Variable("foo");
            var v2 = new Variable("bar");


            Assert.False(s.HasEditVariable(v1));
            s.AddEditVariable(v1, Strength.Weak);
            Assert.True(s.HasEditVariable(v1));
            Assert.Throws <DuplicateEditVariable>(() => s.AddEditVariable(v1, Strength.Medium));
            Assert.Throws <UnknownEditVariable>(() => s.RemoveEditVariable(v2));
            s.RemoveEditVariable(v1);
            Assert.False(s.HasEditVariable(v1));

            Assert.Throws <BadRequiredStrength>(() => s.AddEditVariable(v1, Strength.Required));

            s.AddEditVariable(v2, Strength.Strong);
            Assert.True(s.HasEditVariable(v2));
            Assert.Throws <UnknownEditVariable>(() => s.SuggestValue(v1, 10));

            s.Reset();
            Assert.False(s.HasEditVariable(v2));
        }
示例#2
0
        public void test_solving_under_constrained_system()
        {
            // Test solving an under constrained system.
            var s = new Solver();
            var v = new Variable("foo");
            var c = 2 * v + 1 >= 0;

            s.AddEditVariable(v, Strength.Weak);
            s.AddConstraint(c);
            s.SuggestValue(v, 10);
            s.UpdateVariables();

            Assert.Equal(21, c.Expression.Value);
            Assert.Equal(20, c.Expression.Terms[0].Value);
            Assert.Equal(10, c.Expression.Terms[0].Variable.Value);
        }