public void AddRowsToBindingListUpdatesFunction() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1")); function.Components.Add(new Variable <string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; functionBindingList.AddNew(); var row = (FunctionBindingListRow)functionBindingList[3]; // row[0] = 3; row[1] = "three"; WaitUntilLastOperationIsFinished(functionBindingList); Assert.AreEqual(row[1], function[3]); }
public void ClearFunctionThatIsBoundToDecorator() { IFunction function = new Function("time series"); function.Arguments.Add(new Variable<DateTime>("time")); function.Components.Add(new Variable<double>("water_discharge")); // set initial values DateTime time1 = DateTime.Now; DateTime time2 = time1.AddMinutes(1); DateTime time3 = time2.AddMinutes(1); function[time1] = 0.0; function[time2] = 1.0; function[time3] = 2.0; ILineChartSeries lineChartSeries = ChartSeriesFactory.CreateLineSeries(); lineChartSeries.XValuesDataMember = function.Arguments[0].DisplayName; lineChartSeries.YValuesDataMember = function.Components[0].DisplayName; var control = new Control(); WindowsFormsTestHelper.Show(control); var functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = control }; lineChartSeries.DataSource = functionBindingList; function.Clear(); while(functionBindingList.IsProcessing) { Application.DoEvents(); } }
public void ClearSourceFunctionShouldClearFilteredBindingList() { IFunction function = new Function { Arguments = { new Variable <int>("x") }, Components = { new Variable <int>("f") } }; function[1] = 1; function[2] = 4; var filteredFunction = function.Filter(new VariableValueFilter <int>(function.Arguments[0], new[] { 1 })); IFunctionBindingList functionBindingList = new FunctionBindingList { Function = filteredFunction }; functionBindingList.Count .Should().Be.EqualTo(1); function.Clear(); functionBindingList.Count .Should().Be.EqualTo(0); }
public void BindToFunctionWithNaNValuesWithDateTimeArgument() { //setup a 2D function and fix one dimension IFunction function = new Function(); function.Arguments.Add(new Variable <DateTime>("x")); function.Components.Add(new Variable <double>("y")); function[new DateTime(2000, 1, 1)] = 2.0; function[new DateTime(2001, 1, 1)] = 3.0; function[new DateTime(2002, 1, 1)] = double.NaN; function[new DateTime(2003, 1, 1)] = 4.0; ILineChartSeries lineChartSeries = ChartSeriesFactory.CreateLineSeries(); var component = function.Components[0]; var variable = function.Arguments[0]; lineChartSeries.XValuesDataMember = variable.DisplayName; lineChartSeries.YValuesDataMember = component.DisplayName; var functionBindingList = new FunctionBindingList(function); lineChartSeries.DataSource = functionBindingList; Assert.AreEqual(4, lineChartSeries.XValues.Count); Assert.AreEqual(4, lineChartSeries.YValues.Count); var chartView1 = new ChartView(); chartView1.Chart.Series.Add(lineChartSeries); WindowsFormsTestHelper.ShowModal(chartView1); }
public void SeriesChangesWhenFunctionBindingListChanges() { IFunction function = new Function(); IVariable yVariable = new Variable <double>("y"); IVariable xVariable = new Variable <double>("x"); function.Arguments.Add(xVariable); function.Components.Add(yVariable); function[1.0] = 2.0; function[2.0] = 5.0; function[3.0] = 1.0; ILineChartSeries ls = ChartSeriesFactory.CreateLineSeries(); ls.YValuesDataMember = function.Components[0].DisplayName; ls.XValuesDataMember = function.Arguments[0].DisplayName; var synchronizeObject = new Control(); synchronizeObject.Show(); var functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = synchronizeObject }; ls.DataSource = functionBindingList; //a change in the function should change the series function[1.0] = 20.0; //wait for the series to get refreshed Assert.AreEqual(20, ls.YValues[0]); }
private void SetupFunctionTable() { tableView = new TableView(); var x = new Variable <int>("x"); var y = new Variable <int>("y"); y.DefaultValue = -99; f = new Function { Arguments = { x }, Components = { y } }; f[1] = 15; f[5] = 5; f[10] = 1; f[15] = 10; var bindingList = new FunctionBindingList(f) { SynchronizeInvoke = tableView }; tableView.Data = bindingList; tableView.AllowColumnSorting(false); tableView.AllowColumnFiltering(false); tableViewCopyPasteController = new TableViewFunctionPasteController(tableView, new List <int>(new [] { 0 })); }
public void ChangeFunctionValueAndCheckBindingListRowValue() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1")); function.Components.Add(new Variable <string>("y1")); function[0] = "zero"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; // binding list contains rows with argument and component values of the function var firstRow = (FunctionBindingListRow)functionBindingList[0]; Assert.AreEqual(0, firstRow["x1"]); Assert.AreEqual("zero", firstRow["y1"]); //check if changecalled event fires when we change the underlying function int calledCount = 0; functionBindingList.ListChanged += delegate { calledCount++; }; function[0] = "new_one"; Thread.Sleep(1000); //Assert.AreEqual(1, calledCount); Assert.AreEqual("new_one", firstRow["y1"]); }
public void Bind2DFunctionWithTuple() { IFunction function = new Function(); function.Arguments.Add(new Variable <Pair <string, float> >()); function.Components.Add(new Variable <int>("value")); function[new Pair <string, float>("aap", 0)] = 0; function[new Pair <string, float>("aap", 11)] = 1; function[new Pair <string, float>("muis", 0)] = 1; TypeConverter.RegisterTypeConverter <Pair <string, float>, PairTypeConverter <string, float> >(); Assert.AreEqual(1, function.Arguments.Count); Assert.AreEqual(1, function.Components.Count); var gridView = new DataGridView(); IFunctionBindingList functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = gridView }; gridView.DataSource = functionBindingList; WindowsFormsTestHelper.ShowModal(gridView); }
public void ClearFunctionThatIsBoundToDecorator() { IFunction function = new Function("time series"); function.Arguments.Add(new Variable <DateTime>("time")); function.Components.Add(new Variable <double>("water_discharge")); // set initial values DateTime time1 = DateTime.Now; DateTime time2 = time1.AddMinutes(1); DateTime time3 = time2.AddMinutes(1); function[time1] = 0.0; function[time2] = 1.0; function[time3] = 2.0; ILineChartSeries lineChartSeries = ChartSeriesFactory.CreateLineSeries(); lineChartSeries.XValuesDataMember = function.Arguments[0].DisplayName; lineChartSeries.YValuesDataMember = function.Components[0].DisplayName; var control = new Control(); WindowsFormsTestHelper.Show(control); var functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = control }; lineChartSeries.DataSource = functionBindingList; function.Clear(); }
public void Bind2DFunctionWith1ComponentAndCheckColumnName() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x") { Unit = new Unit("s", "s") }); function.Arguments.Add(new Variable <int>("y") { Unit = new Unit("m", "m") }); function.Components.Add(new Variable <string>("f1") { Unit = new Unit("m/s", "m/s") }); function[0, 0] = new[] { "f1(0,0)", "f2(0,0)" }; function[1, 0] = new[] { "f1(1,0)", "f2(1,0)" }; function[0, 1] = new[] { "f1(0,1)", "f2(0,1)" }; function[1, 1] = new[] { "f1(1,1)", "f2(1,1)" }; var gridView = new DataGridView(); IFunctionBindingList functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = gridView }; gridView.DataSource = functionBindingList; WindowsFormsTestHelper.ShowModal(gridView); }
public void RemoveRowsWhenArgumentValueIsRemovedIn2DFunction_Dimension0() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1")); function.Arguments.Add(new Variable <int>("x2")); function.Components.Add(new Variable <string>("y")); function[0, 0] = "00"; function[0, 1] = "01"; function[1, 0] = "10"; function[1, 1] = "11"; var functionBindingList = new FunctionBindingList { Function = function }; function.Arguments[0].Values.RemoveAt(1); while (functionBindingList.IsProcessing) { Application.DoEvents(); } Assert.AreEqual(function.Components[0].Values.Count, functionBindingList.Count); }
public void RemoveRowsWhenArgumentValueIsRemovedIn2DFunction_Dimension0_WithForm() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1")); function.Arguments.Add(new Variable <int>("x2")); function.Components.Add(new Variable <string>("y")); function[0, 0] = "00"; function[0, 1] = "01"; function[1, 0] = "10"; function[1, 1] = "11"; var gridView = new DataGridView(); IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function, SynchronizeInvoke = gridView }; gridView.DataSource = functionBindingList; Action <Form> showAction = delegate { function.Arguments[0].Values.RemoveAt(1); Application.DoEvents(); Thread.Sleep(50); Application.DoEvents(); Assert.AreEqual(function.Components[0].Values.Count, functionBindingList.Count); }; WindowsFormsTestHelper.ShowModal(gridView, showAction); }
public void InsertRowsWhenArgumentValueAreInsertedIn2DFunction_Dimension0() { IFunction function = new Function(); var variablex1 = new Variable <int>("x1"); function.Arguments.Add(variablex1); var variablex2 = new Variable <int>("x2"); function.Arguments.Add(variablex2); function.Components.Add(new Variable <string>("y")); var value = "somevalue"; function.Components[0].DefaultValue = value; function[0, 0] = "00"; function[0, 1] = "01"; function[2, 0] = "20"; function[2, 1] = "21"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; variablex1.Values.Insert(1, 42); WaitUntilLastOperationIsFinished(functionBindingList); //check functionbindinglist values //two functionbindinglist rows where added at position 2 and three of the bindinglist containing default componentvalues Assert.AreEqual(value, ((FunctionBindingListRow)functionBindingList[2])[2]); Assert.AreEqual(value, ((FunctionBindingListRow)functionBindingList[3])[2]); Assert.AreEqual(function.Components[0].Values.Count, functionBindingList.Count); }
public void ClearSourceFunctionShouldClearBindingList() { IFunction function = new Function { Arguments = { new Variable <int>("x") }, Components = { new Variable <int>("f") } }; function[1] = 1; function[2] = 4; var functionBindingList = new FunctionBindingList { Function = function }; functionBindingList.Count .Should().Be.EqualTo(2); function.Clear(); // wait until binding list is actually cleared. WaitUntilLastOperationIsFinished(functionBindingList); functionBindingList.Count .Should().Be.EqualTo(0); }
public void ChangingDataUpdatesColumns() { var levelTimeSeries = new TimeSeries(); levelTimeSeries.Arguments[0].DefaultValue = new DateTime(2000, 1, 1); levelTimeSeries.Components.Add(new Variable <double>("level", new Unit("m", "m"))); levelTimeSeries.Name = "water level"; var tableView = new TableView(); var functionBindingList = new FunctionBindingList(levelTimeSeries) { SynchronizeInvoke = tableView }; tableView.Data = functionBindingList; var flowSeries = new TimeSeries(); flowSeries.Arguments[0].DefaultValue = new DateTime(2000, 1, 1); flowSeries.Components.Add(new Variable <double>("flow", new Unit("m³/s", "m³/s"))); flowSeries.Name = "flow"; tableView.Data = new FunctionBindingList(flowSeries) { SynchronizeInvoke = tableView }; //WindowsFormsTestHelper.ShowModal(tableView); Assert.AreEqual("flow [m³/s]", tableView.Columns[1].Caption); }
public void ShowReadOnlyFirstColumn() { var x = new Variable <int>("x"); var y = new Variable <int>("y"); y.DefaultValue = -99; var f = new Function { Arguments = { x }, Components = { y } }; f[1] = 1; f[5] = 5; f[10] = 10; f[15] = 15; var tableView = new TableView(); var bindingList = new FunctionBindingList(f) { SynchronizeInvoke = tableView }; tableView.Data = bindingList; tableView.Columns[0].ReadOnly = true; WindowsFormsTestHelper.ShowModal(tableView); }
public void PasteTextIntoFunctionBindingList() { IFunction function = new Function(); var argument = new Variable<string>("A"); function.Arguments.Add(argument); var component = new Variable<string>("B"); function.Components.Add(component); var view = new TableView(); IBindingList bindingList = new FunctionBindingList(function) { SynchronizeInvoke = view }; view.Data = bindingList; const string argumentvalue1 = "argumentvalue1"; const string componentvalue1 = "componentvalue1"; const string argumentvalue2 = "argumentvalue2"; string componentvalue2 = "componentvalue2" + (char)0x03A9; Clipboard.SetText(string.Format("{0}\t{1}" + Environment.NewLine + "{2}\t{3}", argumentvalue1, componentvalue1, argumentvalue2, componentvalue2)); //action! pasting the text should fill out the function view.PasteClipboardContents(); Thread.Sleep(2000); Assert.AreEqual(argumentvalue1, argument.Values[0]); Assert.AreEqual(componentvalue1, component.Values[0]); Assert.AreEqual(argumentvalue2, argument.Values[1]); Assert.AreEqual(componentvalue2, component.Values[1]); }
public void ModifyBindingListRowAndCommitUpdatesFunction() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1")); function.Components.Add(new Variable <string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; IFunctionBindingList functionBindingList = new FunctionBindingList(function); var row = (FunctionBindingListRow)functionBindingList[0]; var three = "three"; row[1] = three; Assert.AreEqual(row[1], three); //set Assert.AreNotEqual(row[1], function[0]); //but not yet committed row.EndEdit(); //commit row = (FunctionBindingListRow)functionBindingList[0]; Assert.AreEqual(row[1], three); //still set Assert.AreEqual(row[1], function[0]); //committed }
public void SetMultipleValuesToFunctionUpdatesBindingList() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1")); function.Components.Add(new Variable <string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; IFunctionBindingList functionBindingList = new FunctionBindingList(function); function[3] = "three"; Assert.AreEqual(4, functionBindingList.Count); function.Arguments[0].AddValues(new[] { 4, 5, 6 }); Assert.AreEqual(7, functionBindingList.Count); function.Arguments[0].SetValues(new[] { 8, 9, 10 }); //this adds the values, so expected is 7+3 Assert.AreEqual(10, functionBindingList.Count); }
public void FunctionBindingListShouldSuspendUpdatesDuringFireEventsFalse() { //add a function with a bindinglist var f = new Function { Arguments = { new Variable <double>("x") }, Components = { new Variable <double>("y") } }; var bindingList = new FunctionBindingList(f); //fake a model run by setting DelayedEventHandlerController.FireEvents to false (rename it to eventscontroller?) DelayedEventHandlerController.FireEvents = false; try { //write a lot of values in function... var argumentValues = Enumerable.Range(1, 1000).Select(i => Convert.ToDouble(i)); var componentValues = Enumerable.Range(1, 1000).Select(i => Convert.ToDouble(i)); f.SetComponentArgumentValues(componentValues, argumentValues); //assert the bindinglist did NOT update Assert.AreEqual(0, bindingList.Count); } finally { //re-enable event in DelayedEventHandlerController DelayedEventHandlerController.FireEvents = true; } //check the bindinglist got the message..(rowcount+sending a 'reset' event to be handled by the tableview. Assert.AreEqual(1000, bindingList.Count); }
public void ModifyingTableWhichTriggersReorderingGoesFine() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1") { IsAutoSorted = true }); function.Components.Add(new Variable <string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; var bindingList = new FunctionBindingList(function); var called = 0; bindingList.ListChanged += (s, e) => called++; var row = bindingList[0]; row[0] = 3; // will cause reordering in function row.EndEdit(); // commit Assert.Greater(called, 0); //table needs to be notified of changes Assert.AreEqual(3, bindingList[2][0]); //expect bindinglist to reorder as well }
public void TestEndNewCancelsOnUncommittedValues() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>()); function.Components.Add(new Variable <int>()); var functionBindingList = new FunctionBindingList(function); // add one real row functionBindingList.AddNew(); functionBindingList[0][0] = 1; functionBindingList[0][1] = 2; functionBindingList[0].EndEdit(); //commits functionBindingList.EndNew(0); // add one row (but do not commit) functionBindingList.AddNew(); functionBindingList[1][1] = 3; Assert.AreEqual(2, functionBindingList.Count); functionBindingList.EndNew(1); //should cause a cancel: uncommitted values Assert.AreEqual(1, functionBindingList.Count); }
public void SeriesChangesWhenFunctionBindingListChanges() { IFunction function = new Function(); IVariable yVariable = new Variable<double>("y"); IVariable xVariable = new Variable<double>("x"); function.Arguments.Add(xVariable); function.Components.Add(yVariable); function[1.0] = 2.0; function[2.0] = 5.0; function[3.0] = 1.0; ILineChartSeries ls = ChartSeriesFactory.CreateLineSeries(); ls.YValuesDataMember = function.Components[0].DisplayName; ls.XValuesDataMember = function.Arguments[0].DisplayName; var synchronizeObject = new Control(); synchronizeObject.Show(); var functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = synchronizeObject }; ls.DataSource = functionBindingList; //a change in the function should change the series function[1.0] = 20.0; while(functionBindingList.IsProcessing) { Application.DoEvents(); } Assert.AreEqual(20, ls.YValues[0]); }
public void InsertingValuesinTableAreSortedAutomatically() { var x = new Variable <int>("x"); var y = new Variable <int>("y"); y.DefaultValue = -99; var f = new Function { Arguments = { x }, Components = { y } }; f[1] = 1; f[5] = 5; f[10] = 10; f[15] = 15; var tableView = new TableView(); var bindingList = new FunctionBindingList(f) { SynchronizeInvoke = tableView }; tableView.Data = bindingList; WindowsFormsTestHelper.ShowModal(tableView); }
public void TableSortingAndFilteringCanBeDisabled() { var x = new Variable <int>("x"); var y = new Variable <int>("y"); y.DefaultValue = -99; var f = new Function { Arguments = { x }, Components = { y } }; f[1] = 15; f[5] = 5; f[10] = 1; f[15] = 10; var tableView = new TableView(); var bindingList = new FunctionBindingList(f) { SynchronizeInvoke = tableView }; tableView.Data = bindingList; tableView.AllowColumnSorting(false); tableView.AllowColumnFiltering(false); WindowsFormsTestHelper.ShowModal(tableView); }
public void RefreshShouldHapenFastWhenFunctionDataSourceHasManyChanges() { IFunction function = new Function { Arguments = { new Variable <int>("x") }, Components = { new Variable <int>("f") } }; var values = new int[1000]; for (var i = 0; i < values.Length; i++) { values[i] = i; } // create function binding list before to exclude it when measuring time var functionBindingList = new FunctionBindingList(function); var tableView = new TableView { Data = functionBindingList }; // now do the same when table view is shown Action <Form> onShown = delegate { var stopwatch = new Stopwatch(); stopwatch.Start(); function.SetValues(values, new VariableValueFilter <int>(function.Arguments[0], values)); stopwatch.Stop(); log.DebugFormat("Refreshing grid while inserting values into function took {0}ms", stopwatch.ElapsedMilliseconds); }; WindowsFormsTestHelper.ShowModal(tableView, onShown); }
private static ILineChartSeries GetLineSeries(IFunction function, ChartView view) { ILineChartSeries ls = ChartSeriesFactory.CreateLineSeries(); ls.YValuesDataMember = function.Components[0].DisplayName; ls.XValuesDataMember = function.Arguments[0].DisplayName; var functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = view}; ls.DataSource = functionBindingList; return ls; }
public void ModifyFunctionBindingListFromOtherThreadsWhileDisposing() { IFunction function = new Function(); function.Arguments.Add(new Variable <string>("str")); function.Components.Add(new Variable <int>("value")); function["aap"] = 0; function["noot"] = 1; function["mies"] = 1; var done = false; string exceptionMessage = null; var invokeForm = new Form(); InvokeRequiredInfo.SynchronizeObject = invokeForm; // one thread is firing static events through the DelayedEventHandlerController. var t = new Thread(() => { try { while (!done) { // the bindinglists are subscribed to this event and are responding to it DelayedEventHandlerController.FireEvents = !DelayedEventHandlerController.FireEvents; } } catch (Exception e) { exceptionMessage = e.ToString(); } }); t.Start(); // while another thread is creating & disposing binding lists for (int i = 0; i < 100000; i++) { var bindingList = new FunctionBindingList(function) { SynchronizeInvoke = invokeForm, SynchronizeWaitMethod = Application.DoEvents }; bindingList.Dispose(); } done = true; t.Join(); DelayedEventHandlerController.FireEvents = true; // reset firing.. // see if exceptions occured in the other thread, if so, fail if (exceptionMessage != null) { Assert.Fail(exceptionMessage); } }
public void ContextMenuPasteTextIntoGridBoundToBindingList() { IFunction function = new Function(); function.Arguments.Add(new Variable <string>("A")); function.Components.Add(new Variable <string>("B")); function["a"] = "b"; var bindingList = new FunctionBindingList(function); var gridControl = new GridControl(); var xtraGridContextMenu = new XtraGridContextMenu { SourceGrid = gridControl }; gridControl.ContextMenuStrip = xtraGridContextMenu; gridControl.DataSource = bindingList; bindingList.SynchronizeInvoke = gridControl; bindingList.SynchronizeWaitMethod = delegate { Application.DoEvents(); }; const string argumentvalue1 = "argumentvalue1"; const string componentvalue1 = "componentvalue1"; const string argumentvalue2 = "argumentvalue2"; string componentvalue2 = "componentvalue2" + (char)0x03A9; Clipboard.SetText(string.Format("{0}\t{1}" + Environment.NewLine + "{2}\t{3}", argumentvalue1, componentvalue1, argumentvalue2, componentvalue2)); WindowsFormsTestHelper.Show(gridControl); for (int i = 0; i < 5; i++) { Application.DoEvents(); Thread.Sleep(50); } var v = (GridView)gridControl.FocusedView; xtraGridContextMenu.PasteClipboardContents(); for (int i = 0; i < 5; i++) { Application.DoEvents(); Thread.Sleep(50); } Assert.AreEqual(argumentvalue1, v.GetRowCellValue(0, v.Columns[0])); Assert.AreEqual(componentvalue1, v.GetRowCellValue(0, v.Columns[1])); Assert.AreEqual(argumentvalue2, v.GetRowCellValue(1, v.Columns[0])); Assert.AreEqual(componentvalue2, v.GetRowCellValue(1, v.Columns[1])); WindowsFormsTestHelper.ShowModal(gridControl); }
public void TestAddNewCoreUsesValueGenerationDelegate() { IFunction function = new Function(); function.Arguments.Add(new Variable <TestClass>()); function.Components.Add(new Variable <int>()); FunctionBindingList functionBindingList = new FunctionBindingList(function); //add two values..the first one is always OK!!?? functionBindingList.AddNew(); functionBindingList.AddNew(); Assert.AreEqual(2, function.Arguments[0].Values.Count); }
private static ILineChartSeries GetLineSeries(IFunction function, ChartView view) { ILineChartSeries ls = ChartSeriesFactory.CreateLineSeries(); ls.YValuesDataMember = function.Components[0].DisplayName; ls.XValuesDataMember = function.Arguments[0].DisplayName; var functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = view }; ls.DataSource = functionBindingList; return(ls); }
public void RefreshShouldBeFastWhenFunctionDataSourceHasManyChanges() { IFunction function = new Function { Arguments = { new Variable <int>("x") }, Components = { new Variable <int>("f") } }; var values = new int[1000]; for (var i = 0; i < values.Length; i++) { values[i] = i; } var chartView = new ChartView(); var lineSeries = ChartSeriesFactory.CreateLineSeries(); var functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = chartView }; lineSeries.DataSource = functionBindingList; lineSeries.XValuesDataMember = function.Arguments[0].DisplayName; lineSeries.YValuesDataMember = function.Components[0].DisplayName; chartView.Chart.Series.Add(lineSeries); lineSeries.PointerVisible = false; // now do the same when table view is shown Action <Form> onShown = delegate { var stopwatch = new Stopwatch(); stopwatch.Reset(); stopwatch.Start(); SetFunctionValuesWrappedWithChartView(function, values); stopwatch.Stop(); log.DebugFormat("Refreshing chart while inserting values into function took {0}ms", stopwatch.ElapsedMilliseconds); stopwatch.ElapsedMilliseconds.Should("Insert of 1k values should take < 100ms").Be.LessThan(300); }; WindowsFormsTestHelper.ShowModal(chartView, onShown); }
public void ClearFunctionBindingListShouldRemoveFunctionValues() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1")); function.Components.Add(new Variable <string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; var functionBindingList = new FunctionBindingList(function); functionBindingList.Clear(); Assert.AreEqual(0, function.GetValues <string>().Count); }
public void AddValuesToFunctionUpdatesBindingList() { IFunction function = new Function(); function.Arguments.Add(new Variable <int>("x1")); function.Components.Add(new Variable <string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; IFunctionBindingList functionBindingList = new FunctionBindingList(function); function[3] = "three"; Assert.AreEqual(4, functionBindingList.Count); }
public void Bind1DFunctionWith2Components() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x")); function.Components.Add(new Variable<string>("f1")); function.Components.Add(new Variable<string>("f2")); function[0] = new[] { "f1(0)", "f2(0)" }; function[1] = new[] { "f1(1)", "f2(1)" }; function[2] = new[] { "f1(2)", "f2(2)" }; var gridView = new DataGridView(); IFunctionBindingList functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = gridView }; gridView.DataSource = functionBindingList; WindowsFormsTestHelper.ShowModal(gridView); }
public void Bind2DFunctionWith1ComponentAndCheckColumnName() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x") { Unit = new Unit("s", "s") }); function.Arguments.Add(new Variable<int>("y") { Unit = new Unit("m", "m") }); function.Components.Add(new Variable<string>("f1") { Unit = new Unit("m/s","m/s") }); function[0, 0] = new[] { "f1(0,0)", "f2(0,0)" }; function[1, 0] = new[] { "f1(1,0)", "f2(1,0)" }; function[0, 1] = new[] { "f1(0,1)", "f2(0,1)" }; function[1, 1] = new[] { "f1(1,1)", "f2(1,1)" }; var gridView = new DataGridView(); IFunctionBindingList functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = gridView }; gridView.DataSource = functionBindingList; WindowsFormsTestHelper.ShowModal(gridView); }
public void ShowReadOnlyTableView() { var x = new Variable<int>("x"); var y = new Variable<int>("y"); y.DefaultValue = -99; var f = new Function { Arguments = { x }, Components = { y } }; f[1] = 1; f[5] = 5; f[10] = 10; f[15] = 15; var tableView = new TableView { ReadOnly = true }; var bindingList = new FunctionBindingList(f) { SynchronizeInvoke = tableView}; tableView.Data = bindingList; WindowsFormsTestHelper.ShowModal(tableView); }
public void BindToFilteredFuntion() { //setup a 2D function and fix one dimension IFunction function = new Function(); IVariable<int> x = new Variable<int>(); function.Arguments.Add(x); function.Arguments.Add(new Variable<int>("Y")); function.Components.Add(new Variable<int>()); function[0, 0] = 2; function[0, 1] = 3; function[1, 0] = 1; function[1, 1] = 4; IFunction filteredFunction = function.Filter(new VariableValueFilter<int>(x, 0)); ILineChartSeries lineChartSeries = ChartSeriesFactory.CreateLineSeries(); var variable = filteredFunction.Arguments[1]; var component = filteredFunction.Components[0]; lineChartSeries.XValuesDataMember = variable.DisplayName; lineChartSeries.YValuesDataMember = component.DisplayName; var functionBindingList = new FunctionBindingList(filteredFunction); lineChartSeries.DataSource = functionBindingList; while (functionBindingList.IsProcessing) { Application.DoEvents(); } Assert.AreEqual(2, lineChartSeries.XValues.Count); Assert.AreEqual(2, lineChartSeries.YValues.Count); Assert.AreEqual(0.0, lineChartSeries.XValues[0]); Assert.AreEqual(1.0, lineChartSeries.XValues[1]); Assert.AreEqual(2.0, lineChartSeries.YValues[0]); Assert.AreEqual(3.0, lineChartSeries.YValues[1]); }
public void AddValuesToFunctionUpdatesBindingList() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x1")); function.Components.Add(new Variable<string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; function[3] = "three"; WaitUntilLastOperationIsFinished(functionBindingList); Assert.AreEqual(4, functionBindingList.Count); }
public void ChangeValuesViaBindingListMustUpdateValuesInFunction() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x1")); function.Components.Add(new Variable<string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; var row = (FunctionBindingListRow)functionBindingList[1]; row[1] = "one_updated"; WaitUntilLastOperationIsFinished(functionBindingList); Assert.AreEqual("one_updated", function[1]); }
public void AddRowsToBindingListUpdatesFunction() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x1")); function.Components.Add(new Variable<string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; functionBindingList.AddNew(); var row = (FunctionBindingListRow)functionBindingList[3]; // row[0] = 3; row[1] = "three"; WaitUntilLastOperationIsFinished(functionBindingList); Assert.AreEqual(row[1], function[3]); }
public void ClearFunctionBindingListShouldRemoveFunctionValues() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x1")); function.Components.Add(new Variable<string>("y1")); function[0] = "zero"; function[1] = "one"; function[2] = "two"; var functionBindingList = new FunctionBindingList { Function = function }; functionBindingList.Clear(); WaitUntilLastOperationIsFinished(functionBindingList); Assert.AreEqual(0, function.GetValues<string>().Count); }
public void ChangeFunctionValueAndCheckBindingListRowValue() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x1")); function.Components.Add(new Variable<string>("y1")); function[0] = "zero"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; // binding list contains rows with argument and component values of the function var firstRow = (FunctionBindingListRow)functionBindingList[0]; Assert.AreEqual(0, firstRow["x1"]); Assert.AreEqual("zero", firstRow["y1"]); //check if changecalled event fires when we change the underlying function int calledCount = 0; functionBindingList.ListChanged += delegate { calledCount++; }; function[0] = "new_one"; Thread.Sleep(1000); //Assert.AreEqual(1, calledCount); Assert.AreEqual("new_one", firstRow["y1"]); }
public void ClearSourceFunctionShouldClearFilteredBindingList() { IFunction function = new Function { Arguments = { new Variable<int>("x")}, Components = { new Variable<int>("f") } }; function[1] = 1; function[2] = 4; var filteredFunction = function.Filter(new VariableValueFilter<int>(function.Arguments[0], new[] { 1 })); IFunctionBindingList functionBindingList = new FunctionBindingList { Function = filteredFunction }; functionBindingList.Count .Should().Be.EqualTo(1); function.Clear(); functionBindingList.Count .Should().Be.EqualTo(0); }
public void RefreshShouldHapenFastWhenFunctionDataSourceHasManyChanges() { IFunction function = new Function { Arguments = {new Variable<int>("x")}, Components = {new Variable<int>("f")} }; var values = new int[1000]; for (var i = 0; i < values.Length; i++) { values[i] = i; } // create function binding list before to exclude it when measuring time var functionBindingList = new FunctionBindingList(function); var tableView = new TableView { Data = functionBindingList }; // now do the same when table view is shown Action<Form> onShown = delegate { var stopwatch = new Stopwatch(); stopwatch.Start(); function.SetValues(values, new VariableValueFilter<int>(function.Arguments[0], values)); stopwatch.Stop(); log.DebugFormat("Refreshing grid while inserting values into function took {0}ms", stopwatch.ElapsedMilliseconds); }; WindowsFormsTestHelper.ShowModal(tableView, onShown); }
public void ContextMenuPasteTextIntoGridBoundToBindingList() { IFunction function = new Function(); function.Arguments.Add(new Variable<string>("A")); function.Components.Add(new Variable<string>("B")); function["a"] = "b"; var bindingList = new FunctionBindingList(function); var gridControl = new GridControl(); var xtraGridContextMenu = new XtraGridContextMenu { SourceGrid = gridControl }; gridControl.ContextMenuStrip = xtraGridContextMenu; gridControl.DataSource = bindingList; bindingList.SynchronizeInvoke = gridControl; bindingList.SynchronizeWaitMethod = delegate { Application.DoEvents(); }; const string argumentvalue1 = "argumentvalue1"; const string componentvalue1 = "componentvalue1"; const string argumentvalue2 = "argumentvalue2"; string componentvalue2 = "componentvalue2" + (char)0x03A9; Clipboard.SetText(string.Format("{0}\t{1}" + Environment.NewLine + "{2}\t{3}", argumentvalue1, componentvalue1, argumentvalue2, componentvalue2)); WindowsFormsTestHelper.Show(gridControl); for (int i = 0; i < 5; i++) { Application.DoEvents(); Thread.Sleep(50); } var v = (GridView)gridControl.FocusedView; xtraGridContextMenu.PasteClipboardContents(); for (int i = 0; i < 5; i++) { Application.DoEvents(); Thread.Sleep(50); } Assert.AreEqual(argumentvalue1, v.GetRowCellValue(0, v.Columns[0])); Assert.AreEqual(componentvalue1, v.GetRowCellValue(0, v.Columns[1])); Assert.AreEqual(argumentvalue2, v.GetRowCellValue(1, v.Columns[0])); Assert.AreEqual(componentvalue2, v.GetRowCellValue(1, v.Columns[1])); WindowsFormsTestHelper.ShowModal(gridControl); }
public void ChangingDataUpdatesColumns() { var levelTimeSeries = new TimeSeries(); levelTimeSeries.Arguments[0].DefaultValue = new DateTime(2000, 1, 1); levelTimeSeries.Components.Add(new Variable<double>("level", new Unit("m", "m"))); levelTimeSeries.Name = "water level"; var tableView = new TableView(); var functionBindingList = new FunctionBindingList(levelTimeSeries) {SynchronizeInvoke = tableView}; tableView.Data = functionBindingList; var flowSeries = new TimeSeries(); flowSeries.Arguments[0].DefaultValue = new DateTime(2000, 1, 1); flowSeries.Components.Add(new Variable<double>("flow", new Unit("m³/s", "m³/s"))); flowSeries.Name = "flow"; tableView.Data = new FunctionBindingList(flowSeries) { SynchronizeInvoke = tableView }; //WindowsFormsTestHelper.ShowModal(tableView); Assert.AreEqual("flow [m³/s]", tableView.Columns[1].Caption); }
public void InsertRowsWhenArgumentValueAreInsertedIn2DFunction_Dimension0() { IFunction function = new Function(); var variablex1 = new Variable<int>("x1"); function.Arguments.Add(variablex1); var variablex2 = new Variable<int>("x2"); function.Arguments.Add(variablex2); function.Components.Add(new Variable<string>("y")); var value = "somevalue"; function.Components[0].DefaultValue = value ; function[0, 0] = "00"; function[0, 1] = "01"; function[2, 0] = "20"; function[2, 1] = "21"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; variablex1.Values.Insert(1,42); WaitUntilLastOperationIsFinished(functionBindingList); //check functionbindinglist values //two functionbindinglist rows where added at position 2 and three of the bindinglist containing default componentvalues Assert.AreEqual(value, ((FunctionBindingListRow)functionBindingList[2])[2]); Assert.AreEqual(value, ((FunctionBindingListRow)functionBindingList[3])[2]); Assert.AreEqual(function.Components[0].Values.Count, functionBindingList.Count); }
internal FunctionBindingListRow(FunctionBindingList owner) { this.owner = owner; }
public void InsertNewArgumentAndComponentValuesInto1Arg3CompArray() { IFunction function = new Function(); var argument = new Variable<int>("argumentValue"); function.Arguments.Add(argument); var component1 = new Variable<int>("component1"); var component2 = new Variable<int>("component2"); var component3 = new Variable<int>("component3"); function.Components.Add(component1); function.Components.Add(component2); function.Components.Add(component3); var functionBindingList = new FunctionBindingList {Function = function}; function[0] = new[] {1, 2, 3}; function[3] = new[] {4, 5, 6}; function[2] = new[] {7, 8, 9}; WaitUntilLastOperationIsFinished(functionBindingList); var firstRow = functionBindingList[0]; var secondRow = functionBindingList[1]; var thirdRow = functionBindingList[2]; Assert.AreEqual(firstRow[1], 1); Assert.AreEqual(secondRow[2],secondRow["component2"]); Assert.AreEqual(thirdRow[3],6); function[1] = new[] {12, 13, 14}; WaitUntilLastOperationIsFinished(functionBindingList); Assert.AreEqual(functionBindingList[1][1], 12); Assert.AreEqual(functionBindingList[1][2], 13); //to see results: uncomment the following //var gridView = new DataGridView { DataSource = functionBindingList }; //WindowsFormsTestHelper.ShowModal(gridView); }
public void Filtered2DFunction() { IFunction function = new Function { Arguments = { new Variable<int>("x"), new Variable<int>("y") }, Components = {new Variable<int>("f")} }; function[1, 1] = 1; function[1, 2] = 2; function[2, 1] = 3; function[2, 2] = 4; var filteredFunction = function.Filter(new VariableValueFilter<int>(function.Arguments[0], new[]{1})); IFunctionBindingList functionBindingList = new FunctionBindingList { Function = filteredFunction }; functionBindingList.Count .Should().Be.EqualTo(2); }
public void ClearSourceFunctionShouldClearBindingList() { IFunction function = new Function { Arguments = { new Variable<int>("x") }, Components = { new Variable<int>("f") } }; function[1] = 1; function[2] = 4; var functionBindingList = new FunctionBindingList {Function = function}; functionBindingList.Count .Should().Be.EqualTo(2); function.Clear(); // wait until binding list is actually cleared. WaitUntilLastOperationIsFinished(functionBindingList); functionBindingList.Count .Should().Be.EqualTo(0); }
public void InsertingValuesinTableAreSortedAutomatically() { var x = new Variable<int>("x"); var y = new Variable<int>("y"); y.DefaultValue = -99; var f = new Function { Arguments = { x }, Components = { y } }; f[1] = 1; f[5] = 5; f[10] = 10; f[15] = 15; var tableView = new TableView(); var bindingList = new FunctionBindingList(f) { SynchronizeInvoke = tableView }; tableView.Data = bindingList; WindowsFormsTestHelper.ShowModal(tableView); }
public void RemoveRowsWhenArgumentValueIsRemovedIn2DFunction_Dimension0_WithForm() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x1")); function.Arguments.Add(new Variable<int>("x2")); function.Components.Add(new Variable<string>("y")); function[0, 0] = "00"; function[0, 1] = "01"; function[1, 0] = "10"; function[1, 1] = "11"; var gridView = new DataGridView(); IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function, SynchronizeInvoke = gridView }; gridView.DataSource = functionBindingList; Action<Form> showAction = delegate { function.Arguments[0].Values.RemoveAt(1); Application.DoEvents(); Thread.Sleep(50); Application.DoEvents(); Assert.AreEqual(function.Components[0].Values.Count, functionBindingList.Count); }; WindowsFormsTestHelper.ShowModal(gridView, showAction); }
public void RemoveRowsWhenArgumentValueIsRemovedIn2DFunction_Dimension0() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x1")); function.Arguments.Add(new Variable<int>("x2")); function.Components.Add(new Variable<string>("y")); function[0, 0] = "00"; function[0, 1] = "01"; function[1, 0] = "10"; function[1, 1] = "11"; var functionBindingList = new FunctionBindingList { Function = function }; function.Arguments[0].Values.RemoveAt(1); while(functionBindingList.IsProcessing) { Application.DoEvents(); } Assert.AreEqual(function.Components[0].Values.Count, functionBindingList.Count); }
public void ResetBindingListWhenArgumentsOrValuesChange() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("index")); function.Components.Add(new Variable<int>("value")); function[0] = 1; function[1] = 2; function[2] = 3; IFunctionBindingList bindingList= new FunctionBindingList(function); Assert.AreEqual(3, bindingList.Count); function.Components.Clear(); WaitUntilLastOperationIsFinished(bindingList); Assert.AreEqual(0, bindingList.Count); }
public void TableSortingAndFilteringCanBeDisabled() { var x = new Variable<int>("x"); var y = new Variable<int>("y"); y.DefaultValue = -99; var f = new Function { Arguments = { x }, Components = { y } }; f[1] = 15; f[5] = 5; f[10] = 1; f[15] = 10; var tableView = new TableView(); var bindingList = new FunctionBindingList(f) { SynchronizeInvoke = tableView }; tableView.Data = bindingList; tableView.AllowColumnSorting(false); tableView.AllowColumnFiltering(false); WindowsFormsTestHelper.ShowModal(tableView); }
public void Bind2DFunctionWithTuple() { IFunction function = new Function(); function.Arguments.Add(new Variable<Pair<string, float>>()); function.Components.Add(new Variable<int>("value")); function[new Pair<string, float>("aap", 0)] = 0; function[new Pair<string, float>("aap", 11)] = 1; function[new Pair<string, float>("muis", 0)] = 1; TypeConverter.RegisterTypeConverter<Pair<string, float>, PairTypeConverter<string, float>>(); Assert.AreEqual(1, function.Arguments.Count); Assert.AreEqual(1, function.Components.Count); var gridView = new DataGridView(); IFunctionBindingList functionBindingList = new FunctionBindingList(function) { SynchronizeInvoke = gridView }; gridView.DataSource = functionBindingList; WindowsFormsTestHelper.ShowModal(gridView); }
public void InsertRowsWhenArgumentValueAreInsertedIn2DFunction_Dimension1() { IFunction function = new Function(); function.Arguments.Add(new Variable<int>("x1")); function.Arguments.Add(new Variable<int>("x2")); function.Components.Add(new Variable<string>("y")); function[0, 0] = "00"; function[0, 2] = "02"; function[1, 0] = "10"; function[1, 2] = "12"; IFunctionBindingList functionBindingList = new FunctionBindingList { Function = function }; function.Arguments[1].Values.Insert(1, 1); Assert.AreEqual(function.Components[0].Values.Count, functionBindingList.Count); }
public void TestAddNewCoreUsesValueGenerationDelegate() { IFunction function = new Function(); function.Arguments.Add(new Variable<TestClass>()); function.Components.Add(new Variable<int>()); FunctionBindingList functionBindingList = new FunctionBindingList(function); //add two values..the first one is always OK!!?? functionBindingList.AddNew(); functionBindingList.AddNew(); Assert.AreEqual(2, function.Arguments[0].Values.Count); }