public void TestGetHashCode()
        {
            var config1 = new MetricConfiguration(
                seriesCountLimit:           1000,
                valuesPerDimensionLimit:    100,
                seriesConfig:               new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreNotEqual(0, config1.GetHashCode());

            var config2 = new MetricConfiguration(
                seriesCountLimit:           1000,
                valuesPerDimensionLimit:    100,
                seriesConfig:               new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreEqual(config1.GetHashCode(), config2.GetHashCode());

            config2 = new MetricConfiguration(
                seriesCountLimit:           1000,
                valuesPerDimensionLimit:    100,
                seriesConfig:               new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: true));

            Assert.AreNotEqual(config1.GetHashCode(), config2.GetHashCode());
            Assert.AreNotEqual(0, config2.GetHashCode());

            config2 = new MetricConfiguration(
                seriesCountLimit:           1001,
                valuesPerDimensionLimit:    100,
                seriesConfig:               new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreNotEqual(config1.GetHashCode(), config2.GetHashCode());
            Assert.AreNotEqual(0, config2.GetHashCode());
        }
        public void TestGetHashCode()
        {
            var config1 = new MetricConfiguration(
                seriesCountLimit:           1000,
                valuesPerDimensionLimit:    100,
                seriesConfig:               new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreNotEqual(0, config1.GetHashCode());

            var config2 = new MetricConfiguration(
                seriesCountLimit:           1000,
                valuesPerDimensionLimit:    100,
                seriesConfig:               new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreEqual(config1.GetHashCode(), config2.GetHashCode());

            config2 = new MetricConfiguration(
                seriesCountLimit:           1000,
                valuesPerDimensionLimit:    100,
                seriesConfig:               new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: true));

            Assert.AreNotEqual(config1.GetHashCode(), config2.GetHashCode());
            Assert.AreNotEqual(0, config2.GetHashCode());

            config2 = new MetricConfiguration(
                seriesCountLimit:           1001,
                valuesPerDimensionLimit:    100,
                seriesConfig:               new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreNotEqual(config1.GetHashCode(), config2.GetHashCode());
            Assert.AreNotEqual(0, config2.GetHashCode());

            config1 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimits: new[] { 42 },
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreNotEqual(0, config1.GetHashCode());

            config2 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimit: 42,
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreEqual(config1.GetHashCode(), config2.GetHashCode());

            config2 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimits: new[] { 42, 42, 42 },
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreEqual(config1.GetHashCode(), config2.GetHashCode());

            config2 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimits: new[] { 42, 18, 42 },
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreNotEqual(0, config2.GetHashCode());
            Assert.AreNotEqual(config1.GetHashCode(), config2.GetHashCode());

            config2 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimits: new[] { 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 },
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreEqual(config1.GetHashCode(), config2.GetHashCode());

            config1 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimits: new[] { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 30 },
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            config2 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimits: new[] { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 40 },
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreNotEqual(0, config1.GetHashCode());
            Assert.AreNotEqual(0, config2.GetHashCode());
            Assert.AreEqual(config1.GetHashCode(), config2.GetHashCode());

            config1 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimits: new[] { 10, 11, 12, 13, 14, 15, 16, 17, 18, 25, 30 },
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            config2 = new MetricConfiguration(
                seriesCountLimit: 1000,
                valuesPerDimensionLimits: new[] { 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 40 },
                seriesConfig: new MetricSeriesConfigurationForMeasurement(restrictToUInt32Values: false));

            Assert.AreNotEqual(0, config1.GetHashCode());
            Assert.AreNotEqual(0, config2.GetHashCode());
            Assert.AreNotEqual(config1.GetHashCode(), config2.GetHashCode());
        }