Exemple #1
0
        public void GivenChartControlWithoutData_WhenDataSetToStackChartData_ThenChartControlUpdated()
        {
            // Given
            using (var chart = new StackChartControl())
            {
                var data = new StackChartData();
                data.AddColumn("Column 1");
                data.AddColumn("Column 2");
                data.AddRow("Row 1", new[]
                {
                    0.4,
                    0.2
                });
                data.AddRow("Row 2", new[]
                {
                    0.6,
                    0.8
                });

                // When
                chart.Data = data;

                // Then
                CategoryPlotView plotView = chart.Controls.OfType <CategoryPlotView>().Single();
                AssertColumns(data.Columns.ToList(), plotView);
                AssertSeries(data.Rows.Select(r => r.Name).ToList(), plotView);
            }
        }
Exemple #2
0
        public void GivenChartControlWithData_WhenDataSetToOtherStackChartData_ThenChartControlUpdated()
        {
            // Given
            using (var chart = new StackChartControl())
            {
                var data = new StackChartData();
                data.AddColumn("Column 1");
                data.AddColumn("Column 2");
                data.AddRow("Row 1", new[]
                {
                    0.4,
                    0.2
                });
                data.AddRow("Row 2", new[]
                {
                    0.6,
                    0.8
                });

                chart.Data = data;

                // Precondition
                CategoryPlotView plotView = chart.Controls.OfType <CategoryPlotView>().Single();
                AssertColumns(data.Columns.ToList(), plotView);
                AssertSeries(data.Rows.Select(r => r.Name).ToList(), plotView);

                // When
                var newData = new StackChartData();
                newData.AddColumn("Column 3");
                newData.AddColumn("Column 4");
                newData.AddRow("Row 3", new[]
                {
                    0.5,
                    0.7
                });
                newData.AddRow("Row 4", new[]
                {
                    0.5,
                    0.3
                });
                chart.Data = newData;

                // Then
                ElementCollection <Series> series = plotView.Model.Series;
                Assert.AreEqual(2, series.Count);
                Assert.AreEqual("Row 3", series[0].Title);
                Assert.AreEqual("Row 4", series[1].Title);

                CategoryAxis axis = plotView.Model.Axes.OfType <CategoryAxis>().Single();

                Assert.AreEqual(2, axis.Labels.Count);
                Assert.AreEqual("Column 3", axis.Labels[0]);
                Assert.AreEqual("Column 4", axis.Labels[1]);

                AssertColumns(newData.Columns.ToList(), plotView);
                AssertSeries(newData.Rows.Select(r => r.Name).ToList(), plotView);
            }
        }
Exemple #3
0
        public void GivenChartControlWithData_WhenDataNotified_ThenChartControlUpdated()
        {
            // Given
            using (var chart = new StackChartControl())
            {
                var data = new StackChartData();
                data.AddColumn("Column 1");
                data.AddColumn("Column 2");
                data.AddRow("Row 1", new[]
                {
                    0.4,
                    0.2
                });
                data.AddRow("Row 2", new[]
                {
                    0.6,
                    0.8
                });

                chart.Data = data;

                CategoryPlotView plotView = chart.Controls.OfType <CategoryPlotView>().Single();
                AssertColumns(data.Columns.ToList(), plotView);
                AssertSeries(data.Rows.Select(r => r.Name).ToList(), plotView);

                // When
                data.Clear();
                data.AddColumn("New column 1");
                data.AddColumn("New column 2");
                data.AddRow("New row 1", new[]
                {
                    0.3,
                    0.8
                });
                data.AddRow("New row 2", new[]
                {
                    0.8,
                    0.2
                });
                data.NotifyObservers();

                // Then
                ElementCollection <Series> series = plotView.Model.Series;
                Assert.AreEqual(2, series.Count);
                Assert.AreEqual("New row 1", series[0].Title);
                Assert.AreEqual("New row 2", series[1].Title);

                CategoryAxis axis = plotView.Model.Axes.OfType <CategoryAxis>().Single();

                Assert.AreEqual(2, axis.Labels.Count);
                Assert.AreEqual("New column 1", axis.Labels[0]);
                Assert.AreEqual("New column 2", axis.Labels[1]);
            }
        }
        /// <summary>
        /// Creates the columns for the given <paramref name="stackChartData"/>.
        /// </summary>
        /// <param name="illustrationPointControlItems">The data to create the columns from.</param>
        /// <param name="stackChartData">The stack chart data to create the columns for.</param>
        /// <exception cref="ArgumentNullException">Thrown when any parameter is <c>null</c>.</exception>
        public static void CreateColumns(IEnumerable <IllustrationPointControlItem> illustrationPointControlItems,
                                         StackChartData stackChartData)
        {
            if (illustrationPointControlItems == null)
            {
                throw new ArgumentNullException(nameof(illustrationPointControlItems));
            }

            if (stackChartData == null)
            {
                throw new ArgumentNullException(nameof(stackChartData));
            }

            IEnumerable <Tuple <string, string> > labels =
                illustrationPointControlItems.Select(controlItem => Tuple.Create(controlItem.WindDirectionName,
                                                                                 controlItem.ClosingSituation)).ToArray();

            bool showClosingSituation = illustrationPointControlItems.HasMultipleUniqueValues(item => item.ClosingSituation);

            foreach (Tuple <string, string> label in labels)
            {
                string columnName = label.Item1;

                if (showClosingSituation)
                {
                    columnName = string.Format(Resources.RiskeerStackChartDataFactory_CreateColumns_WindDirection_0_ClosingSituation_1,
                                               columnName,
                                               label.Item2);
                }

                stackChartData.AddColumn(columnName);
            }
        }
