コード例 #1
0
        public void OnDrop_ChartDataMovedToPositionOutsideRange_ThrowsException(int position)
        {
            // Setup
            var observer = mocks.StrictMock <IObserver>();

            mocks.ReplayAll();

            var chartData1          = new ChartLineData("line");
            var chartData2          = new ChartAreaData("area");
            var chartData3          = new ChartPointData("point");
            var chartData4          = new ChartMultipleAreaData("multiple area");
            var chartDataCollection = new ChartDataCollection("test data");

            chartDataCollection.Add(chartData1);
            chartDataCollection.Add(chartData2);
            chartDataCollection.Add(chartData3);
            chartDataCollection.Add(chartData4);

            chartDataCollection.Attach(observer);
            chartLegendView.Data = chartDataCollection;

            ChartDataContext context1 = GetContext(chartData1);

            chartDataCollection.Attach(observer);

            using (var treeViewControl = new TreeViewControl())
            {
                // Call
                void Call() => info.OnDrop(context1, chartDataCollection, chartDataCollection, position, treeViewControl);

                // Assert
                Assert.Throws <ArgumentOutOfRangeException>(Call);
            }
        }
コード例 #2
0
        public void GivenChartControlWithData_WhenDataSetToOtherChartDataCollection_ThenChartControlUpdated()
        {
            // Given
            using (var chartControl = new ChartControl())
            {
                LinearPlotView linearPlotView       = GetLinearPlotView(chartControl);
                var            chartPointData       = new ChartPointData("Points");
                var            chartLineData        = new ChartLineData("Lines");
                var            chartAreaData        = new ChartAreaData("Areas");
                var            chartDataCollection1 = new ChartDataCollection("Collection 1");
                var            chartDataCollection2 = new ChartDataCollection("Collection 2");

                chartDataCollection1.Add(chartPointData);
                chartDataCollection2.Add(chartLineData);
                chartDataCollection2.Add(chartAreaData);

                chartControl.Data = chartDataCollection1;

                // Precondition
                Assert.AreEqual(1, linearPlotView.Model.Series.Count);
                Assert.AreEqual("Points", linearPlotView.Model.Series[0].Title);

                // When
                chartControl.Data = chartDataCollection2;

                // Then
                Assert.AreEqual(2, linearPlotView.Model.Series.Count);
                Assert.AreEqual("Lines", linearPlotView.Model.Series[0].Title);
                Assert.AreEqual("Areas", linearPlotView.Model.Series[1].Title);
            }
        }
コード例 #3
0
        public void GivenChartAreaDataSeries_WhenUpdatedAfterChartAreaDataPointsChanged_ChartAreaDataSeriesPointsChanged()
        {
            // Given
            var chartAreaData = new ChartAreaData("Test name")
            {
                Points = new[]
                {
                    new Point2D(1.1, 2.2)
                }
            };

            var chartAreaDataSeries = new ChartAreaDataSeries(chartAreaData);

            DataPoint[] drawnPoints = chartAreaDataSeries.Points.ToArray();

            // When
            chartAreaData.Points = new[]
            {
                new Point2D(3.3, 4.4)
            };
            chartAreaDataSeries.Update();

            // Then
            CollectionAssert.AreNotEqual(drawnPoints, chartAreaDataSeries.Points);
        }
コード例 #4
0
        public void GivenChartControlWithData_WhenChartDataNotifiesChange_ThenAllSeriesReused()
        {
            // Given
            using (var chartControl = new ChartControl())
            {
                LinearPlotView linearPlotView             = GetLinearPlotView(chartControl);
                var            chartPointData             = new ChartPointData("Points");
                var            chartLineData              = new ChartLineData("Lines");
                var            chartAreaData              = new ChartAreaData("Areas");
                var            chartDataCollection        = new ChartDataCollection("Root collection");
                var            nestedChartDataCollection1 = new ChartDataCollection("Nested collection 1");
                var            nestedChartDataCollection2 = new ChartDataCollection("Nested collection 2");

                chartDataCollection.Add(chartPointData);
                chartDataCollection.Add(nestedChartDataCollection1);
                nestedChartDataCollection1.Add(chartLineData);
                nestedChartDataCollection1.Add(nestedChartDataCollection2);
                nestedChartDataCollection2.Add(chartAreaData);

                chartControl.Data = chartDataCollection;

                List <Series> seriesBeforeUpdate = linearPlotView.Model.Series.ToList();

                // When
                chartLineData.Points = new Point2D[0];
                chartLineData.NotifyObservers();

                // Then
                CollectionAssert.AreEqual(seriesBeforeUpdate, linearPlotView.Model.Series);
            }
        }
