Beispiel #1
0
        public void ShouldThrowExceptionIfNoParcelTypeWouldFit()
        {
            var input = new ParcelInput(10, 0, 0, 0);
            var types = new[] { new ParcelSpecification("Small", 1, 0, 1, 0) };

            Assert.Throws <NoSuitableParcelTypeException>(() => new ParcelPicker(types).Pick(input));
        }
Beispiel #2
0
        public void ShouldPickCorrectSizeParcel(int x, int y, int z, int weight, string expectedType)
        {
            var input = new ParcelInput(x, y, z, weight);

            var parcelType = new ParcelPicker(ParcelTestData.ParcelTypes).Pick(input);

            Assert.Equal(expectedType, parcelType.Name);
        }
Beispiel #3
0
        public void ParcelTypesShouldBeOrderedByPrice()
        {
            var input = new ParcelInput(5, 0, 0, 0);
            var types = new[]
            {
                new ParcelSpecification("Small $2", 10, 0, 2, 0),
                new ParcelSpecification("Small $1", 10, 0, 1, 0)
            };

            var parcelType = new ParcelPicker(types).Pick(input);

            Assert.Equal("Small $1", parcelType.Name);
        }
        public static decimal CalculatePrice(this ParcelSpecification spec, ParcelInput input)
        {
            var basePrice = spec.Price;

            var weightSurcharge = 0;

            if (input.Weight > spec.MaxWeight)
            {
                weightSurcharge = (input.Weight - spec.MaxWeight) * spec.WeightSurcharge;
            }

            return(basePrice + weightSurcharge);
        }
        public static bool WouldFit(this ParcelSpecification parcelType, ParcelInput input)
        {
            if (input.X >= parcelType.MaxDimension)
            {
                return(false);
            }
            if (input.Y >= parcelType.MaxDimension)
            {
                return(false);
            }
            if (input.Z >= parcelType.MaxDimension)
            {
                return(false);
            }

            return(true);
        }