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)); }
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()); }
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)); }
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]); }
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]); }
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]); }
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]); }
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]); }
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); }
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 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 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]); }
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); }