コード例 #5
0
        public void ConvertSeriesItems_ChartAreaDataWithRandomPointData_ConvertsAllPointsToAreaSeries()
        {
            // Setup
            var converter   = new ChartAreaDataConverter();
            var areaSeries  = new AreaSeries();
            var random      = new Random(21);
            int randomCount = random.Next(5, 10);
            var points      = new Collection <Point2D>();

            for (var i = 0; i < randomCount; i++)
            {
                points.Add(new Point2D(random.NextDouble(), random.NextDouble()));
            }

            var areaData = new ChartAreaData("test data")
            {
                Points = points.ToArray()
            };

            // Call
            converter.ConvertSeriesData(areaData, areaSeries);

            // Assert
            DataPoint[] expectedPoints = points.Select(t => new DataPoint(t.X, t.Y)).ToArray();
            CollectionAssert.AreEqual(expectedPoints, areaSeries.Points);
            CollectionAssert.AreEqual(new Collection <DataPoint>
            {
                expectedPoints.First()
            }, areaSeries.Points2);
        }
コード例 #6
0
        public void GetFeatureBasedChartDataRecursively_CollectionWithNestedData_ReturnAllFeatureBasedChartData()
        {
            // Setup
            var line             = new ChartLineData("line");
            var polygon          = new ChartAreaData("polygon");
            var nestedCollection = new ChartDataCollection("nested");

            nestedCollection.Add(line);
            nestedCollection.Add(polygon);

            var collection = new ChartDataCollection("test");
            var point      = new ChartPointData("point");

            collection.Add(point);
            collection.Add(nestedCollection);

            // Call
            ChartData[] featureBasedChartDatas = collection.GetChartDataRecursively().ToArray();

            // Assert
            Assert.AreEqual(3, featureBasedChartDatas.Length);
            Assert.IsInstanceOf <ChartPointData>(featureBasedChartDatas[0]);
            Assert.IsInstanceOf <ChartLineData>(featureBasedChartDatas[1]);
            Assert.IsInstanceOf <ChartAreaData>(featureBasedChartDatas[2]);
        }
コード例 #7
0
        public void GivenChartControlWithoutData_WhenDataSetToChartDataCollection_ThenChartControlUpdated()
        {
            // Given
            using (var chartControl = new ChartControl())
            {
                LinearPlotView linearPlotView             = GetLinearPlotView(chartControl);
                var            chartPointData             = new ChartPointData("Points");
                var            chartLineData              = new ChartLineData("Lines");
                var            chartAreaData              = new ChartAreaData("Areas");
                var            chartDataCollection        = new ChartDataCollection("Root collection");
                var            nestedChartDataCollection1 = new ChartDataCollection("Nested collection 1");
                var            nestedChartDataCollection2 = new ChartDataCollection("Nested collection 2");

                chartDataCollection.Add(chartPointData);
                chartDataCollection.Add(nestedChartDataCollection1);
                nestedChartDataCollection1.Add(chartLineData);
                nestedChartDataCollection1.Add(nestedChartDataCollection2);
                nestedChartDataCollection2.Add(chartAreaData);

                // When
                chartControl.Data = chartDataCollection;

                // Then
                ElementCollection <Series> series = linearPlotView.Model.Series;
                Assert.AreEqual(3, series.Count);
                Assert.AreEqual("Points", series[0].Title);
                Assert.AreEqual("Lines", series[1].Title);
                Assert.AreEqual("Areas", series[2].Title);
            }
        }
コード例 #8
0
 private static void SetChartAreaDataTestProperties(ChartAreaData chartAreaData)
 {
     chartAreaData.Name      = "Another name";
     chartAreaData.IsVisible = false;
     chartAreaData.Points    = new[]
     {
         new Point2D(1.1, 2.2)
     };
 }
