예제 #1
0
        void setRounder()
        {
            // Prevents an exception from being thrown
            if (RoundingAlgorithm == RoundingAlgorithm.None)
            {
                Formatter.NumberRounder = null;
                return;
            }


            if (this.NumberRounder == NumberBoxNumberRounder.IncrementNumberRounder)
            {
                IncrementNumberRounder nr = new IncrementNumberRounder();
                if (this.IncrementPrecision != 0)
                {
                    nr.Increment = this.IncrementPrecision;
                }
                nr.RoundingAlgorithm    = this.RoundingAlgorithm;
                Formatter.NumberRounder = nr;
            }
            else
            {
                SignificantDigitsNumberRounder nr = new SignificantDigitsNumberRounder();
                if (this.SignificantDigitPrecision != 0)
                {
                    nr.SignificantDigits = this.SignificantDigitPrecision;
                }
                nr.RoundingAlgorithm    = this.RoundingAlgorithm;
                Formatter.NumberRounder = nr;
            }
        }
예제 #2
0
        public void When_UsingVariousSignificantDigits(double value, uint significantDigits, double expected)
        {
            var sut = new SignificantDigitsNumberRounder();

            sut.SignificantDigits = significantDigits;

            var rounded = sut.RoundDouble(value);

            Assert.AreEqual(expected, rounded);
        }
예제 #3
0
        public void When_FormatDoubleUsingSignificantDigitsNumberRounder()
        {
            var sut = new PercentFormatter();
            SignificantDigitsNumberRounder rounder = new SignificantDigitsNumberRounder();

            rounder.SignificantDigits = 1;
            sut.NumberRounder         = rounder;
            var formatted = sut.FormatDouble(1.8);

            Assert.AreEqual("200.00%", formatted);
        }
예제 #4
0
        private void When_UsingARoundingAlgorithmCore(double value, RoundingAlgorithm roundingAlgorithm, double expected)
        {
            var sut = new SignificantDigitsNumberRounder();

            sut.SignificantDigits = 2;
            sut.RoundingAlgorithm = roundingAlgorithm;

            var rounded = sut.RoundDouble(value);

            Assert.AreEqual(expected, rounded);
        }
예제 #5
0
    private string GenerateValue_ValueString(string resourceString, double ratingValue)
    {
        DecimalFormatter formatter             = new DecimalFormatter();
        SignificantDigitsNumberRounder rounder = new SignificantDigitsNumberRounder();

        formatter.NumberRounder = rounder;

        string maxRatingString = GetRatingControl().MaxRating.ToString();

        int fractionDigits = DetermineFractionDigits(ratingValue);
        int sigDigits      = DetermineSignificantDigits(ratingValue, fractionDigits);

        formatter.FractionDigits  = fractionDigits;
        rounder.SignificantDigits = (uint)sigDigits;
        string ratingString = formatter.Format(ratingValue);

        return(StringUtil.FormatString(resourceString, ratingString, maxRatingString));
    }
예제 #6
0
        public void When_SignificantDigits_Is_Zero_Then_Should_Throw()
        {
            var sut = new SignificantDigitsNumberRounder();

            Assert.ThrowsException <ArgumentException>(() => sut.SignificantDigits = 0);
        }
예제 #7
0
        public void When_RoundingAlgorithm_Is_None_Then_Should_Throw()
        {
            var sut = new SignificantDigitsNumberRounder();

            Assert.ThrowsException <ArgumentException>(() => sut.RoundingAlgorithm = RoundingAlgorithm.None);
        }