Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Visualization.Test/3.2/LineChartTests.cs @ 1981

Last change on this file since 1981 was 1981, checked in by mstoeger, 15 years ago

added a few tests. #498

File size: 21.8 KB
Line 
1using System;
2using System.Drawing;
3using System.Threading;
4using NUnit.Framework;
5
6namespace HeuristicLab.Visualization.Test {
7  [TestFixture]
8  public class LineChartTests {
9    private ChartDataRowsModel model;
10
11    [SetUp]
12    public void SetUp() {
13      model = new ChartDataRowsModel();
14    }
15
16    [Test]
17    public void TestLineChartWithManyDataPoints() {
18      LineChartTestForm f = new LineChartTestForm(model);
19
20      IDataRow row1 = new DataRow();
21      IDataRow row2 = new DataRow();
22      IDataRow row3 = new DataRow();
23
24      row1.RowSettings.Color = Color.Red;
25      row2.RowSettings.Color = Color.Green;
26      row3.RowSettings.Color = Color.Blue;
27
28      row1.RowSettings.Thickness = 3;
29      row2.RowSettings.Thickness = 4;
30      row3.RowSettings.Thickness = 5;
31
32      row1.RowSettings.Label = "Simon";
33      row2.RowSettings.Label = "Gertschi";
34      row3.RowSettings.Label = "Maxi";
35
36      row1.RowSettings.Style = DrawingStyle.Solid;
37      row2.RowSettings.Style = DrawingStyle.Solid;
38      row3.RowSettings.Style = DrawingStyle.Dashed;
39
40
41      model.AddDataRow(row1);
42      model.AddDataRow(row2);
43      model.AddDataRow(row3);
44
45      row1.AddValue(10);
46      row1.AddValue(5);
47      row1.AddValue(7);
48      row1.AddValue(3);
49      row1.AddValue(10);
50      row1.AddValue(2);
51
52      row2.AddValue(5);
53      row2.AddValue(6);
54      row2.AddValue(5);
55
56      row3.AddValue(2);
57      row3.AddValue(2);
58      row3.AddValue(2);
59      row3.AddValue(2);
60      row3.AddValue(2);
61
62      Random rand = new Random();
63
64      for (int i = 0; i < 10000; i++) {
65        row1.AddValue(rand.NextDouble() * 10);
66        row2.AddValue(rand.NextDouble() * 10);
67        row3.AddValue(rand.NextDouble() * 10);
68      }
69
70      f.ShowDialog();
71    }
72
73    [Test]
74    public void TestGrid() {
75      LineChartTestForm f = new LineChartTestForm(model);
76
77      model.XAxis.ShowGrid = true;
78      model.XAxis.GridColor = Color.Red;
79
80      model.DefaultYAxis.ShowGrid = true;
81      model.DefaultYAxis.GridColor = Color.Blue;
82
83      IDataRow row1 = new DataRow();
84      row1.RowSettings.Label = "row1";
85
86      model.AddDataRow(row1);
87
88      row1.AddValue(0);
89      row1.AddValue(10);
90
91      f.ShowDialog();
92    }
93
94    [Test]
95    public void TestShowMarkers() {
96      LineChartTestForm f = new LineChartTestForm(model);
97
98      IDataRow row1 = new DataRow();
99      row1.RowSettings.Label = "row1";
100      row1.RowSettings.Color = Color.Red;
101      row1.RowSettings.ShowMarkers = true;
102
103      IDataRow row2 = new DataRow();
104      row2.RowSettings.Label = "row2";
105      row2.RowSettings.Color = Color.Blue;
106      row2.RowSettings.ShowMarkers = false;
107
108      model.AddDataRow(row1);
109      model.AddDataRow(row2);
110
111      for (int i = 0; i < 10; i++) {
112        row1.AddValue(i);
113        row2.AddValue(i*2);
114      }
115
116      f.ShowDialog();
117    }
118
119    [Test]
120    public void TestShowLabelOnAxes() {
121      LineChartTestForm f = new LineChartTestForm(model);
122
123      IDataRow row1 = new DataRow();
124      IDataRow row2 = new DataRow();
125
126      model.XAxis.Label = "X-Axis";
127      model.XAxis.ShowLabel = true;
128
129      row1.YAxis = model.DefaultYAxis;
130      row1.YAxis.Label = "Y-Axis row1";
131      row1.RowSettings.Color = Color.Blue;
132      row1.YAxis.ShowYAxisLabel = false;
133
134      row2.YAxis = new YAxisDescriptor();
135      row2.YAxis.Label = "Y-Axis row2";
136      row2.RowSettings.Color = Color.Red;
137      row2.YAxis.ShowYAxisLabel = true;
138
139      model.AddDataRow(row1);
140      model.AddDataRow(row2);
141
142      row1.AddValue(0);
143      row1.AddValue(10);
144      row1.AddValue(15);
145      row1.AddValue(16);
146
147      row2.AddValue(0);
148      row2.AddValue(20);
149      row2.AddValue(25);
150      row2.AddValue(26);
151
152      f.ShowDialog();
153    }
154
155    [Test]
156    public void TestAxes() {
157      LineChartTestForm f = new LineChartTestForm(model);
158
159      IDataRow row1 = new DataRow();
160      IDataRow row2 = new DataRow();
161      IDataRow row3 = new DataRow();
162
163      model.XAxis.Label = "X Axis";
164      model.XAxis.ShowLabel = true;
165      model.XAxis.ShowGrid = true;
166      model.XAxis.GridColor = Color.Blue;
167
168      YAxisDescriptor yaxis1 = model.DefaultYAxis;
169      YAxisDescriptor yaxis2 = new YAxisDescriptor();
170
171      yaxis1.Label = "Y-Axis 1";
172      yaxis1.Position = AxisPosition.Left;
173
174      yaxis2.Label = "Y-Axis 2";
175      yaxis2.Position = AxisPosition.Right;
176
177      row1.RowSettings.Color = Color.Red;
178      row1.RowSettings.Label = "Die Rote";
179
180      row2.RowSettings.Color = Color.Green;
181      row2.RowSettings.Label = "Die Grüne";
182
183      row3.RowSettings.Color = Color.Blue;
184      row3.RowSettings.Label = "Die Blaue";
185      row3.YAxis = yaxis2;
186
187      model.AddDataRow(row1);
188      model.AddDataRow(row2);
189      model.AddDataRow(row3);
190
191      Random rand = new Random(42);
192
193      for (int i = 0; i < 10; i++) {
194        row1.AddValue(rand.NextDouble() * 10);
195        row2.AddValue(rand.NextDouble() * 10);
196        row3.AddValue(rand.NextDouble() * 1);
197      }
198
199      f.AddValue += delegate {
200        row1.AddValue(rand.NextDouble() * 10);
201        row2.AddValue(rand.NextDouble() * 10);
202        row3.AddValue(rand.NextDouble() * 1);
203      };
204
205      f.ShowDialog();
206    }
207
208    [Test]
209    public void TestDataRowWithOnlyOneValueShouldntCauseZoomLevelTooHighError() {
210      LineChartTestForm f = new LineChartTestForm(model);
211
212      IDataRow row1 = new DataRow();
213      row1.AddValue(10);
214
215      model.AddDataRow(row1);
216
217      f.ShowDialog();
218    }
219
220    [Test]
221    public void SimpleTestAggregator() {
222      LineChartTestForm f = new LineChartTestForm(model);
223
224      IDataRow row1 = new DataRow();
225      row1.RowSettings.Label = "row";
226      row1.RowSettings.Color = Color.Red;
227      row1.RowSettings.Thickness = 3;
228      row1.RowSettings.Style = DrawingStyle.Solid;
229
230      model.AddDataRow(row1);
231
232
233      MaxAggregator aggregator = new MaxAggregator();
234      aggregator.RowSettings.Label = "MinAggregator";
235      aggregator.RowSettings.Color = Color.Pink;
236      aggregator.RowSettings.Thickness = 5;
237      aggregator.RowSettings.Style = DrawingStyle.Solid;
238      aggregator.RowSettings.LineType = DataRowType.SingleValue;
239      aggregator.AddWatch(row1);
240
241      model.AddDataRow(aggregator);
242
243      row1.AddValue(10);
244      row1.AddValue(5);
245      row1.AddValue(7);
246      row1.AddValue(3);
247      row1.AddValue(10);
248      row1.AddValue(2);
249
250      f.ShowDialog();
251    }
252
253
254    public class Worker {
255      // This method will be called when the thread is started.
256      private readonly ChartDataRowsModel model;
257
258      public Worker(ChartDataRowsModel model) {
259        this.model = model;
260      }
261
262      public void DoWorkMultiLine() {
263        IDataRow row1 = new DataRow();
264        row1.RowSettings.Color = Color.Red;
265        row1.RowSettings.Thickness = 2;
266        row1.RowSettings.Label = "Sinus";
267        row1.RowSettings.Style = DrawingStyle.Solid;
268        row1.RowSettings.ShowMarkers = false;
269        model.AddDataRow(row1);
270
271        IDataRow row2 = new DataRow();
272        row2.RowSettings.Color = Color.Red;
273        row2.RowSettings.Thickness = 3;
274        row2.RowSettings.Label = "Growing";
275        row2.RowSettings.Style = DrawingStyle.Solid;
276        row2.RowSettings.ShowMarkers = false;
277        model.AddDataRow(row2);
278
279        AvgAggregator multiAvgAggregator = new AvgAggregator();
280        multiAvgAggregator.RowSettings.Label = "MultiAvgAggregator";
281        multiAvgAggregator.RowSettings.Color = Color.DarkOliveGreen;
282        multiAvgAggregator.RowSettings.Thickness = 3;
283        multiAvgAggregator.RowSettings.Style = DrawingStyle.Solid;
284        multiAvgAggregator.RowSettings.LineType = DataRowType.SingleValue;
285        multiAvgAggregator.RowSettings.ShowMarkers = false;
286        multiAvgAggregator.AddWatch(row1);
287        multiAvgAggregator.AddWatch(row2);
288        model.AddDataRow(multiAvgAggregator);
289
290        MaxAggregator multiMaxAggregator = new MaxAggregator();
291        multiMaxAggregator.RowSettings.Label = "MultiMaxAggregator";
292        multiMaxAggregator.RowSettings.Color = Color.DarkKhaki;
293        multiMaxAggregator.RowSettings.Thickness = 3;
294        multiMaxAggregator.RowSettings.Style = DrawingStyle.Solid;
295        multiMaxAggregator.RowSettings.LineType = DataRowType.SingleValue;
296        multiMaxAggregator.RowSettings.ShowMarkers = false;
297        multiMaxAggregator.AddWatch(row1);
298        multiMaxAggregator.AddWatch(row2);
299        model.AddDataRow(multiMaxAggregator);
300
301        MinAggregator multiMinAggregator = new MinAggregator();
302        multiMinAggregator.RowSettings.Label = "MultiMinAggregator";
303        multiMinAggregator.RowSettings.Color = Color.DarkRed;
304        multiMinAggregator.RowSettings.Thickness = 3;
305        multiMinAggregator.RowSettings.Style = DrawingStyle.Solid;
306        multiMinAggregator.RowSettings.LineType = DataRowType.SingleValue;
307        multiMinAggregator.RowSettings.ShowMarkers = false;
308        multiMinAggregator.AddWatch(row1);
309        multiMinAggregator.AddWatch(row2);
310        model.AddDataRow(multiMinAggregator);
311
312        //        AvgLineAggregator multiLineAvgAggregator = new AvgLineAggregator {
313        //                                                                           Label = "MultiLineAvgAggregator",
314        //                                                                           Color = Color.Red,
315        //                                                                           Thickness = 4,
316        //                                                                           Style = DrawingStyle.Solid,
317        //                                                                           LineType = DataRowType.Normal,
318        //                                                                           ShowMarkers = false
319        //                                                                         };
320        //        multiLineAvgAggregator.AddWatch(row1);
321        //        multiLineAvgAggregator.AddWatch(row2);
322        //        multiLineAvgAggregator.AddValue(0);
323        //        model.AddDataRow(multiLineAvgAggregator);
324
325        double i = 0;
326
327
328        while (!_shouldStop && i <= 24) {
329          i += 0.2;
330          double newY = Math.Sin(i);
331          Console.WriteLine("working");
332          //row1.AddValue(rand.NextDouble() * 10);
333          row1.AddValue(newY * 10);
334          row2.AddValue(i * 2 - 15);
335          Thread.Sleep(100);
336        }
337        Console.WriteLine("worker thread: terminating gracefully.");
338      }
339
340      public void DoWorkSingleLine() {
341        IDataRow row1 = new DataRow();
342        row1.RowSettings.Color = Color.Red;
343        row1.RowSettings.Thickness = 2;
344        row1.RowSettings.Label = "Sinus";
345        row1.RowSettings.Style = DrawingStyle.Solid;
346        row1.RowSettings.ShowMarkers = false;
347        model.AddDataRow(row1);
348
349        IDataRow row2 = new DataRow();
350        row2.RowSettings.Color = Color.Red;
351        row2.RowSettings.Thickness = 3;
352        row2.RowSettings.Label = "Growing";
353        row2.RowSettings.Style = DrawingStyle.Solid;
354        row2.RowSettings.ShowMarkers = false;
355        model.AddDataRow(row2);
356
357        MinAggregator aggregator = new MinAggregator();
358        aggregator.RowSettings.Label = "MinAggregator";
359        aggregator.RowSettings.Color = Color.Pink;
360        aggregator.RowSettings.Thickness = 3;
361        aggregator.RowSettings.Style = DrawingStyle.Solid;
362        aggregator.RowSettings.LineType = DataRowType.SingleValue;
363        aggregator.AddWatch(row1);
364        model.AddDataRow(aggregator);
365
366        MaxAggregator maxAggregator = new MaxAggregator();
367        maxAggregator.RowSettings.Label = "MaxAggregator";
368        maxAggregator.RowSettings.Color = Color.DeepSkyBlue;
369        maxAggregator.RowSettings.Thickness = 3;
370        maxAggregator.RowSettings.Style = DrawingStyle.Solid;
371        maxAggregator.RowSettings.LineType = DataRowType.SingleValue;
372        maxAggregator.AddWatch(row1);
373        model.AddDataRow(maxAggregator);
374
375        AvgAggregator avgAggregator = new AvgAggregator();
376        avgAggregator.RowSettings.Label = "AvgAggregator";
377        avgAggregator.RowSettings.Color = Color.Violet;
378        avgAggregator.RowSettings.Thickness = 3;
379        avgAggregator.RowSettings.Style = DrawingStyle.Solid;
380        avgAggregator.RowSettings.LineType = DataRowType.SingleValue;
381        avgAggregator.AddWatch(row1);
382        model.AddDataRow(avgAggregator);
383
384        double i = 0;
385
386
387        while (!_shouldStop && i <= 240) {
388          i += 0.2;
389          double newY = Math.Sin(i);
390          Console.WriteLine("working");
391          //row1.AddValue(rand.NextDouble() * 10);
392          row1.AddValue(newY * 10);
393          row2.AddValue(i * 2 - 15);
394          //System.Threading.Thread.Sleep(100);
395        }
396        Console.WriteLine("worker thread: terminating gracefully.");
397      }
398
399      public void DoWorkAvgLine() {
400        IDataRow row1 = new DataRow();
401        row1.RowSettings.Color = Color.Red;
402        row1.RowSettings.Thickness = 2;
403        row1.RowSettings.Label = "Sinus";
404        row1.RowSettings.Style = DrawingStyle.Solid;
405        row1.RowSettings.ShowMarkers = false;
406        model.AddDataRow(row1);
407
408        IDataRow row2 = new DataRow();
409        row2.RowSettings.Color = Color.Red;
410        row2.RowSettings.Thickness = 3;
411        row2.RowSettings.Label = "Growing";
412        row2.RowSettings.Style = DrawingStyle.Solid;
413        row2.RowSettings.ShowMarkers = false;
414        model.AddDataRow(row2);
415
416        AvgLineAggregator avgLineAggregator = new AvgLineAggregator();
417        avgLineAggregator.RowSettings.Label = "AvgLineAggregator";
418        avgLineAggregator.RowSettings.Color = Color.Violet;
419        avgLineAggregator.RowSettings.Thickness = 3;
420        avgLineAggregator.RowSettings.Style = DrawingStyle.Solid;
421        avgLineAggregator.RowSettings.LineType = DataRowType.Normal;
422        avgLineAggregator.RowSettings.ShowMarkers = false;
423        avgLineAggregator.AddWatch(row1);
424        avgLineAggregator.AddWatch(row2);
425        model.AddDataRow(avgLineAggregator);
426
427        double i = 0;
428
429        while (!_shouldStop && i <= 240) {
430          i += 0.2;
431          double newY = Math.Sin(i);
432          Console.WriteLine("working");
433          //row1.AddValue(rand.NextDouble() * 10);
434          row1.AddValue(newY * 10);
435          row2.AddValue(i * 2 - 15);
436          //Thread.Sleep(100);
437        }
438        Console.WriteLine("worker thread: terminating gracefully.");
439      }
440
441      public void DoWorkFloatingAvg() {
442        IDataRow row1 = new DataRow();
443        row1.RowSettings.Color = Color.Red;
444        row1.RowSettings.Thickness = 2;
445        row1.RowSettings.Label = "SinusHacked";
446        row1.RowSettings.Style = DrawingStyle.Solid;
447        row1.RowSettings.ShowMarkers = false;
448        model.AddDataRow(row1);
449
450        IDataRow row2 = new DataRow();
451        row2.RowSettings.Color = Color.Red;
452        row2.RowSettings.Thickness = 3;
453        row2.RowSettings.Label = "GrowingHacked";
454        row2.RowSettings.Style = DrawingStyle.Solid;
455        row2.RowSettings.ShowMarkers = false;
456        model.AddDataRow(row2);
457
458        FloatingAvgAggregator avgAggregator = new FloatingAvgAggregator();
459        avgAggregator.RowSettings.Thickness = 2;
460        avgAggregator.RowSettings.Label = "floatingAvg";
461        avgAggregator.RowSettings.Color = Color.Peru;
462        avgAggregator.RowSettings.ShowMarkers = false;
463        avgAggregator.RowSettings.Style = DrawingStyle.Solid;
464
465        avgAggregator.AddWatch(row1);
466        model.AddDataRow(avgAggregator);
467
468        FloatingAvgAggregator avgAggregator2 = new FloatingAvgAggregator();
469        avgAggregator2.RowSettings.Thickness = 2;
470        avgAggregator2.RowSettings.Label = "floatingAvg";
471        avgAggregator2.RowSettings.Color = Color.Aqua;
472        avgAggregator2.RowSettings.ShowMarkers = false;
473        avgAggregator2.RowSettings.Style = DrawingStyle.Solid;
474
475        avgAggregator2.AddWatch(row2);
476        model.AddDataRow(avgAggregator2);
477
478       
479        double i = 0;
480        Random rnd = new Random();
481
482        while (!_shouldStop && i <= 100) {
483          i += 0.2;
484          double newY = Math.Sin(i);
485
486          double hack = rnd.NextDouble() * i / 10;
487          row1.AddValue(newY * 10 + hack);
488
489          hack = rnd.NextDouble() * i / 10;
490          row2.AddValue(i * 2 - 15 + hack);
491          //Thread.Sleep(100);
492        }
493        Console.WriteLine("worker thread: terminating gracefully.");
494      }
495
496      public void RequestStop() {
497        _shouldStop = true;
498      }
499
500      // Volatile is used as hint to the compiler that this data
501      // member will be accessed by multiple threads.
502      private volatile bool _shouldStop;
503    }
504
505
506    [Test]
507    public void TestAggregatorMultiLine() {
508      LineChartTestForm f = new LineChartTestForm(model);
509
510      // Create the thread object. This does not start the thread.
511      Worker workerObject = new Worker(model);
512      Thread workerThread = new Thread(workerObject.DoWorkMultiLine);
513
514      // Start the worker thread.
515      workerThread.Start();
516
517      f.ShowDialog();
518      workerObject.RequestStop();
519    }
520
521    [Test]
522    public void TestAggregatorSingleLine() {
523      LineChartTestForm f = new LineChartTestForm(model);
524      model.Title = "SingleLineAggregator Tests";
525
526      // Create the thread object. This does not start the thread.
527      Worker workerObject = new Worker(model);
528      Thread workerThread = new Thread(workerObject.DoWorkSingleLine);
529
530      // Start the worker thread.
531      workerThread.Start();
532
533      f.ShowDialog();
534      workerObject.RequestStop();
535    }
536
537    [Test]
538    public void TestAggregatorAvgLine() {
539      LineChartTestForm f = new LineChartTestForm(model);
540      model.Title = "AvgLineTest";
541
542      // Create the thread object. This does not start the thread.
543      Worker workerObject = new Worker(model);
544      Thread workerThread = new Thread(workerObject.DoWorkAvgLine);
545
546      // Start the worker thread.
547      workerThread.Start();
548
549      f.ShowDialog();
550      workerObject.RequestStop();
551    }
552
553    [Test]
554    public void TestFloatingAvg() {
555      LineChartTestForm f = new LineChartTestForm(model);
556      model.Title = "FloatingAvg Test";
557      model.ViewSettings.LegendPosition = Legend.LegendPosition.Top;
558
559      // Create the thread object. This does not start the thread.
560      Worker workerObject = new Worker(model);
561      Thread workerThread = new Thread(workerObject.DoWorkFloatingAvg);
562
563      // Start the worker thread.
564      workerThread.Start();
565
566      f.ShowDialog();
567      workerObject.RequestStop();
568    }
569
570
571    [Test]
572    public void TestAutoZoomInConstructor() {
573      IDataRow row1 = new DataRow();
574      row1.RowSettings.Color = Color.Red;
575      row1.RowSettings.Thickness = 3;
576      row1.RowSettings.Style = DrawingStyle.Solid;
577
578      model.AddDataRow(row1);
579
580      row1.AddValue(10);
581      row1.AddValue(5);
582      row1.AddValue(7);
583      row1.AddValue(3);
584      row1.AddValue(10);
585      row1.AddValue(2);
586
587      LineChartTestForm f = new LineChartTestForm(model);
588      f.ShowDialog();
589    }
590
591
592    [Test]
593    public void TestSingleValueDataRows() {
594      LineChartTestForm f = new LineChartTestForm(model);
595
596      IDataRow row1 = new DataRow();
597      IDataRow row2 = new DataRow();
598      IDataRow row3 = new DataRow();
599
600      IDataRow row4 = new DataRow();
601      IDataRow row5 = new DataRow();
602      IDataRow row6 = new DataRow();
603
604      row1.RowSettings.Color = Color.Red;
605      row2.RowSettings.Color = Color.Green;
606      row3.RowSettings.Color = Color.Blue;
607
608      row4.RowSettings.Color = Color.DeepPink;
609      row5.RowSettings.Color = Color.Firebrick;
610      row6.RowSettings.Color = Color.DarkSlateGray;
611
612      row1.RowSettings.Thickness = 3;
613      row2.RowSettings.Thickness = 4;
614      row3.RowSettings.Thickness = 5;
615
616      row4.RowSettings.Thickness = 3;
617      row5.RowSettings.Thickness = 4;
618      row6.RowSettings.Thickness = 5;
619
620      row1.RowSettings.Label = "SingleValue";
621      row2.RowSettings.Label = "Gertschi";
622      row3.RowSettings.Label = "Maxi";
623
624      row4.RowSettings.Label = "Simon";
625      row5.RowSettings.Label = "klausmuellerwesternhagenunddierasperies";
626      row6.RowSettings.Label = "anyways";
627
628      row1.RowSettings.Style = DrawingStyle.Solid;
629      row2.RowSettings.Style = DrawingStyle.Solid;
630      row3.RowSettings.Style = DrawingStyle.Dashed;
631
632      row4.RowSettings.Style = DrawingStyle.Solid;
633      row5.RowSettings.Style = DrawingStyle.Solid;
634      row6.RowSettings.Style = DrawingStyle.Dashed;
635
636      row1.RowSettings.LineType = DataRowType.SingleValue;
637      row2.RowSettings.LineType = DataRowType.SingleValue;
638      row1.AddValue(12);
639
640      row2.AddValue(5);
641
642
643      row3.AddValue(2);
644      row3.AddValue(5);
645      row3.AddValue(9);
646      row3.AddValue(1);
647      row3.AddValue(3);
648
649
650      row4.AddValue(10);
651      row5.AddValue(11);
652      row6.AddValue(11);
653
654      model.AddDataRow(row1);
655      model.AddDataRow(row2);
656      model.AddDataRow(row3);
657      model.AddDataRow(row4);
658      model.AddDataRow(row5);
659      model.AddDataRow(row6);
660
661      f.ShowDialog();
662    }
663
664    [Test]
665    public void TestMainForm() {
666      MainForm f = new MainForm();
667      f.ShowDialog();
668    }
669
670
671    [Test]
672    public void TestPointLines() {
673      IDataRow row1 = new DataRow();
674      row1.RowSettings.Color = Color.Red;
675      row1.RowSettings.Thickness = 3;
676      row1.RowSettings.Style = DrawingStyle.Dashed;
677
678      row1.RowSettings.LineType = DataRowType.Points;
679      model.AddDataRow(row1);
680
681      row1.AddValue(10);
682      row1.AddValue(5);
683      row1.AddValue(7);
684      row1.AddValue(3);
685      row1.AddValue(10);
686      row1.AddValue(2);
687
688      LineChartTestForm f = new LineChartTestForm(model);
689      f.ShowDialog();
690    }
691
692
693  }
694}
Note: See TracBrowser for help on using the repository browser.