コード例 #9
0
        /// <summary>
        /// Creates a new instance of <see cref="ChartAreaDataSeries"/>.
        /// </summary>
        /// <param name="chartAreaData">The <see cref="ChartAreaData"/> which the chart area data series is based upon.</param>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="chartAreaData"/> is <c>null</c>.</exception>
        public ChartAreaDataSeries(ChartAreaData chartAreaData)
        {
            if (chartAreaData == null)
            {
                throw new ArgumentNullException(nameof(chartAreaData));
            }

            this.chartAreaData = chartAreaData;

            Update();
        }
コード例 #10
0
        public void Constructor_Always_CreatesNewInstanceOfDefaultStyle()
        {
            // Setup
            var dataA = new ChartAreaData("test data");

            // Call
            var dataB = new ChartAreaData("test data");

            // Assert
            Assert.AreNotSame(dataA.Style, dataB.Style);
        }
コード例 #11
0
        public void Constructor_WithStyle_ExpectedValue()
        {
            // Setup
            var style = new ChartAreaStyle();

            // Call
            var data = new ChartAreaData("test data", style);

            // Assert
            Assert.AreEqual("test data", data.Name);
            CollectionAssert.IsEmpty(data.Points);
            Assert.IsInstanceOf <PointBasedChartData>(data);
            Assert.AreSame(style, data.Style);
        }
コード例 #12
0
        public void Constructor_ValidName_NameAndDefaultValuesSet()
        {
            // Call
            var data = new ChartAreaData("test data");

            // Assert
            Assert.AreEqual("test data", data.Name);
            CollectionAssert.IsEmpty(data.Points);
            Assert.IsInstanceOf <PointBasedChartData>(data);
            Assert.AreEqual(Color.Gray, data.Style.FillColor);
            Assert.AreEqual(Color.Black, data.Style.StrokeColor);
            Assert.AreEqual(2, data.Style.StrokeThickness);
            Assert.IsFalse(data.Style.IsEditable);
        }
コード例 #13
0
        public void Constructor_Always_PropertiesHaveExpectedAttributesValues(bool isStyleEditable)
        {
            // Setup
            var chartAreaData = new ChartAreaData("Test", new ChartAreaStyle
            {
                IsEditable = isStyleEditable
            });

            // Call
            var properties = new ChartAreaDataProperties
            {
                Data = chartAreaData
            };

            // Assert
            PropertyDescriptorCollection dynamicProperties = PropertiesTestHelper.GetAllVisiblePropertyDescriptors(properties);

            Assert.AreEqual(6, dynamicProperties.Count);

            const string styleCategory = "Stijl";

            PropertyDescriptor fillColorProperty = dynamicProperties[fillColorPropertyIndex];

            Assert.IsInstanceOf <ColorTypeConverter>(fillColorProperty.Converter);
            PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(fillColorProperty,
                                                                            styleCategory,
                                                                            "Kleur",
                                                                            "De kleur van de vlakken waarmee deze gegevensreeks wordt weergegeven.",
                                                                            !isStyleEditable);

            PropertyDescriptor strokeColorProperty = dynamicProperties[strokeColorPropertyIndex];

            Assert.IsInstanceOf <ColorTypeConverter>(fillColorProperty.Converter);
            PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(strokeColorProperty,
                                                                            styleCategory,
                                                                            "Lijnkleur",
                                                                            "De kleur van de lijn van de vlakken waarmee deze gegevensreeks wordt weergegeven.",
                                                                            !isStyleEditable);

            PropertyDescriptor strokeThicknessProperty = dynamicProperties[strokeThicknessPropertyIndex];

            PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(strokeThicknessProperty,
                                                                            styleCategory,
                                                                            "Lijndikte",
                                                                            "De dikte van de lijn van de vlakken waarmee deze gegevensreeks wordt weergegeven.",
                                                                            !isStyleEditable);
        }
コード例 #14
0
        public void ConvertSeriesProperties_WithDifferentStrokeWidths_AppliesStyleToSeries(int width)
        {
            // Setup
            var converter  = new ChartAreaDataConverter();
            var areaSeries = new AreaSeries();
            var data       = new ChartAreaData("test", new ChartAreaStyle
            {
                FillColor       = Color.Red,
                StrokeColor     = Color.Red,
                StrokeThickness = width
            });

            // Call
            converter.ConvertSeriesProperties(data, areaSeries);

            // Assert
            Assert.AreEqual(width, areaSeries.StrokeThickness);
        }
