public void LegendItemDataPointHasDataContextSet()
        {
            Chart     chart  = new Chart();
            PieSeries series = DefaultControlToTest as PieSeries;

            series.DependentValueBinding   = new Binding("Value");
            series.IndependentValueBinding = new Binding("Value");
            NotifyingDataObject <int> notifyingDataObjectA = new NotifyingDataObject <int> {
                Value = 5
            };
            NotifyingDataObject <int> notifyingDataObjectB = new NotifyingDataObject <int> {
                Value = 7
            };

            NotifyingDataObject <int>[] notifyingDataObjects = new NotifyingDataObject <int>[] { notifyingDataObjectA, notifyingDataObjectB };
            series.ItemsSource = notifyingDataObjects;
            chart.Series.Add(series);
            TestAsync(
                chart,
                () =>
            {
                LegendItem[] legendItems = ChartTestUtilities.GetLegend(chart).Items.OfType <LegendItem>().ToArray();
                Assert.AreEqual(notifyingDataObjects.Length, legendItems.Length);
                for (int i = 0; i < notifyingDataObjects.Length; i++)
                {
                    PieDataPoint legendItemDataPoint = legendItems[i].DataContext as PieDataPoint;
                    Assert.IsNotNull(legendItemDataPoint);
                    Assert.AreEqual(notifyingDataObjects[i], legendItemDataPoint.DataContext);
                }
            });
        }
        public void PieSeriesWithTwoDoubles()
        {
            KeyValuePair <string, double>[] objects = new KeyValuePair <string, double>[]
            {
                new KeyValuePair <string, double>("A", 90000.0),
                new KeyValuePair <string, double>("B", 80000.0),
            };
            Chart           chart     = new Chart();
            DataPointSeries pieSeries = DefaultSeriesToTest;

            chart.Series.Add(pieSeries);
            pieSeries.IndependentValueBinding = new Binding("Key");
            pieSeries.DependentValueBinding   = new Binding("Value");
            TestAsync(
                chart,
                () => pieSeries.ItemsSource = objects,
                () => Assert.AreEqual(2, chart.LegendItems.Cast <object>().Count()),
                () =>
            {
                IList <PieDataPoint> pieDataPoints = ChartTestUtilities.GetDataPointsForSeries(pieSeries).Cast <PieDataPoint>().ToList();
                Assert.AreEqual(2, pieDataPoints.Count);
                foreach (PieDataPoint pieDataPoint in pieDataPoints)
                {
                    Assert.IsNotNull(pieDataPoint.Geometry);
                    Assert.AreSame(typeof(PathGeometry), pieDataPoint.Geometry.GetType());
                    Assert.IsNotNull(pieDataPoint.GeometryHighlight);
                    Assert.AreSame(typeof(PathGeometry), pieDataPoint.GeometryHighlight.GetType());
                    Assert.IsNotNull(pieDataPoint.GeometrySelection);
                    Assert.AreSame(typeof(PathGeometry), pieDataPoint.GeometrySelection.GetType());
                }
            });
        }
        public void LegendContentUpdatesImmediately()
        {
            Chart     chart  = new Chart();
            PieSeries series = DefaultControlToTest as PieSeries;

            series.DependentValueBinding   = new Binding("Value");
            series.IndependentValueBinding = new Binding("Value");
            NotifyingDataObject <int> notifyingDataObject = new NotifyingDataObject <int> {
                Value = 5
            };

            series.ItemsSource = new NotifyingDataObject <int>[] { notifyingDataObject };
            chart.Series.Add(series);
            TestAsync(
                chart,
                () =>
            {
                LegendItem legendItem = ChartTestUtilities.GetLegend(chart).Items.OfType <LegendItem>().First();
                Assert.AreEqual(5, legendItem.Content);
            },
                () => notifyingDataObject.Value = 10,
                () =>
            {
                LegendItem legendItem = ChartTestUtilities.GetLegend(chart).Items.OfType <LegendItem>().First();
                Assert.AreEqual(10, legendItem.Content);
            });
        }
        public void DateTimeAxisLabelHonorsStringFormat()
        {
            Chart        chart          = new Chart();
            string       dateTimeFormat = "|{0:MM,dd}|";
            DateTimeAxis axis           = new DateTimeAxis {
                Orientation = AxisOrientation.X
            };
            Style labelStyle = new Style(typeof(DateTimeAxisLabel));

            labelStyle.Setters.Add(new Setter(DateTimeAxisLabel.StringFormatProperty, dateTimeFormat));
            axis.AxisLabelStyle = labelStyle;
            chart.Axes.Add(axis);
            ScatterSeries series = new ScatterSeries();

            series.DependentValueBinding   = new Binding("Day");
            series.IndependentValueBinding = new Binding();
            DateTime[] itemsSource = new DateTime[] { new DateTime(2009, 1, 23) };
            series.ItemsSource = itemsSource;
            chart.Series.Add(series);
            TestAsync(
                chart,
                () =>
            {
                AxisLabel label = ChartTestUtilities.GetAxisLabels(axis).First();
                Assert.AreEqual(string.Format(CultureInfo.CurrentCulture, dateTimeFormat, label.DataContext), label.FormattedContent);
            });
        }
        public void DateTimeAxisWorksAsIndependentAxis()
        {
            Chart           chart  = new Chart();
            DataPointSeries series = DefaultSeriesToTest;

            series.DependentValueBinding   = new Binding("Value");
            series.IndependentValueBinding = new Binding("Key");
            series.ItemsSource             = new KeyValuePair <DateTime, int>[]
            {
                new KeyValuePair <DateTime, int>(new DateTime(2009, 1, 1), 1),
                new KeyValuePair <DateTime, int>(new DateTime(2009, 1, 2), 3),
                new KeyValuePair <DateTime, int>(new DateTime(2009, 1, 3), 4),
            };
            var axis = new DateTimeAxis();

            axis.Interval     = 1;
            axis.IntervalType = DateTimeIntervalType.Days;
            if (series is BarSeries)
            {
                axis.Orientation = AxisOrientation.Y;
                ((BarSeries)series).IndependentAxis = axis;
            }
            else
            {
                axis.Orientation = AxisOrientation.X;
                ((ColumnSeries)series).IndependentAxis = axis;
            }
            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
        public void FontSizeChangesFlowToAxisLabels()
        {
            Chart chart = new Chart();

            chart.FontSize = 22;
            ColumnSeries series = new ColumnSeries();

            series.ItemsSource = new int[] { 1, 2, 3 };
            chart.Series.Add(series);
            CategoryAxis axis = null;

            TestAsync(
                chart,
                () => axis = chart.ActualAxes.OfType <CategoryAxis>().First(),
                () =>
            {
                foreach (AxisLabel label in ChartTestUtilities.GetAxisLabels(axis))
                {
                    Assert.AreEqual(chart.FontSize, label.FontSize);
                }
            },
                () => chart.FontSize = 33,
                () =>
            {
                foreach (AxisLabel label in ChartTestUtilities.GetAxisLabels(axis))
                {
                    Assert.AreEqual(chart.FontSize, label.FontSize);
                }
            });
        }
        public void CategoryNamesAreNotSorted()
        {
            Chart        chart  = new Chart();
            ColumnSeries series = new ColumnSeries();

            series.IndependentValueBinding = new Binding("Key");
            series.DependentValueBinding   = new Binding("Value");
            series.ItemsSource             = new KeyValuePair <string, int>[]
            {
                new KeyValuePair <string, int>("c", 3),
                new KeyValuePair <string, int>("a", 1),
                new KeyValuePair <string, int>("b", 2),
            };
            chart.Series.Add(series);
            CategoryAxis axis = null;

            TestAsync(
                chart,
                () => axis = chart.ActualAxes.OfType <CategoryAxis>().FirstOrDefault(),
                () =>
            {
                object[] labels = ChartTestUtilities.GetAxisLabels(axis).Select(l => l.DataContext).ToArray();
                Assert.AreEqual("c", labels[0]);
                Assert.AreEqual("a", labels[1]);
                Assert.AreEqual("b", labels[2]);
            });
        }
        public void SimpleChartTwoIntegers()
        {
            DataPointSeries series = DefaultSeriesToTest;

            series.ItemsSource = new List <int>(new int[] { 1, -1 });
            Chart chart = new Chart();

            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(2, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
        public void SimpleChartOneIntegerValueZero()
        {
            DataPointSeries series = DefaultSeriesToTest;

            series.ItemsSource = new int[] { 0 };
            Chart chart = new Chart();

            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(1, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
        public void UsingValuePathsWorks()
        {
            Chart           chart  = new Chart();
            DataPointSeries series = DefaultDataPointSeriesToTest;

            series.DependentValuePath   = "Value";
            series.IndependentValuePath = "Key";
            series.ItemsSource          = new KeyValuePair <int, int>[] { new KeyValuePair <int, int>(1, 2), new KeyValuePair <int, int>(3, 4), new KeyValuePair <int, int>(5, 6) };
            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(series).Count()));
        }
        public void ScatterChartTwoIntegers()
        {
            DataPointSeries series = DefaultSeriesToTest;

            series.ItemsSource             = new int[] { 1, 2 };
            series.IndependentValueBinding = new Binding();
            Chart chart = new Chart();

            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(2, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
        public void LineChartNoValues()
        {
            DataPointSeries series = DefaultSeriesToTest;

            series.ItemsSource             = new int[0];
            series.IndependentValueBinding = new Binding();
            Chart chart = new Chart();

            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(0, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
        public void SimpleChartWithBindings()
        {
            DataPointSeries series = DefaultSeriesToTest;

            series.ItemsSource             = new[] { new KeyValuePair <string, double>("A", 2) };
            series.IndependentValueBinding = new Binding("Key");
            series.DependentValueBinding   = new Binding("Value");
            Chart chart = new Chart();

            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(1, chart.Series.Count),
                () => Assert.AreEqual(1, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
예제 #14
0
        public void PieSeriesWithOneDoubleChangesValueToZero()
        {
            ObservableCollection <int> objects = new ObservableCollection <int>();

            objects.Add(5);
            Chart           chart     = new Chart();
            DataPointSeries pieSeries = DefaultSeriesToTest;

            pieSeries.ItemsSource = objects;
            chart.Series.Add(pieSeries);
            TestAsync(
                chart,
                () => Assert.AreEqual(1, ChartTestUtilities.GetDataPointsForSeries(pieSeries).Count()),
                () => objects[0] = 0,
                () => Assert.AreEqual(1, ChartTestUtilities.GetDataPointsForSeries(pieSeries).Count()));
        }
예제 #15
0
        public void LegendTitlesWhenIndependentValueBindingUnset()
        {
            Chart     chart  = new Chart();
            PieSeries series = DefaultControlToTest as PieSeries;

            series.ItemsSource = new int[] { 10, 11, 12 };
            chart.Series.Add(series);
            TestAsync(
                chart,
                () =>
            {
                int i = 1;
                foreach (var legendItem in ChartTestUtilities.GetLegend(chart).Items.OfType <LegendItem>())
                {
                    Assert.AreEqual(i, legendItem.Content);
                    i++;
                }
            });
        }
        public void ChangeStateOfDataPointsWithoutVsmStates()
        {
            Chart           chart  = new Chart();
            DataPointSeries series = DefaultDataPointSeriesToTest;

            series.IndependentValueBinding = new Binding();
            ObservableCollection <int> itemsSource = new ObservableCollection <int> {
                1, 2, 3
            };

            series.ItemsSource    = itemsSource;
            series.DataPointStyle = (Style)XamlReader.Load(SimpleDataPointStyle);
            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(series).Count),
                () => itemsSource.Clear(),
                () => Assert.AreEqual(0, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
예제 #17
0
        public void PieSeriesWithThreeIntegers()
        {
            KeyValuePair <string, int>[] objects = new KeyValuePair <string, int>[]
            {
                new KeyValuePair <string, int>("A", 700),
                new KeyValuePair <string, int>("B", 800),
                new KeyValuePair <string, int>("C", 900),
            };
            Chart           chart     = new Chart();
            DataPointSeries pieSeries = DefaultSeriesToTest;

            chart.Series.Add(pieSeries);
            pieSeries.IndependentValueBinding = new Binding("Key");
            pieSeries.DependentValueBinding   = new Binding("Value");
            TestAsync(
                chart,
                () => pieSeries.ItemsSource = objects,
                () => Assert.AreEqual(3, chart.LegendItems.Cast <object>().Count()),
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(pieSeries).Count));
        }
예제 #18
0
        public void AbleToSetMinimumMaximumOnDependentAxis()
        {
            Chart        chart  = new Chart();
            ColumnSeries series = new ColumnSeries();

            series.ItemsSource = new int[] { 1, 2, 3 };
            LinearAxis dependentAxis = new LinearAxis {
                Orientation = AxisOrientation.Y
            };

            series.DependentRangeAxis = dependentAxis;
            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(series).Count()),
                () => dependentAxis.Maximum = 5,
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(series).Count()),
                () => dependentAxis.Minimum = 0.5,
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(series).Count()));
        }
예제 #19
0
        public void ChangeIndependentDateTimeValue()
        {
            Chart      chart  = new Chart();
            AreaSeries series = (AreaSeries)DefaultControlToTest;

            series.DependentValueBinding   = new Binding("Value.Day");
            series.IndependentValueBinding = new Binding("Value");
            var dataObject = new NotifyingDataObject <DateTime> {
                Value = new DateTime(2009, 1, 10)
            };

            NotifyingDataObject <DateTime>[] itemsSource = new NotifyingDataObject <DateTime>[] { dataObject };
            series.ItemsSource = itemsSource;
            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(1, ChartTestUtilities.GetDataPointsForSeries(series).Count),
                () => dataObject.Value = dataObject.Value.AddDays(1),
                () => Assert.AreEqual(1, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
        public void VerifyLegendItemDataPointStyleApplied()
        {
            Chart           chart  = new Chart();
            DataPointSeries series = DefaultSeriesToTest;

            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.IsNotNull(ChartTestUtilities.GetLegend(chart)),
                () =>
            {
                foreach (var legendItem in ChartTestUtilities.GetLegend(chart).Items.OfType <LegendItem>())
                {
                    var dataPoint = legendItem.DataContext as DataPoint;
                    if (null != dataPoint)
                    {
                        Assert.AreNotEqual(typeof(SolidColorBrush), dataPoint.Background.GetType());
                    }
                }
            });
        }
예제 #21
0
        public void PathFillIsNotDefaultBrush()
        {
            Chart      chart  = new Chart();
            AreaSeries series = (AreaSeries)DefaultControlToTest;

            series.IndependentValueBinding = new Binding();
            ObservableCollection <int> itemsSource = new ObservableCollection <int> {
                1, 2, 3
            };

            series.ItemsSource = itemsSource;
            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(series).Count()),
                () =>
            {
                Path area = chart.GetVisualDescendents().OfType <Path>().FirstOrDefault();
                Assert.AreNotEqual(typeof(SolidColorBrush), area.Fill.GetType());
            });
        }
        public void SelectWithHashCollision()
        {
            Chart           chart  = new Chart();
            DataPointSeries series = DefaultDataPointSeriesToTest;

            series.DependentValueBinding   = new Binding("X");
            series.IndependentValueBinding = new Binding("Y");
            Point[] items = new Point[] { new Point(1, 2), new Point(2, 1) };
            series.ItemsSource        = items;
            series.IsSelectionEnabled = true;
            chart.Series.Add(series);
            TestAsync(
                chart,
                () => series.SelectedItem = items[0],
                () => ChartTestUtilities.GetDataPointsForSeries(series).Where(dp => items[0] == (Point)dp.DataContext).Single().IsSelectionEnabled = false,
                () => Assert.AreEqual(null, series.SelectedItem),
                () => series.SelectedItem = null,
                () => series.SelectedItem = items[1],
                () => ChartTestUtilities.GetDataPointsForSeries(series).Where(dp => items[1] == (Point)dp.DataContext).Single().IsSelectionEnabled = false,
                () => Assert.AreEqual(null, series.SelectedItem));
        }
        public void RemoveAndUpdateCollectionValues()
        {
            Chart           chart  = new Chart();
            DataPointSeries series = DefaultDataPointSeriesToTest;

            series.IndependentValueBinding = new Binding();
            ObservableCollection <int> itemsSource = new ObservableCollection <int> {
                1, 2, 3, 4
            };

            series.ItemsSource    = itemsSource;
            series.DataPointStyle = (Style)XamlReader.Load(SimpleDataPointStyle);
            chart.Series.Add(series);
            TestAsync(
                chart,
                () => Assert.AreEqual(4, ChartTestUtilities.GetDataPointsForSeries(series).Count),
                () => itemsSource.RemoveAt(3),
                () => Assert.AreEqual(3, ChartTestUtilities.GetDataPointsForSeries(series).Count),
                () => itemsSource[2] = 4,
                () => itemsSource.RemoveAt(2),
                () => Assert.AreEqual(2, ChartTestUtilities.GetDataPointsForSeries(series).Count));
        }
예제 #24
0
        public void PieSeriesWithOneDoubleValueNan()
        {
            KeyValuePair <string, double>[] objects = new KeyValuePair <string, double>[]
            {
                new KeyValuePair <string, double>("A", double.NaN)
            };
            Chart           chart     = new Chart();
            DataPointSeries pieSeries = DefaultSeriesToTest;

            chart.Series.Add(pieSeries);
            pieSeries.IndependentValueBinding = new Binding("Key");
            pieSeries.DependentValueBinding   = new Binding("Value");
            TestAsync(
                chart,
                () => pieSeries.ItemsSource = objects,
                () => Assert.AreEqual(1, chart.LegendItems.Cast <object>().Count()),
                () =>
            {
                IList <PieDataPoint> pieDataPoints = ChartTestUtilities.GetDataPointsForSeries(pieSeries).Cast <PieDataPoint>().ToList();
                Assert.AreEqual(1, pieDataPoints.Count);
                Assert.IsNull(pieDataPoints[0].Geometry);
            });
        }