public UnitExpression(AliasMapper aliasMap, MetalMapper metalMap, IDecimalConverter converter, ExpressionValidationHelper helper)
 {
     _aliasMap  = aliasMap;
     _metalMap  = metalMap;
     _converter = converter;
     _helper    = helper;
 }
예제 #2
0
        static void Main(string[] args)
        {
            try
            {
                string   inputPath  = "../../input.txt";
                string   inputText  = File.ReadAllText(inputPath);
                string[] inputLines = inputText.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

                Console.WriteLine(inputText);
                Console.WriteLine();

                AliasMapper       aliasMap  = new AliasMapper();
                IDecimalConverter converter = new RomanConverter();
                MetalMapper       metalMap  = new MetalMapper();
                ExpressionParser  parser    = new ExpressionParser(aliasMap, converter, metalMap);

                foreach (string line in inputLines)
                {
                    parser.Parse(line);
                }
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
예제 #3
0
 public MetalExpression(PseudonymMapper pseudonymMap, MetalMapper metalMap, IDecimalConverter converter, ExpressionValidationHelper helper)
 {
     _pseudonymMap = pseudonymMap;
     _metalMap     = metalMap;
     _converter    = converter;
     _helper       = helper;
 }
        public void UnitExpressionTest()
        {
            PseudonymMapper pseudonymMap = new PseudonymMapper();
            RomanConverter  converter    = new RomanConverter();
            MetalMapper     metalMap     = new MetalMapper();

            pseudonymMap.AddPseudonym("GLOB", "I");
            pseudonymMap.AddPseudonym("pish", "X");
            ExpressionValidationHelper helper     = new ExpressionValidationHelper(pseudonymMap, metalMap);
            UnitExpression             expression = new UnitExpression(pseudonymMap, metalMap, converter, helper);

            expression.Execute("pish glob Iron is 110 Credits");
            Assert.True(metalMap.Exists("Iron"));
            Assert.Equal <double>(10, metalMap.GetPriceByMetal("Iron"));
            expression.Execute("glob pish Iron is 6300 Credits");
            Assert.Equal <double>(700, metalMap.GetPriceByMetal("Iron"));
        }
예제 #5
0
        public void UnitExpressionTest()
        {
            AliasMapper    AliasMap  = new AliasMapper();
            RomanConverter converter = new RomanConverter();
            MetalMapper    metalMap  = new MetalMapper();

            AliasMap.AddAlias("glob", "I");
            AliasMap.AddAlias("pish", "X");
            ExpressionValidationHelper helper     = new ExpressionValidationHelper(AliasMap, metalMap);
            UnitExpression             expression = new UnitExpression(AliasMap, metalMap, converter, helper);

            expression.Execute("glob pish Iron is 900 Credits");
            Assert.True(metalMap.Exists("Iron"));
            Assert.Equal <double>(100, metalMap.GetPriceByMetal("Iron"));

            expression.Execute("pish pish Iron is 400 Credits");
            Assert.Equal <double>(20, metalMap.GetPriceByMetal("Iron"));
        }
예제 #6
0
        static void Main(string[] args)
        {
            Console.WriteLine();
            string path     = "../../input.txt";
            string readText = File.ReadAllText(path);

            string[] lines = readText.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine(readText);
            Console.WriteLine();
            AliasMapper       AliasMap  = new AliasMapper();
            IDecimalConverter converter = new RomanConverter();
            MetalMapper       metalMap  = new MetalMapper();
            ExpressionParser  parser    = new ExpressionParser(AliasMap, converter, metalMap);

            foreach (string line in lines)
            {
                parser.Parse(line);
            }
            Console.ReadLine();
        }
예제 #7
0
 public ExpressionValidationHelper(AliasMapper pseudonymMap, MetalMapper metalMap)
 {
     _pseudonymMap = pseudonymMap;
     _metalMap     = metalMap;
 }
        private List <IExpression> GetExpressions(AliasMapper aliasMap, IDecimalConverter converter, MetalMapper metalMap, ExpressionValidationHelper helper)
        {
            List <IExpression> expressions = new List <IExpression>();

            expressions.Add(new AliasExpression(aliasMap));
            expressions.Add(new UnitExpression(aliasMap, metalMap, converter, helper));
            expressions.Add(new AliasQuestionExpression(aliasMap, converter, helper));
            expressions.Add(new UnitQuestionExpression(aliasMap, metalMap, converter, helper));
            expressions.Add(new MetalExpression(aliasMap, metalMap, converter, helper));

            return(expressions);
        }
 public ExpressionParser(AliasMapper aliasMap, IDecimalConverter converter, MetalMapper metalMap)
 {
     helper      = new ExpressionValidationHelper(aliasMap, metalMap);
     expressions = GetExpressions(aliasMap, converter, metalMap, helper);
 }
 public ExpressionValidationHelper(AliasMapper aliasMap, MetalMapper metalMap)
 {
     _aliasMap = aliasMap;
     _metalMap = metalMap;
 }
        private List <IExpression> GetExpressions(PseudonymMapper pseudonymMap, IDecimalConverter converter, MetalMapper metalMap, ExpressionValidationHelper helper)
        {
            List <IExpression> expressions = new List <IExpression>();

            expressions.Add(new PseudonymExpression(pseudonymMap));
            expressions.Add(new UnitExpression(pseudonymMap, metalMap, converter, helper));
            expressions.Add(new PseudonymQuestionExpression(pseudonymMap, converter, helper));
            expressions.Add(new UnitQuestionExpression(pseudonymMap, metalMap, converter, helper));
            expressions.Add(new MetalExpression(pseudonymMap, metalMap, converter, helper));

            return(expressions);
        }
 public ExpressionParser(PseudonymMapper pseudonymMap, IDecimalConverter converter, MetalMapper metalMap)
 {
     helper      = new ExpressionValidationHelper(pseudonymMap, metalMap);
     expressions = GetExpressions(pseudonymMap, converter, metalMap, helper);
 }