private static TestDrawingWrapper StartDataGeneration(IDataProviderService dataProviderService, int pointsNumber, int linesNumber) { var applicationController = GraphControlFactory.CreateController(); var gridView = TestGridView.Create(applicationController, dataProviderService); var size = new Size(800, 600); TestDrawingWrapper drawing = null; int receivedPoints = 0; using (drawing = new TestDrawingWrapper()) { var margin = new Margin(100, 5, 5, 60); var options = new GridDrawOptions(size, true, true, null, new GridState()); var scaleService = applicationController.GetInstance<IScaleService>(); applicationController.GetInstance<IDataService>().DataUpdated += (sender, e) => { scaleService.UpdateScale(options); drawing.Reset(); gridView.Draw(drawing, options, margin); receivedPoints += e.Items.Count; }; dataProviderService.Run(); while (receivedPoints < pointsNumber) { Thread.Sleep(0); } } dataProviderService.Dispose(); return drawing; }
public void DrawWithDataTest() { var linesNumber = 1000; var pointsNumber = linesNumber + 1; TestDrawingWrapper drawing = StartDataGeneration(TestSinusDataProviderService.Create(pointsNumber), pointsNumber, linesNumber); Assert.IsTrue(drawing.Lines.Count >= 9, $"drawn lines for axis {drawing.Lines.Count} less than generated {9}"); Assert.IsTrue(drawing.Texts.Count > 5); Assert.IsTrue(drawing.MeasureTexts.Count > 0); Assert.IsTrue(drawing.Flushes.Count == 1, $"Flushes count = {drawing.Flushes.Count}"); }
public void DrawNoDataTest() { var view = TestDataView.Create(); var size = new Size(800, 600); TestDrawingWrapper drawing = null; drawing = StartCreateAndDrawDataLines(0, false, false) as TestDrawingWrapper; Assert.IsTrue(drawing.Lines.Count == 0, $"lines count is {drawing.Lines.Count} more than 0"); drawing.Dispose(); Assert.IsTrue(drawing.Flushes.Count == 1, $"Flushes count = {drawing.Flushes.Count}"); // Draw without data StartCreateAndDrawDataLines(0, true, false); }
public void DrawNoDataTest() { var gridView = TestGridView.Create(); var size = new Size(800, 600); TestDrawingWrapper drawing = null; using (drawing = new TestDrawingWrapper()) { var margin = new Margin(100, 5, 5, 60); var options = new GridDrawOptions(size, true, true, null, new GridState()); gridView.Draw(drawing, options, margin); } Assert.IsTrue(drawing.Lines.Count > 0); Assert.IsTrue(drawing.Texts.Count > 0); Assert.IsTrue(drawing.MeasureTexts.Count > 0); Assert.IsTrue(drawing.Flushes.Count == 1, $"Flushes count = {drawing.Flushes.Count}"); }
private static IDrawing StartCreateAndDrawDataLines(int pointsNumber, bool drawInBitmap, bool runProvider) { var linesNumber = pointsNumber - 1; var linesToDraw = 0; IDataProviderService provider = null; TestDrawingWrapper drawingTester = null; DrawingBuffer buffer = null; Drawing2DWrapper drawingBitmap = null; IDrawing drawing = null; var size = new Size(800, 600); if (drawInBitmap) { size = new Size(8000, 4500); buffer = new DrawingBuffer(size); drawingBitmap = new Drawing2DWrapper(buffer.Graphics); drawing = drawingBitmap; } else { drawingTester = new TestDrawingWrapper(100); drawing = drawingTester; } IScaleService scaleService = null; IDataService dataService = null; var controller = GraphControlFactory.CreateController(); IBufferedDrawingService bufferedDrawingService = new BufferedDrawingService(); int receivedPoints = 0; try { // Create all services provider = TestSinusDataProviderService.Create(pointsNumber); var view = TestDataView.Create(controller, provider, bufferedDrawingService); var margin = new Margin(100, 5, 5, 60); var options = new DataDrawOptions(size, true, true, null, new DataDrawState()); scaleService = controller.GetInstance <IScaleService>(); scaleService.UpdateScale(options); // to prepare scaling service without presenter dataService = controller.GetInstance <IDataService>(); dataService.DataUpdated += (sender, e) => { scaleService.UpdateScale(options); drawingTester?.Reset(); view.Draw(drawing, options, margin); receivedPoints += e.Items.Count; }; if (pointsNumber > 0) { provider.Run(); // Wait to draw at least test points while (receivedPoints < pointsNumber) { Thread.Sleep(0); } } else { view.Draw(drawing, options, margin); } linesToDraw = dataService.GetItems(scaleService.State.X1, scaleService.State.X2).Count(); } finally { bufferedDrawingService.Dispose(); } Assert.IsTrue(bufferedDrawingService.LastQueueOverflow.Ticks == 0, $"drawing queue overflow, last time: {bufferedDrawingService.LastQueueOverflow.ToLongTimeString()}"); Assert.IsTrue(linesToDraw == pointsNumber, $"dataService.GetItems({new DateTime((long)scaleService.State.X1 * TimeSpan.TicksPerMillisecond).ToString("HH:mm:ss.fff")}" + $", {new DateTime((long)scaleService.State.X1 * TimeSpan.TicksPerMillisecond).ToString("HH:mm:ss.fff")}) {linesToDraw} ({dataService.ItemCount}) != generated points {pointsNumber}"); if (!drawInBitmap) { Assert.IsTrue(drawingTester.Lines.Count >= linesNumber, $"lines count is {drawingTester.Lines.Count} less than {linesNumber}"); } return(drawing); }