예제 #1
0
        /// <summary>
        /// Generates a random list of item.
        /// </summary>
        /// <param name="size">Expected size of the list.</param>
        /// <returns>List of items.</returns>
        private ItemList GenerateList(int size)
        {
            // Get items list
            string[] items = ConfigurationTest.Config.GetSection("PerformanceTest:Items").Get <string[]>();

            // Creates random
            Random random = new Random();

            // Creates list
            ItemList output = new ItemList();

            for (int i = 0; i < size; i++)
            {
                // Creates item
                ItemTaxable item = new ItemTaxable();

                // Fill data
                item.Quantity = random.Next(1, 100);
                item.Price    = random.Next(1, 1000);
                item.Name     = (random.Next(0, 1) == 0) ? "imported" : string.Empty;
                item.Name    += " " + items[random.Next(0, items.Length - 1)];

                // Add item
                output.Add(item);
            }

            // Return
            return(output);
        }
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="config"></param>
 public ExtremeValuesTest()
 {
     // Apply Taxes
     foreach (Tax tax in ConfigurationTest.Config.GetSection("ExtremeValuesTest:Taxes").Get <List <Tax> >())
     {
         ItemTaxable.ApplyTax(tax);
     }
 }
예제 #3
0
 /// <summary>
 /// Default Constructor.
 /// </summary>
 public StandardTest()
 {
     // Apply Taxes
     foreach (Tax tax in ConfigurationTest.Config.GetSection("StandardTest:Taxes").Get <List <Tax> >())
     {
         ItemTaxable.ApplyTax(tax);
     }
 }
        public void MaxValues()
        {
            // Get expected inputs and ouptuts
            string[] inputs  = ConfigurationTest.Config.GetSection("ExtremeValuesTest:Inputs").Get <string[]>();
            string[] outputs = ConfigurationTest.Config.GetSection("ExtremeValuesTest:Outputs").Get <string[]>();

            // Check inputs and outpus are the same length
            Assert.AreEqual(inputs.Length, outputs.Length);

            // Compare inputs and outputs
            for (int i = 0; i < inputs.Length; i++)
            {
                ItemTaxable item = new ItemTaxable();
                item.LoadFromString(inputs[i]);
                Assert.AreEqual(item.ToString(), outputs[i]);
            }
        }
예제 #5
0
        public void CompareInputOutput()
        {
            foreach (string file in Directory.GetFiles(ConfigurationTest.Config["DataTest:Input"]))
            {
                // Create the list
                ItemList list = new ItemList();
                foreach (string line in File.ReadLines(file))
                {
                    ItemTaxable item = new ItemTaxable();
                    item.LoadFromString(line);
                    list.Add(item);
                }

                // Read the output
                string fileOut  = Path.Combine(ConfigurationTest.Config["DataTest:Output"], Path.GetFileName(file));
                string expected = File.ReadAllText(fileOut);

                // Compare
                Assert.AreEqual(expected, list.ToString());
            }
        }
예제 #6
0
        /// <summary>
        /// Main Entry point of the application.
        /// </summary>
        /// <param name="args">Array of arguments passed to the method.</param>
        public static void Main(string[] args)
        {
            // Start
            Console.WriteLine("Starting Sales Receipt Program");

            // Load config
            IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();

            // Set Taxes
            foreach (Tax tax in config.GetSection("Taxes").Get <List <Tax> >())
            {
                ItemTaxable.ApplyTax(tax);
            }

            // Read files in the input folder
            foreach (string file in Directory.GetFiles("data"))
            {
                Console.WriteLine(Environment.NewLine + new string('=', 20));
                Console.WriteLine($"FILE : {file}");
                Console.WriteLine(Environment.NewLine + "INPUT");
                Console.WriteLine(new string('-', 5));
                ItemList list = new ItemList();
                foreach (string line in File.ReadLines(file))
                {
                    ItemTaxable item = new ItemTaxable();
                    item.LoadFromString(line);
                    list.Add(item);
                    Console.WriteLine(line);
                }

                Console.WriteLine(Environment.NewLine + "OUTPUT");
                Console.WriteLine(new string('-', 6));
                Console.WriteLine(list.ToString());
            }

            // End
            Console.WriteLine("Program Finished.");
        }