Example #1
0
        public void GetIndependentValuesUsingMultipleFilters()
        {
            Variable <int> x = new Variable <int>();

            x.SetValues(new[] { 1, 2, 3, 4, 5 });

            IFunctionStore store = x.Store;

            IMultiDimensionalArray <int> filteredValues;

            filteredValues = store.GetVariableValues <int>(
                x,
                new VariableValueFilter <int>(x, new[] { 1, 2, 3 })
                );

            Assert.AreEqual(3, filteredValues.Count);
            Assert.AreEqual(1, filteredValues[0]);

            //same filters different ordering
            filteredValues = store.GetVariableValues <int>(
                x,
                new VariableValueFilter <int>(x, new[] { 3, 2, 1 })
                );

            Assert.AreEqual(3, filteredValues.Count);
            Assert.AreEqual(1, filteredValues[0]);
        }
Example #2
0
        public void SimpleDependendVariable()
        {
            //create a single variable dependency.
            IVariable <double> x = new Variable <double>("x");
            IVariable <double> y = new Variable <double>("y");

            y.Arguments.Add(x);

            IFunctionStore store = y.Store;

            store.SetVariableValues(x, new[] { 0.0, 0.1, 0.2 });

            Assert.AreEqual(3, store.GetVariableValues(y).Count);
        }
Example #3
0
        public void DependentOn2Variables()
        {
            IVariable <double> x1 = new Variable <double>("x1");
            IVariable <double> x2 = new Variable <double>("x2");
            IVariable <double> y  = new Variable <double>("y");

            y.Arguments.Add(x1);
            y.Arguments.Add(x2);

            IFunctionStore store = y.Store;

            store.SetVariableValues(x1, new[] { 0.0, 0.1, 0.2 });
            store.SetVariableValues(x2, new[] { 0.0, 0.1 });

            Assert.AreEqual(6, store.GetVariableValues(y).Count);
        }
        public void GetVariableValueFiltersShouldDealWithNonValueComparableValues()
        {
            IVariable <TestNode> x = new Variable <TestNode>("x");
            IVariable <double>   y = new Variable <double>("y");

            var amount = 2;

            y.Arguments.Add(x);

            var node1 = new TestNode {
                Name = "1"
            };
            var node2 = new TestNode {
                Name = "2"
            };
            var node3 = new TestNode {
                Name = "3"
            };
            var node4 = new TestNode {
                Name = "4"
            };

            y[node1] = 2.0;
            y[node2] = 5.0;
            y[node3] = 8.0;
            y[node4] = 10.0;

            IFunctionStore store = y.Store;

            IList <TestNode> valuesToSelect = new List <TestNode>();

            valuesToSelect.Add(node1);
            valuesToSelect.Add(node2);
            valuesToSelect.Add(node3);
            valuesToSelect.Add(node4);

            IMultiDimensionalArray array = store.GetVariableValues(x, new VariableValueFilter <TestNode>(x, valuesToSelect));

            array[0].Should("1").Be.EqualTo(node1);
            array[1].Should("2").Be.EqualTo(node2);
            array[2].Should("3").Be.EqualTo(node3);
            array[3].Should("4").Be.EqualTo(node4);
        }
        public void GetVariableValueFilterIndexesShouldBeFast()
        {
            IVariable <double> x = new Variable <double>("x");
            IVariable <double> y = new Variable <double>("y");

            var amount = 5000;

            IList <double> allValues = new List <double>(amount);

            for (int i = 0; i < amount; i++)
            {
                allValues.Add(i);
            }

            x.AddValues(allValues);

            y.Arguments.Add(x);

            IFunctionStore store = y.Store;

            IList <double> valuesToSelect = new List <double>();

            valuesToSelect.Add(allValues[0]);
            valuesToSelect.Add(allValues[50]);
            valuesToSelect.Add(allValues[amount - 1]);

            IMultiDimensionalArray array = null;

            TestHelper.AssertIsFasterThan(130,
                                          () =>
            {
                for (int i = 0; i < 5000; i++)
                {
                    array = store.GetVariableValues(x, new VariableValueFilter <double>(x, valuesToSelect));
                }
            });
            //orig: 600ms
            //now: 15ms

            Assert.AreEqual(3, array.Count);
        }