Exemple #5
0
        public void AddRow_ValidDataWithColor_AddRowToCollection()
        {
            // Setup
            const string name   = "Row 1";
            var          values = new[]
            {
                1.2
            };
            Color color = Color.Yellow;

            var data = new StackChartData();

            data.AddColumn("Column 1");

            // Call
            data.AddRow(name, values, color);

            // Assert
            Assert.AreEqual(1, data.Rows.Count());
            RowChartData row = data.Rows.First();

            Assert.AreEqual(name, row.Name);
            CollectionAssert.AreEqual(values, row.Values);
            Assert.AreEqual(color, row.Color);
        }
Exemple #6
0
        public void AddColumn_RowsAdded_ThrowsInvalidOperationException()
        {
            // Setup
            var data = new StackChartData();

            data.AddColumn("Column 1");
            data.AddRow("Row 1", new[]
            {
                1.1
            });

            // Call
            TestDelegate test = () => data.AddColumn("Column 2");

            // Assert
            var exception = Assert.Throws <InvalidOperationException>(test);

            Assert.AreEqual("Cannot add columns when rows already present.", exception.Message);
        }
        public void Create_CompleteStackChartData_ReturnChartDataSeriesForRows()
        {
            // Setup
            var data = new StackChartData();

            data.AddColumn("Column 1");
            data.AddColumn("Column 2");

            data.AddRow("Row 1", new[]
            {
                0.1,
                0.9
            });

            // Call
            IEnumerable <RowChartDataSeries> series = RowChartDataSeriesFactory.Create(data);

            // Assert
            Assert.AreEqual(data.Rows.Count(), series.Count());
        }
Exemple #8
0
        public void AddRow_NumberOfColumnsDifferentThanValueItems_ThrowsArgumentException()
        {
            // Setup
            var data = new StackChartData();

            data.AddColumn("column 1");
            data.AddColumn("column 2");

            // Call
            TestDelegate test = () => data.AddRow("test", new[]
            {
                2.1
            });

            // Assert
            const string message   = "The number of value items must be the same as the number of columns.";
            var          exception = TestHelper.AssertThrowsArgumentExceptionAndTestMessage <ArgumentException>(test, message);

            Assert.AreEqual("values", exception.ParamName);
        }
Exemple #9
0
        public void AddColumn_NameNull_ThrowsArgumentNullException()
        {
            // Setup
            var data = new StackChartData();

            // Call
            TestDelegate test = () => data.AddColumn(null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(test);

            Assert.AreEqual("name", exception.ParamName);
        }
Exemple #10
0
        public void GivenChartControlWithData_WhenDataSetToNull_ThenChartControlUpdated()
        {
            // Given
            using (var chart = new StackChartControl())
            {
                var data = new StackChartData();
                data.AddColumn("Column 1");
                data.AddColumn("Column 2");
                data.AddRow("Row 1", new[]
                {
                    0.4,
                    0.2
                });
                data.AddRow("Row 2", new[]
                {
                    0.6,
                    0.8
                });

                chart.Data = data;

                // Precondition
                CategoryPlotView plotView = chart.Controls.OfType <CategoryPlotView>().Single();
                AssertColumns(data.Columns.ToList(), plotView);
                AssertSeries(data.Rows.Select(r => r.Name).ToList(), plotView);

                // When
                chart.Data = null;

                // Then
                ElementCollection <Series> series = plotView.Model.Series;
                CollectionAssert.IsEmpty(series);

                CategoryAxis axis = plotView.Model.Axes.OfType <CategoryAxis>().Single();

                CollectionAssert.IsEmpty(axis.Labels);
            }
        }
Exemple #11
0
        public void AddColumn_WithName_AddColumnToCollection()
        {
            // Setup
            const string columnName = "Column 1";
            var          data       = new StackChartData();

            // Call
            data.AddColumn(columnName);

            // Assert
            Assert.AreEqual(1, data.Columns.Count());
            string column = data.Columns.First();

            Assert.AreEqual(columnName, column);
        }
Exemple #12
0
        public void Clear_Always_ClearsAllColumnsAndRows()
        {
            // Setup
            var data = new StackChartData();

            data.AddColumn("Column 1");
            data.AddColumn("Column 2");
            data.AddRow("Row 1", new[]
            {
                1.0,
                2.0
            });

            // Precondition
            Assert.AreEqual(2, data.Columns.Count());
            Assert.AreEqual(1, data.Rows.Count());

            // Call
            data.Clear();

            // Assert
            CollectionAssert.IsEmpty(data.Columns);
            CollectionAssert.IsEmpty(data.Rows);
        }
Exemple #13
0
        public void AddRow_ValuesNull_ThrowsArgumentNullException()
        {
            // Setup
            var data = new StackChartData();

            data.AddColumn("Column 1");

            // Call
            TestDelegate test = () => data.AddRow("test", null, Color.White);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(test);

            Assert.AreEqual("values", exception.ParamName);
        }