コード例 #15
0
        public void ConvertSeriesProperties_WithDifferentFillColors_AppliesStyleToSeries(KnownColor color)
        {
            // Setup
            var   converter     = new ChartAreaDataConverter();
            var   areaSeries    = new AreaSeries();
            Color expectedColor = Color.FromKnownColor(color);
            var   data          = new ChartAreaData("test", new ChartAreaStyle
            {
                FillColor       = expectedColor,
                StrokeColor     = Color.Red,
                StrokeThickness = 3
            });

            // Call
            converter.ConvertSeriesProperties(data, areaSeries);

            // Assert
            AssertColors(expectedColor, areaSeries.Fill);
        }
コード例 #16
0
        public void Constructor_ChartAreaDataWithTestProperties_ChartAreaDataSeriesCreatedAccordingly()
        {
            // Setup
            var chartAreaData = new ChartAreaData("Test name", new ChartAreaStyle
            {
                FillColor       = fillColor,
                StrokeColor     = strokeColor,
                StrokeThickness = 3
            });

            SetChartAreaDataTestProperties(chartAreaData);

            // Call
            var chartAreaDataSeries = new ChartAreaDataSeries(chartAreaData);

            // Assert
            Assert.IsInstanceOf <AreaSeries>(chartAreaDataSeries);
            Assert.IsInstanceOf <IChartDataSeries>(chartAreaDataSeries);
            AssertChartAreaDataSeriesTestProperties(chartAreaDataSeries);
        }
コード例 #17
0
        public void GivenChartAreaDataSeries_WhenUpdatedAndChartAreaDataPointsNotChanged_PreviousChartAreaDataSeriesPointsPreserved()
        {
            // Given
            var chartAreaData = new ChartAreaData("Test name")
            {
                Points = new[]
                {
                    new Point2D(1.1, 2.2)
                }
            };

            var chartAreaDataSeries = new ChartAreaDataSeries(chartAreaData);

            DataPoint[] drawnPoints = chartAreaDataSeries.Points.ToArray();

            // When
            chartAreaDataSeries.Update();

            // Then
            CollectionAssert.AreEqual(drawnPoints, chartAreaDataSeries.Points);
        }
コード例 #18
0
        public void GivenChartControlWithData_WhenChartDataAdded_ThenCorrespondingSeriesAddedAndOtherSeriesReused()
        {
            // Given
            using (var chartControl = new ChartControl())
            {
                LinearPlotView linearPlotView             = GetLinearPlotView(chartControl);
                var            chartPointData             = new ChartPointData("Points");
                var            chartLineData              = new ChartLineData("Lines");
                var            chartAreaData              = new ChartAreaData("Areas");
                var            chartDataCollection        = new ChartDataCollection("Root collection");
                var            nestedChartDataCollection1 = new ChartDataCollection("Nested collection 1");
                var            nestedChartDataCollection2 = new ChartDataCollection("Nested collection 2");

                chartDataCollection.Add(chartPointData);
                chartDataCollection.Add(nestedChartDataCollection1);
                nestedChartDataCollection1.Add(chartLineData);
                nestedChartDataCollection1.Add(nestedChartDataCollection2);
                nestedChartDataCollection2.Add(chartAreaData);

                chartControl.Data = chartDataCollection;

                List <Series> seriesBeforeUpdate = linearPlotView.Model.Series.ToList();

                // Precondition
                Assert.AreEqual(3, seriesBeforeUpdate.Count);

                // When
                nestedChartDataCollection1.Insert(0, new ChartAreaData("Additional areas"));
                nestedChartDataCollection1.NotifyObservers();

                // Then
                ElementCollection <Series> series = linearPlotView.Model.Series;
                Assert.AreEqual(4, series.Count);
                Assert.AreEqual("Points", series[0].Title);
                Assert.AreEqual("Additional areas", series[1].Title);
                Assert.AreEqual("Lines", series[2].Title);
                Assert.AreEqual("Areas", series[3].Title);
                Assert.AreEqual(0, seriesBeforeUpdate.Except(series).Count());
            }
        }
