public MainWindow() { DataContext = this; Graph = new PlotModel(); chart = new ChartAdapter(Graph); chart.SetLinearScale(AxisProperty.Both); loader = new SchemeLoader(); loader.Import(@"Scheme.rkt"); var evaluator = new ProxySchemeEvaluator(); var schemeCalculator = new SchemeCalculator(evaluator); transformer = new LineSeriesTransformer((IFunctionPlotter)schemeCalculator,(ICalculate)schemeCalculator); modelCollection = new ObservableLineSeriesModelCollection(); modelCollection.CollectionChanged += ModelChanged; ModelViewCollection = new ObservableLineSeriesViewModelCollection(); ModelViewCollection.AddModel(new LineSeriesViewModel { Function = "(lambda (x) x)", Name = "Example 1", }); InitializeComponent(); }
public void IntegrateWith0RectsFrom1To5() { // Arrange var schemeCalc = new SchemeCalculator(evaluator) as ICalculate; double expected = 20.0; // Act schemeCalc.Integrate("(lambda (x) (* x x))", 1, 5, 0); }
public void PlotDerivativeWithDx0() { // Arrange var plotter = new SchemeCalculator(evaluator); // Act var actual = plotter.PlotDerivative("(lambda (x) (* x x))", 0, 1, 3, 3); // Assert Assert.AreEqual(actual, null); }
public void IntegrateWith5RectanglesAtSpecificPosition() { // Arrange var schemeCalc = new SchemeCalculator(evaluator) as ICalculate; double expected = 0.0; // Act var actual = schemeCalc.Integrate("(lambda (x) (* x x))",1,1,5); // Assert Assert.AreEqual(expected, actual); }
public void IntegrateWith2RectsFrom1To5() { // Arrange var schemeCalc = new SchemeCalculator(evaluator) as ICalculate; double expected = 20.0; // Act var actual = schemeCalc.Integrate("(lambda (x) (* x x))", 1, 5, 2); // Assert Assert.AreEqual(expected, actual); }
public void PlotLinearFunctionFrom1To3() { // Arrange var plotter = new SchemeCalculator(evaluator); var expected = new List<KeyValuePair<double, double>> { new KeyValuePair<double, double>(1, 1), new KeyValuePair<double, double>(2, 2), new KeyValuePair<double, double>(3, 3), }; // Act var actual = plotter.PlotFunction("(lambda (x) x)", 1, 3, 3); // Assert Assert.AreEqual(expected, actual); }
public void PlotDerivative1To33Samples() { // Arrange double dx = 0.001; var plotter = new SchemeCalculator(evaluator); var expected = new List<KeyValuePair<double, double>> { new KeyValuePair<double, double>(1, 2), new KeyValuePair<double, double>(2, 4), new KeyValuePair<double, double>(3, 6), }; // Act var actual = plotter.PlotDerivative("(lambda (x) (* x x))", dx, 1, 3, 3); // Assert for (int i = 0; i < 3; i++) { var expectedI = expected[i]; var actualI = actual.ElementAt(i); Assert.That(actualI.Value, Is.EqualTo(expectedI.Value).Within(dx)); Assert.AreEqual(expectedI.Key, actualI.Key); } }
public void PlotLinearFunctionsFrom1To3InNegativeSamples() { // Arrange var plotter = new SchemeCalculator(evaluator); // Act var actual = plotter.PlotFunction("(lambda (x) x)", 1, 3, -1); // Assert Assert.AreEqual(actual, null); }