public void FilterDependend()
        {
            IVariable <int> y = new Variable <int>("y");
            IVariable <int> x = new Variable <int>("x");

            y.Arguments.Add(x);

            x.SetValues(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
            //update y where x = 2
            Assert.IsFalse(y.Values.IsAutoSorted);
            y[2] = 10;
            Assert.AreEqual(new[] { 0, 10, 0, 0, 0, 0, 0, 0, 0, 0 }, y.Values);

            //update y where x = 8
            y[8] = 10;
            Assert.AreEqual(new[] { 0, 10, 0, 0, 0, 0, 0, 10, 0, 0 }, y.Values);

            //select two ranges ..from [1..3] and [7..9]
            IList <Pair <int, int> > indexRanges = new List <Pair <int, int> >();

            indexRanges.Add(new Pair <int, int>(0, 2));
            indexRanges.Add(new Pair <int, int>(6, 8));
            IVariable <int> filteredY = (IVariable <int>)y.Filter(new VariableIndexRangesFilter(x, indexRanges));

            Assert.AreEqual(6, filteredY.Values.Count);
            Assert.IsTrue(new[] { 0, 10, 0, 0, 10, 0 }.SequenceEqual(filteredY.Values));
        }
Example #2
0
        public void FilterFilteredFunction()
        {
            IVariable <int> x = new Variable <int>();

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

            var filtered = x.Filter(x.CreateValuesFilter(new[] { 2, 3, 4 }));

            var filtered2 = filtered.Filter(x.CreateValueFilter(3));

            Assert.AreEqual(3, filtered.Values.Count);
            Assert.IsTrue(filtered.Values.Cast <int>().SequenceEqual(new[] { 2, 3, 4 }));

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

            // change filters
            ((IVariableValueFilter)filtered2.Filters[0]).Values.Add(5);
            ((IVariableValueFilter)filtered2.Filters[0]).Values.Add(4);
            Assert.AreEqual(2, filtered2.Values.Count);

            // expanding filter in the "filtered" will also expand "filtered2"
            ((IVariableValueFilter)filtered.Filters[0]).Values.Add(5);
            Assert.AreEqual(4, filtered.Values.Count);
            Assert.AreEqual(3, filtered2.Values.Count);
        }
 public void VariableValueRanges()
 {
     IVariable<int> x = new Variable<int>();
     x.SetValues(new[]{1,2,3,4,5,6,7,8,9,10});
     //select two ranges ..from [1..3] and [7.8]
     IList<Pair<int,int>> ranges = new List<Pair<int, int>>();
     ranges.Add(new Pair<int, int>(1,3));
     ranges.Add(new Pair<int, int>(7,8));
     x = (IVariable<int>)x.Filter(new VariableValueRangesFilter<int>(x,ranges));
     Assert.AreEqual(5, x.Values.Count);
     Assert.AreEqual(new[] { 1, 2, 3, 7, 8}, x.Values.ToArray());
 }
Example #4
0
        public void FilterIndependendVariable()
        {
            IVariable <int> x = new Variable <int>();

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

            //filter out the middle
            var filtered = x.Filter(x.CreateValuesFilter(new[] { 2, 3, 4 }));

            Assert.AreEqual(3, filtered.Values[1]);
            Assert.AreEqual(3, filtered.GetValues().Count);
        }
 public void FilterIndependend()
 {
     IVariable<int> x = new Variable<int>();
     x.SetValues(new[]{1,2,3,4,5,6,7,8,9,10});
     //select two ranges ..from [1..3] and [7..9]
     IList<Pair<int, int>> indexRanges= new List<Pair<int, int>>();
     indexRanges.Add(new Pair<int, int>(0,2));
     indexRanges.Add(new Pair<int, int>(6,8));
     IVariable<int> filteredX = (IVariable<int>) x.Filter(new VariableIndexRangesFilter(x, indexRanges));
     Assert.AreEqual(6, filteredX.Values.Count);
     Assert.IsTrue(new[]{1,2,3,7,8,9}.SequenceEqual(filteredX.Values));
 }
Example #6
0
        public void EmptyFilter()
        {
            IVariable <double> y = new Variable <double>("y");
            IVariable <double> x = new Variable <double>("x");

            y.Arguments.Add(x);

            x.SetValues(new[] { 1.0, 2.0, 3.0 });
            y.SetValues(new[] { 10.0, 20.0, 30.0 });

            var filtered = y.Filter();

            Assert.AreEqual(3, filtered.Arguments[0].Values.Count);
        }
        public void VariableValueRanges()
        {
            IVariable <int> x = new Variable <int>();

            x.SetValues(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
            //select two ranges ..from [1..3] and [7.8]
            IList <Pair <int, int> > ranges = new List <Pair <int, int> >();

            ranges.Add(new Pair <int, int>(1, 3));
            ranges.Add(new Pair <int, int>(7, 8));
            x = (IVariable <int>)x.Filter(new VariableValueRangesFilter <int>(x, ranges));
            Assert.AreEqual(5, x.Values.Count);
            Assert.AreEqual(new[] { 1, 2, 3, 7, 8 }, x.Values.ToArray());
        }
        public void FilterIndependend()
        {
            IVariable <int> x = new Variable <int>();

            x.SetValues(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
            //select two ranges ..from [1..3] and [7..9]
            IList <Pair <int, int> > indexRanges = new List <Pair <int, int> >();

            indexRanges.Add(new Pair <int, int>(0, 2));
            indexRanges.Add(new Pair <int, int>(6, 8));
            IVariable <int> filteredX = (IVariable <int>)x.Filter(new VariableIndexRangesFilter(x, indexRanges));

            Assert.AreEqual(6, filteredX.Values.Count);
            Assert.IsTrue(new[] { 1, 2, 3, 7, 8, 9 }.SequenceEqual(filteredX.Values));
        }
 public void FilterDependendVariableWithMultipleValues()
 {
     IVariable<int> x = new Variable<int>("x");
     IVariable<int> y = new Variable<int>("y");
     x.Arguments.Add(y);
     x[0] = 1;
     x[1] = 2;
     x[2] = 3;
     x[3] = 4;
     Assert.AreEqual(4, x.Values.Count);
     IVariable<int> filteredX = (IVariable<int>)x.Filter(new VariableValueFilter<int>(y, new[] { 0, 2 }));
     Assert.AreEqual(2, filteredX.Values.Count);
     Assert.AreEqual(1, filteredX.Values[0]);
     Assert.AreEqual(3, filteredX.Values[1]);
 }
Example #10
0
        public void GetValueOfFilteredFunctionUsingValueOfFiltererArgument()
        {
            IVariable <double> y = new Variable <double>("y");
            IVariable <double> x = new Variable <double>("x");

            y.Arguments.Add(x);

            x.SetValues(new[] { 1.0, 2.0, 3.0 });
            y.SetValues(new[] { 10.0, 20.0, 30.0 });

            var filtered = y.Filter(x.CreateValueFilter(2.0));

            //arguments of filtered functions are ignored!
            Assert.IsNull(filtered[3.0]);
        }
Example #11
0
        public void FilterDependendVariable()
        {
            //int sa = componentArrays.Aggregate(1, (product, item) => (product *= item.Count));
            IVariable <double> y = new Variable <double>("y");
            IVariable <double> x = new Variable <double>("x");

            y.Arguments.Add(x);

            x.SetValues(new[] { 1.0, 2.0, 3.0 });
            y.SetValues(new[] { 10.0, 20.0, 30.0 });

            var filtered = y.Filter(x.CreateValueFilter(2.0));

            Assert.AreEqual(1, filtered.Components[0].Values.Count);
            Assert.AreEqual(20, filtered.Values[0]);
        }
Example #12
0
        public void FilterDependendVariable()
        {
            //int sa = componentArrays.Aggregate(1, (product, item) => (product *= item.Count));
            IVariable<double> y = new Variable<double>("y");
            IVariable<double> x = new Variable<double>("x");

            y.Arguments.Add(x);

            x.SetValues(new[] { 1.0, 2.0, 3.0 });
            y.SetValues(new[] { 10.0, 20.0, 30.0 });

            var filtered = y.Filter(x.CreateValueFilter(2.0));

            Assert.AreEqual(1, filtered.Components[0].Values.Count);
            Assert.AreEqual(20, filtered.Values[0]);
        }
Example #13
0
        public void FilterDependendVariableWithMultipleValues()
        {
            IVariable <int> x = new Variable <int>("x");
            IVariable <int> y = new Variable <int>("y");

            x.Arguments.Add(y);
            x[0] = 1;
            x[1] = 2;
            x[2] = 3;
            x[3] = 4;
            Assert.AreEqual(4, x.Values.Count);
            IVariable <int> filteredX = (IVariable <int>)x.Filter(new VariableValueFilter <int>(y, new[] { 0, 2 }));

            Assert.AreEqual(2, filteredX.Values.Count);
            Assert.AreEqual(1, filteredX.Values[0]);
            Assert.AreEqual(3, filteredX.Values[1]);
        }
        public void FilterDependend()
        {
            IVariable<int> y = new Variable<int>();
            IVariable<int> x = new Variable<int>();
            y.Arguments.Add(x);

            x.SetValues(new[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
            y[2] = 10;
            y[8] = 10;
            //select two ranges ..from [1..3] and [7..9]
            IList<Pair<int, int>> indexRanges = new List<Pair<int, int>>();
            indexRanges.Add(new Pair<int, int>(0, 2));
            indexRanges.Add(new Pair<int, int>(6, 8));
            IVariable<int> filteredY = (IVariable<int>) y.Filter(new VariableIndexRangesFilter(x, indexRanges));
            Assert.AreEqual(6, filteredY.Values.Count);
            Assert.IsTrue(new[] {0, 10, 0, 0, 10, 0}.SequenceEqual(filteredY.Values));
        }
        public void ReduceFitlterShouldPassIsEditableProperty()
        {
            IVariable<int> x = new Variable<int>("x"){IsEditable = false};
            IVariable<int> y = new Variable<int>("y");
            IVariable<int> fx = new Variable<int>("fx");
            fx.Arguments.Add(x);
            fx.Arguments.Add(y);

            x.SetValues(new[] { 1, 2, 3 });
            y.SetValues(new[] { 1 });
            fx[3, 1] = 20;

            var reducedFunction = fx.Filter(new VariableReduceFilter(y));
            Assert.AreEqual(1, reducedFunction.Arguments.Count);
            Assert.AreEqual("x", reducedFunction.Arguments[0].Name);
            Assert.IsFalse(reducedFunction.Arguments[0].IsEditable);
        }
 public void SimpleReduce()
 {
     IVariable<int> x = new Variable<int>("x");
     IVariable<int> y = new Variable<int>("y");
     IVariable<int> fx = new Variable<int>("fx");
     fx.Arguments.Add(x);
     fx.Arguments.Add(y);
     
     x.SetValues(new[] {1, 2, 3});
     y.SetValues(new[] {1});
     fx[3, 1] = 20;
     
     var reducedFunction = fx.Filter(new VariableValueFilter<int>(y, 1), new VariableReduceFilter(y));
     Assert.AreEqual(1, reducedFunction.Arguments.Count);
     Assert.AreEqual(3, reducedFunction.Values.Count);
     Assert.AreEqual(20, reducedFunction.Values[2]);
 }
Example #17
0
        public void SimpleReduce()
        {
            IVariable <int> x  = new Variable <int>("x");
            IVariable <int> y  = new Variable <int>("y");
            IVariable <int> fx = new Variable <int>("fx");

            fx.Arguments.Add(x);
            fx.Arguments.Add(y);

            x.SetValues(new[] { 1, 2, 3 });
            y.SetValues(new[] { 1 });
            fx[3, 1] = 20;

            var reducedFunction = fx.Filter(new VariableValueFilter <int>(y, 1), new VariableReduceFilter(y));

            Assert.AreEqual(1, reducedFunction.Arguments.Count);
            Assert.AreEqual(3, reducedFunction.Values.Count);
            Assert.AreEqual(20, reducedFunction.Values[2]);
        }
        public void ReduceFitlterShouldPassIsEditableProperty()
        {
            IVariable <int> x = new Variable <int>("x")
            {
                IsEditable = false
            };
            IVariable <int> y  = new Variable <int>("y");
            IVariable <int> fx = new Variable <int>("fx");

            fx.Arguments.Add(x);
            fx.Arguments.Add(y);

            x.SetValues(new[] { 1, 2, 3 });
            y.SetValues(new[] { 1 });
            fx[3, 1] = 20;

            var reducedFunction = fx.Filter(new VariableReduceFilter(y));

            Assert.AreEqual(1, reducedFunction.Arguments.Count);
            Assert.AreEqual("x", reducedFunction.Arguments[0].Name);
            Assert.IsFalse(reducedFunction.Arguments[0].IsEditable);
        }
Example #19
0
        public void FilterIndependendVariable()
        {
            IVariable<int> x = new Variable<int>();
            x.SetValues(new[] { 1, 2, 3, 4, 5 });

            //filter out the middle 
            var filtered = x.Filter(x.CreateValuesFilter(new[] { 2, 3, 4 }));

            Assert.AreEqual(3, filtered.Values[1]);
            Assert.AreEqual(3, filtered.GetValues().Count);
        }
Example #20
0
        public void EmptyFilter()
        {
            IVariable<double> y = new Variable<double>("y");
            IVariable<double> x = new Variable<double>("x");

            y.Arguments.Add(x);

            x.SetValues(new[] { 1.0, 2.0, 3.0 });
            y.SetValues(new[] { 10.0, 20.0, 30.0 });

            var filtered = y.Filter();

            Assert.AreEqual(3, filtered.Arguments[0].Values.Count);
        }
Example #21
0
        public void GetValueOfFilteredFunctionUsingValueOfFiltererArgument()
        {
            IVariable<double> y = new Variable<double>("y");
            IVariable<double> x = new Variable<double>("x");

            y.Arguments.Add(x);

            x.SetValues(new[] { 1.0, 2.0, 3.0 });
            y.SetValues(new[] { 10.0, 20.0, 30.0 });

            var filtered = y.Filter(x.CreateValueFilter(2.0));
            
            //arguments of filtered functions are ignored!
            Assert.IsNull(filtered[3.0]);
        }
Example #22
0
        public void FilterFilteredFunction()
        {
            IVariable<int> x = new Variable<int>();
            x.SetValues(new[] { 1, 2, 3, 4, 5 });

            var filtered = x.Filter(x.CreateValuesFilter(new[] { 2, 3, 4 }));

            var filtered2 = filtered.Filter(x.CreateValueFilter(3));

            Assert.AreEqual(3, filtered.Values.Count);
            Assert.IsTrue(filtered.Values.Cast<int>().SequenceEqual(new[] { 2, 3, 4 }));

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

            // change filters
            ((IVariableValueFilter)filtered2.Filters[0]).Values.Add(5);
            ((IVariableValueFilter)filtered2.Filters[0]).Values.Add(4);
            Assert.AreEqual(2, filtered2.Values.Count);

            // expanding filter in the "filtered" will also expand "filtered2"
            ((IVariableValueFilter)filtered.Filters[0]).Values.Add(5);
            Assert.AreEqual(4, filtered.Values.Count);
            Assert.AreEqual(3, filtered2.Values.Count);
        }