public CommodityConversionExpression(CommodityIndex commodityIndex, AliasMapper aliasMap, IDecimalConverter converter, ExpressionValidationHelper helper)
 {
     this.commodityIndex = commodityIndex;
     this.aliasMap       = aliasMap;
     this.converter      = converter;
     this.helper         = helper;
 }
示例#2
0
        static void Main(string[] args)
        {
            Console.WriteLine("--- ROMAN TO DECIMAL CONVERTER --- ");
            Console.WriteLine();

            string path = AppDomain.CurrentDomain.BaseDirectory + "input.txt";

            // Open the file to read from.
            string readText = File.ReadAllText(path);

            string[] lines = readText.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine("--- Input Start ---");
            Console.WriteLine(readText);
            Console.WriteLine("--- Input End ---");

            Console.WriteLine();
            Console.WriteLine("--- Output Start ---");

            #region "Initialize required components for the convertions"

            AliasMapper       aliasMap       = new AliasMapper();
            IDecimalConverter converter      = new RomanConverter();
            CommodityIndex    commodityIndex = new CommodityIndex();

            #endregion

            ExpressionParser parser = new ExpressionParser(aliasMap, converter, commodityIndex);
            foreach (string line in lines)
            {
                parser.Parse(line);
            }

            Console.WriteLine("--- Output End ---");
            Console.ReadLine();
        }
        public void UnitExpressionTest()
        {
            AliasMapper    aliasMap       = new AliasMapper();
            RomanConverter converter      = new RomanConverter();
            CommodityIndex commodityIndex = new CommodityIndex();

            aliasMap.AddAlias("glob", "C");
            aliasMap.AddAlias("pish", "X");
            ExpressionValidationHelper helper     = new ExpressionValidationHelper(aliasMap, commodityIndex);
            UnitExpression             expression = new UnitExpression(commodityIndex, aliasMap, converter, helper);

            expression.Execute("pish glob Iron is 7020 Credits");
            Assert.IsTrue(commodityIndex.Exists("Iron"));
            Assert.AreEqual <double>(commodityIndex.GetPriceByCommodity("Iron"), 78);
            expression.Execute("pish glob Iron is 6300 Credits");
            Assert.AreEqual <double>(commodityIndex.GetPriceByCommodity("Iron"), 70);
        }
        public void UnitExpressionTest()
        {
            AliasMapper    aliasMap       = new AliasMapper();
            RomanConverter converter      = new RomanConverter();
            CommodityIndex commodityIndex = new CommodityIndex();

            aliasMap.AddAlias("glob", "I");
            aliasMap.AddAlias("prok", "V");
            aliasMap.AddAlias("pish", "X");
            aliasMap.AddAlias("tegj", "L");

            ExpressionValidationHelper helper     = new ExpressionValidationHelper(aliasMap, commodityIndex);
            UnitExpression             expression = new UnitExpression(commodityIndex, aliasMap, converter, helper);

            expression.Execute("glob glob silver is 34 Credits");
            Assert.True(commodityIndex.Exists("silver"));
            Assert.Equal <double>(17, commodityIndex.GetPriceByCommodity("silver"));
            expression.Execute("glob prok iron is 400 Credits");
            Assert.Equal <double>(100, commodityIndex.GetPriceByCommodity("iron"));
        }
示例#5
0
        static void Main(string[] args)
        {
            try
            {
                // The code provided will print ‘Hello World’ to the console.
                // Press Ctrl+F5 (or go to Debug > Start Without Debugging) to run your app.
                Console.WriteLine("--- Merchant Galaxy --- ");
                Console.WriteLine();

                string   path     = "../../inputData.txt";
                string   readText = File.ReadAllText(path);
                string[] lines    = readText.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                Console.WriteLine("--- Input Start ---");
                Console.WriteLine(readText);
                Console.WriteLine("--- Input End ---");

                Console.WriteLine();
                Console.WriteLine("--- Output Start ---");

                #region "Initialize components for the conversions"

                AliasMapper       aliasMap       = new AliasMapper();
                IDecimalConverter converter      = new RomanConverter();
                CommodityIndex    commodityIndex = new CommodityIndex();

                #endregion

                ExpressionParser parser = new ExpressionParser(aliasMap, converter, commodityIndex);
                foreach (string line in lines)
                {
                    parser.Parse(line);
                }

                Console.WriteLine("--- Output End ---");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.Message);
            }
        }
示例#6
0
        static void Main(string[] args)
        {
            Console.WriteLine("--- ROMAN TO DECIMAL CONVERTER --- ");
            Console.WriteLine();

            if (args == null || args.Length == 0)
            {
                Console.WriteLine("Please specify a filename as a parameter.");
                return;
            }

            string path = args[0];

            // Open the file to read from.
            string readText = File.ReadAllText(path);

            string[] lines = readText.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine("--- Input Start ---");
            Console.WriteLine(readText);
            Console.WriteLine("--- Input End ---");

            Console.WriteLine();
            Console.WriteLine("--- Output Start ---");

            #region "Initialize required components for the convertions"

            AliasMapper       aliasMap       = new AliasMapper();
            IDecimalConverter converter      = new RomanConverter();
            CommodityIndex    commodityIndex = new CommodityIndex();

            #endregion

            ExpressionParser parser = new ExpressionParser(aliasMap, converter, commodityIndex);
            foreach (string line in lines)
            {
                parser.Parse(line);
            }

            Console.WriteLine("--- Output End ---");
            Console.ReadLine();
        }
示例#7
0
 public ExpressionValidationHelper(AliasMapper aliasMap, CommodityIndex commodityIndex)
 {
     this.aliasMap       = aliasMap;
     this.commodityIndex = commodityIndex;
 }
        public static List <IExpression> GetExpressions(AliasMapper aliasMap, IDecimalConverter converter, CommodityIndex commodityIndex, ExpressionValidationHelper helper)
        {
            List <IExpression> expressions = new List <IExpression>();

            expressions.Add(new AliasExpression(aliasMap));
            expressions.Add(new UnitExpression(commodityIndex, aliasMap, converter, helper));
            expressions.Add(new AliasQuestionExpression(aliasMap, converter, helper));
            expressions.Add(new UnitQuestionExpression(commodityIndex, aliasMap, converter, helper));
            expressions.Add(new  CommodityConversionExpression(commodityIndex, aliasMap, converter, helper));

            return(expressions);
        }
 public ExpressionParser(AliasMapper aliasMap, IDecimalConverter converter, CommodityIndex commodityIndex)
 {
     helper      = new ExpressionValidationHelper(aliasMap, commodityIndex);
     expressions = RomanToDecimalFactory.GetExpressions(aliasMap, converter, commodityIndex, helper);
 }