Example #1
0
        public void TestBoundaries()
        {
            RawSampleProductFormat raw = new RawSampleProductFormat(
                "55555555 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 11111111 22222222 33333333 44444444 55555555 66666666 NNNNNNNNN aaaaaaaaa");

            Assert.That(raw.ProductId, Is.EqualTo("55555555"));
            Assert.That(raw.ProductDescription, Is.EqualTo(new String('a', 59)));
            Assert.That(raw.RegularSingularPrice, Is.EqualTo("11111111"));
            Assert.That(raw.PromotionalSingularPrice, Is.EqualTo("22222222"));
            Assert.That(raw.RegularSplitPrice, Is.EqualTo("33333333"));
            Assert.That(raw.PromotionalSplitPrice, Is.EqualTo("44444444"));
            Assert.That(raw.RegularForX, Is.EqualTo("55555555"));
            Assert.That(raw.PromotionalForX, Is.EqualTo("66666666"));
            Assert.That(raw.Flags, Is.EqualTo("NNNNNNNNN"));
            Assert.That(raw.ProductSize, Is.EqualTo("aaaaaaaaa"));
        }
        IProductRecord Parse(RawSampleProductFormat raw)
        {
            var result = new ProductRecord();

            result.ProductID          = int.Parse(raw.ProductId);
            result.ProductDescription = raw.ProductDescription.Trim();

            result.RegularCalculatorPrice = CalculatorPrice(raw.RegularSingularPrice,
                                                            raw.RegularSplitPrice, raw.RegularForX);
            result.RegularDisplayPrice = FormatCurrencyForDisplay(result.RegularCalculatorPrice);

            result.PromotionalCalculatorPrice = CalculatorPrice(raw.PromotionalSingularPrice,
                                                                raw.PromotionalSplitPrice, raw.PromotionalForX);
            result.PromotionalDisplayPrice = result.PromotionalCalculatorPrice == 0 ?
                                             "N/A" :  FormatCurrencyForDisplay(result.PromotionalCalculatorPrice);

            result.TaxRate     = CheckFlag(raw.Flags, 5) ? 7.775m : 0;
            result.Measure     = CheckFlag(raw.Flags, 3) ? UnitOfMeasure.Pound : UnitOfMeasure.Each;
            result.ProductSize = raw.ProductSize.Trim();

            return(result);
        }
        public IProductRecord Parse(string s)
        {
            RawSampleProductFormat raw = new RawSampleProductFormat(s);

            return(Parse(raw));
        }