/// <summary>
        /// Generates random combinations of messages
        /// </summary>
        public void CreateMessages()
        {
            Random r = new Random();

            for (int j = 0; j < 4; j++)
            {
                for (int i = 0; i < 10; i++)
                {
                    Sale    s = new Sale($"product { i }", decimal.Round(Convert.ToDecimal(r.NextDouble() * (20 - 0)), 2));
                    Message m = new Message(s, MessageType.Single, null);

                    DataManager.AddPendingMessage(m);
                }

                for (int i = 0; i < 10; i++)
                {
                    Sale    s = new Sale($"product { i }", decimal.Round(Convert.ToDecimal(r.NextDouble() * 1), 2), r.Next(10));
                    Message m = new Message(s, MessageType.Multi, null);

                    DataManager.AddPendingMessage(m);
                }

                AdjustmentType[] types = new AdjustmentType[] { AdjustmentType.Add, AdjustmentType.Multiply, AdjustmentType.Subtract };

                for (int i = 0; i < 10; i++)
                {
                    Sale           s  = new Sale($"product { i }", decimal.Round(Convert.ToDecimal(r.NextDouble() * 1), 2));
                    SaleAdjustment sa = new SaleAdjustment($"product { i }", decimal.Round(Convert.ToDecimal(r.NextDouble() * 10), 2), types[r.Next(3)]);
                    Message        m  = new Message(s, MessageType.Adjustment, sa);

                    DataManager.AddPendingMessage(m);
                }
            }
        }
Ejemplo n.º 2
0
        public void Adj_When_AdjustmentValueIsWrong_PrintsWarning_And_ReturnsFalse()
        {
            // Arrange
            OutputLoggerHelper.SkipOutputFile = true;
            MessageValidatorAdjustment v = new MessageValidatorAdjustment();
            Sale           s             = new Sale("product", 2.5m);
            SaleAdjustment sa            = new SaleAdjustment("product", Decimal.MinValue, AdjustmentType.Add);
            Message        m             = new Message(s, MessageType.Adjustment, sa);

            // Act

            bool isMeesageValid = v.MessageIsValid(m);
            bool isSaleSaved    = new SaleExecutorAdjustment(s, sa).ExecuteSale();

            // Assert
            Assert.AreEqual(false, isMeesageValid);
        }
Ejemplo n.º 3
0
        public void Adj_When_TypeAndSaleOk_SaveSale()
        {
            // Arrange
            OutputLoggerHelper.SkipOutputFile = true;
            MessageValidatorAdjustment v = new MessageValidatorAdjustment();
            Sale           s             = new Sale("product", 2.5m, 6);
            SaleAdjustment sa            = new SaleAdjustment("product", 4, AdjustmentType.Add);
            Message        m             = new Message(s, MessageType.Adjustment, sa);

            // Act

            bool isMeesageValid = v.MessageIsValid(m);
            bool isSaleSaved    = new SaleExecutorAdjustment(s, sa).ExecuteSale();

            // Assert
            Assert.AreEqual(true, isMeesageValid);
            Assert.AreEqual(true, isSaleSaved);

            Console.WriteLine($"Sales entered: { DataManager.GetReadOnlySaleList().Count }, Sale adjustments performed { DataManager.GetReadOnlySaleAdjustments().Count }");
        }
 public SaleExecutorSimple(Sale sale, SaleAdjustment saleAdjustment = null) : base(sale, saleAdjustment)
 {
 }
Ejemplo n.º 5
0
 public SaleExecutorAdjustment(Sale sale, SaleAdjustment saleAdjustment) : base(sale, saleAdjustment)
 {
 }
 public SaleExecutorBase(Sale sale, SaleAdjustment saleAdjustment = null)
 {
     _sale           = sale;
     _saleAdjustment = saleAdjustment;
 }
 public SaleExecutorMulti(Sale sale, SaleAdjustment saleAdjustment = null) : base(sale, saleAdjustment)
 {
 }