コード例 #19
0
        public void Update_ChartAreaDataWithTestProperties_ChartAreaDataSeriesUpdatedAccordingly()
        {
            // Setup
            var chartAreaData = new ChartAreaData("Test name", new ChartAreaStyle
            {
                FillColor       = fillColor,
                StrokeColor     = strokeColor,
                StrokeThickness = 3
            });
            var chartAreaDataSeries = new ChartAreaDataSeries(chartAreaData);

            SetChartAreaDataTestProperties(chartAreaData);

            // Precondition
            AssertChartAreaDataSeriesDefaultProperties(chartAreaDataSeries);

            // Call
            chartAreaDataSeries.Update();

            // Assert
            AssertChartAreaDataSeriesTestProperties(chartAreaDataSeries);
        }
コード例 #20
0
        public void SetProperties_IndividualProperties_UpdateDataAndNotifyObservers()
        {
            // Setup
            const int numberOfChangedProperties = 3;
            var       mocks    = new MockRepository();
            var       observer = mocks.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver()).Repeat.Times(numberOfChangedProperties);
            mocks.ReplayAll();

            var chartAreaData = new ChartAreaData("Test", new ChartAreaStyle
            {
                FillColor       = Color.AliceBlue,
                StrokeColor     = Color.Blue,
                StrokeThickness = 3
            });

            chartAreaData.Attach(observer);

            var properties = new ChartAreaDataProperties
            {
                Data = chartAreaData
            };

            Color     newFillColor       = Color.Blue;
            Color     newStrokeColor     = Color.Red;
            const int newStrokeThickness = 6;

            // Call
            properties.FillColor       = newFillColor;
            properties.StrokeColor     = newStrokeColor;
            properties.StrokeThickness = newStrokeThickness;

            // Assert
            Assert.AreEqual(newFillColor, chartAreaData.Style.FillColor);
            Assert.AreEqual(newStrokeColor, chartAreaData.Style.StrokeColor);
            Assert.AreEqual(newStrokeThickness, chartAreaData.Style.StrokeThickness);
            mocks.VerifyAll();
        }
コード例 #21
0
        public void GivenChartControlWithData_WhenChartDataMoved_ThenCorrespondingSeriesMovedAndAllSeriesReused()
        {
            // Given
            using (var chartControl = new ChartControl())
            {
                LinearPlotView linearPlotView      = GetLinearPlotView(chartControl);
                var            chartPointData      = new ChartPointData("Points");
                var            chartLineData       = new ChartLineData("Lines");
                var            chartAreaData       = new ChartAreaData("Areas");
                var            chartDataCollection = new ChartDataCollection("Root collection");

                chartDataCollection.Add(chartPointData);
                chartDataCollection.Add(chartLineData);
                chartDataCollection.Add(chartAreaData);

                chartControl.Data = chartDataCollection;

                List <Series> seriesBeforeUpdate = linearPlotView.Model.Series.ToList();

                // Precondition
                Assert.AreEqual(3, seriesBeforeUpdate.Count);
                Assert.AreEqual("Points", seriesBeforeUpdate[0].Title);
                Assert.AreEqual("Lines", seriesBeforeUpdate[1].Title);
                Assert.AreEqual("Areas", seriesBeforeUpdate[2].Title);

                // When
                chartDataCollection.Remove(chartPointData);
                chartDataCollection.Add(chartPointData);
                chartDataCollection.NotifyObservers();

                // Then
                ElementCollection <Series> series = linearPlotView.Model.Series;
                Assert.AreEqual(3, series.Count);
                Assert.AreEqual("Lines", series[0].Title);
                Assert.AreEqual("Areas", series[1].Title);
                Assert.AreEqual("Points", series[2].Title);
                Assert.AreEqual(0, seriesBeforeUpdate.Except(series).Count());
            }
        }
コード例 #22
0
        public void Data_SetNewChartAreaDataInstance_ReturnCorrectPropertyValues()
        {
            // Setup
            Color     fillColor       = Color.Aqua;
            Color     strokeColor     = Color.Bisque;
            const int strokeThickness = 4;

            var chartAreaData = new ChartAreaData("Test", new ChartAreaStyle
            {
                FillColor       = fillColor,
                StrokeColor     = strokeColor,
                StrokeThickness = strokeThickness
            });
            var properties = new ChartAreaDataProperties();

            // Call
            properties.Data = chartAreaData;

            // Assert
            Assert.AreEqual(fillColor, properties.FillColor);
            Assert.AreEqual(strokeColor, properties.StrokeColor);
            Assert.AreEqual(strokeThickness, properties.StrokeThickness);
        }