Index: Core/Common/src/Core.Common.Utils/Core.Common.Utils.csproj =================================================================== diff -u -r654d3a712eedbdeea718dc0448c5544f09e053cd -rc0c01906c23d8951360f8c299473e1eb92729451 --- Core/Common/src/Core.Common.Utils/Core.Common.Utils.csproj (.../Core.Common.Utils.csproj) (revision 654d3a712eedbdeea718dc0448c5544f09e053cd) +++ Core/Common/src/Core.Common.Utils/Core.Common.Utils.csproj (.../Core.Common.Utils.csproj) (revision c0c01906c23d8951360f8c299473e1eb92729451) @@ -107,6 +107,7 @@ True Resources.resx + Index: Core/Common/src/Core.Common.Utils/ReferenceEqualityComparer.cs =================================================================== diff -u --- Core/Common/src/Core.Common.Utils/ReferenceEqualityComparer.cs (revision 0) +++ Core/Common/src/Core.Common.Utils/ReferenceEqualityComparer.cs (revision c0c01906c23d8951360f8c299473e1eb92729451) @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using System.Runtime.CompilerServices; + +namespace Core.Common.Utils +{ + /// + /// This class determines whether two objects are equal based on their references. + /// + public class ReferenceEqualityComparer : IEqualityComparer + { + public bool Equals(T x, T y) + { + return ReferenceEquals(x, y); + } + + public int GetHashCode(T obj) + { + return RuntimeHelpers.GetHashCode(obj); + } + } +} \ No newline at end of file Index: Core/Common/test/Core.Common.Utils.Test/Core.Common.Utils.Test.csproj =================================================================== diff -u -r654d3a712eedbdeea718dc0448c5544f09e053cd -rc0c01906c23d8951360f8c299473e1eb92729451 --- Core/Common/test/Core.Common.Utils.Test/Core.Common.Utils.Test.csproj (.../Core.Common.Utils.Test.csproj) (revision 654d3a712eedbdeea718dc0448c5544f09e053cd) +++ Core/Common/test/Core.Common.Utils.Test/Core.Common.Utils.Test.csproj (.../Core.Common.Utils.Test.csproj) (revision c0c01906c23d8951360f8c299473e1eb92729451) @@ -102,6 +102,7 @@ True Resources.resx + Index: Core/Common/test/Core.Common.Utils.Test/ReferenceEqualityComparerTest.cs =================================================================== diff -u --- Core/Common/test/Core.Common.Utils.Test/ReferenceEqualityComparerTest.cs (revision 0) +++ Core/Common/test/Core.Common.Utils.Test/ReferenceEqualityComparerTest.cs (revision c0c01906c23d8951360f8c299473e1eb92729451) @@ -0,0 +1,97 @@ +using NUnit.Framework; + +namespace Core.Common.Utils.Test +{ + [TestFixture] + public class ReferenceEqualityComparerTest + { + [Test] + public void HashCode_Object_ReturnHashCode() + { + // Setup + var comparer = new ReferenceEqualityComparer(); + var obj = new object(); + + // Call + var code = comparer.GetHashCode(obj); + + // Assert + Assert.AreEqual(code, obj.GetHashCode()); + } + + [Test] + public void HashCode_ObjectHashCodeOverride_ReturnsObjectHashCode() + { + // Setup + var comparer = new ReferenceEqualityComparer(); + var obj = new TestObject(); + + // Call + var code = comparer.GetHashCode(obj); + + // Assert + Assert.AreNotEqual(code, obj.GetHashCode()); + Assert.AreEqual(code, obj.GetBaseHashCode()); + } + + [Test] + public void HashCode_DifferentInstance_ReturnDifferentHashCode() + { + // Setup + var comparer = new ReferenceEqualityComparer(); + + // Call + var codeFirst = comparer.GetHashCode(new TestObject()); + var codeOther = comparer.GetHashCode(new TestObject()); + + // Assert + Assert.AreNotEqual(codeFirst, codeOther); + } + + [Test] + public void Equals_SameInstance_ReturnTrue() { + // Setup + var comparer = new ReferenceEqualityComparer(); + var obj = new object(); + + // Call & Assert + Assert.IsTrue(comparer.Equals(obj, obj)); + Assert.AreEqual(comparer.GetHashCode(obj), comparer.GetHashCode(obj)); + } + + [Test] + public void Equals_OtherEqualsInstance_ReturnFalse() + { + // Setup + var comparer = new ReferenceEqualityComparer(); + var objectFirst = new TestObject(); + var objectSecond = new TestObject(); + + // Call + var equals = comparer.Equals(objectFirst, objectSecond); + + // Assert + Assert.IsFalse(equals); + Assert.IsTrue(objectFirst.Equals(objectSecond)); + Assert.AreNotEqual(comparer.GetHashCode(objectFirst), comparer.GetHashCode(objectSecond)); + } + + class TestObject + { + public override bool Equals(object obj) + { + return true; + } + + public override int GetHashCode() + { + return 1; + } + + public int GetBaseHashCode() + { + return base.GetHashCode(); + } + } + } +} \ No newline at end of file Index: Core/Components/src/Core.Components.OxyPlot.Forms/BaseChart.cs =================================================================== diff -u -rdaaa148db691a71c042fcdd3ca039cf13c59217c -rc0c01906c23d8951360f8c299473e1eb92729451 --- Core/Components/src/Core.Components.OxyPlot.Forms/BaseChart.cs (.../BaseChart.cs) (revision daaa148db691a71c042fcdd3ca039cf13c59217c) +++ Core/Components/src/Core.Components.OxyPlot.Forms/BaseChart.cs (.../BaseChart.cs) (revision c0c01906c23d8951360f8c299473e1eb92729451) @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Drawing; -using System.Runtime.CompilerServices; using System.Windows.Forms; +using Core.Common.Utils; using Core.Components.Charting.Data; using Core.Components.OxyPlot.Properties; using OxyPlot; @@ -19,7 +19,7 @@ public sealed class BaseChart : Control { private readonly SeriesFactory seriesFactory = new SeriesFactory(); - private readonly IDictionary series = new Dictionary(new ReferenceEqualityComparer()); + private readonly IDictionary series = new Dictionary(new ReferenceEqualityComparer()); private PlotView view; /// @@ -54,16 +54,13 @@ /// A boolean value representing the new visibility of the . public void SetVisibility(ChartData serie, bool visibility) { - if (serie != null) + if (serie == null) { - serie.IsVisible = visibility; - series[serie].IsVisible = visibility; - view.Invalidate(); + throw new ArgumentNullException("serie", "Cannot set visibility of a null serie."); } - else - { - throw new ArgumentException("Visibility set for IChartData which was not of type Series."); - } + serie.IsVisible = visibility; + series[serie].IsVisible = visibility; + view.Invalidate(); } /// @@ -152,20 +149,4 @@ } } } - - /// - /// This class determines whether two objects are equal based on their references. - /// - internal class ReferenceEqualityComparer : IEqualityComparer - { - public bool Equals(ChartData x, ChartData y) - { - return ReferenceEquals(x, y); - } - - public int GetHashCode(ChartData obj) - { - return RuntimeHelpers.GetHashCode(obj); - } - } } \ No newline at end of file Index: Core/Components/src/Core.Components.OxyPlot.Forms/Core.Components.OxyPlot.Forms.csproj =================================================================== diff -u -rba3f5abc18676f64d95d75270494424f169b3c4e -rc0c01906c23d8951360f8c299473e1eb92729451 --- Core/Components/src/Core.Components.OxyPlot.Forms/Core.Components.OxyPlot.Forms.csproj (.../Core.Components.OxyPlot.Forms.csproj) (revision ba3f5abc18676f64d95d75270494424f169b3c4e) +++ Core/Components/src/Core.Components.OxyPlot.Forms/Core.Components.OxyPlot.Forms.csproj (.../Core.Components.OxyPlot.Forms.csproj) (revision c0c01906c23d8951360f8c299473e1eb92729451) @@ -62,6 +62,10 @@ + + {F49BD8B2-332A-4C91-A196-8CCE0A2C7D98} + Core.Common.Utils + {c90b77da-e421-43cc-b82e-529651bc21ac} Core.Common.Version Index: Core/Components/test/Core.Components.OxyPlot.Forms.Test/BaseChartTest.cs =================================================================== diff -u -rdaaa148db691a71c042fcdd3ca039cf13c59217c -rc0c01906c23d8951360f8c299473e1eb92729451 --- Core/Components/test/Core.Components.OxyPlot.Forms.Test/BaseChartTest.cs (.../BaseChartTest.cs) (revision daaa148db691a71c042fcdd3ca039cf13c59217c) +++ Core/Components/test/Core.Components.OxyPlot.Forms.Test/BaseChartTest.cs (.../BaseChartTest.cs) (revision c0c01906c23d8951360f8c299473e1eb92729451) @@ -103,5 +103,18 @@ // Assert Assert.Throws(test); } + + [Test] + public void SetVisibility_ForNull_ThrowsArgumentNullException() + { + // Setup + var chart = new BaseChart(); + + // Call + TestDelegate test = () => chart.SetVisibility(null, true); + + // Assert + Assert.Throws(test); + } } } \ No newline at end of file Index: packages/repositories.config =================================================================== diff -u -rba3f5abc18676f64d95d75270494424f169b3c4e -rc0c01906c23d8951360f8c299473e1eb92729451 --- packages/repositories.config (.../repositories.config) (revision ba3f5abc18676f64d95d75270494424f169b3c4e) +++ packages/repositories.config (.../repositories.config) (revision c0c01906c23d8951360f8c299473e1eb92729451) @@ -25,6 +25,7 @@ +