public void RawInputAndConfigIsCalculated()
        {
            // parse streamed input
            string formattedInput =
                "1\tAvePolLoanYield\t0.00\t0.04\n" +
                "1\tCashPrem\t3.23\t4.12";

            var sceneProjector = new SceneProjector('\t');
            var inputStream    = sceneProjector.Map(formattedInput.Split('\n'));

            // parse calculations
            string formattedConfig =
                "CashPrem\tAverage\tMaxValue\n" +
                "AvePolLoanYield\tMaxValue\tLastValue";

            var calcProjector = new CalculationProjector('\t');
            var config        = calcProjector.Map(formattedConfig.Split('\n')).ToList();

            // run calc
            var output = Calculator.RunCalculations(inputStream, config).ToList();

            Assert.That(output[0].VarName, Is.EqualTo("CashPrem"));
            Assert.That(output[0].Result, Is.EqualTo(4.12m));
            Assert.That(output[1].VarName, Is.EqualTo("AvePolLoanYield"));
            Assert.That(output[1].Result, Is.EqualTo(0.04m));
        }
        public void SingleLineLoadsAsScene()
        {
            string input =
                "1\tAvePolLoanYield\t0.00\t0.04";

            IProjector<Scene> sut = new SceneProjector('\t');
            var output = sut.Map(new[] { input });

            Assert.That(output.First().VarName, Is.EqualTo("AvePolLoanYield"));
            Assert.That(output.First().Values, Is.EqualTo(new decimal[] { 0.00m, 0.04m }));
        }
        public void SingleLineLoadsAsScene()
        {
            string input =
                "1\tAvePolLoanYield\t0.00\t0.04";

            IProjector <Scene> sut = new SceneProjector('\t');
            var output             = sut.Map(new[] { input });

            Assert.That(output.First().VarName, Is.EqualTo("AvePolLoanYield"));
            Assert.That(output.First().Values, Is.EqualTo(new decimal[] { 0.00m, 0.04m }));
        }
        public void MultipleLineLoadsScenes()
        {
            string input =
                "1\tAvePolLoanYield\t0.00\t0.04\n" +
                "1\tCashPrem\t3.23\t4.12";

            IProjector<Scene> sut = new SceneProjector('\t');
            var output = sut.Map(input.Split('\n')).ToList();

            Assert.That(output[0].VarName, Is.EqualTo("AvePolLoanYield"));
            Assert.That(output[0].Values, Is.EqualTo(new decimal[] { 0.00m, 0.04m }));
            Assert.That(output[1].VarName, Is.EqualTo("CashPrem"));
            Assert.That(output[1].Values, Is.EqualTo(new decimal[] { 3.23m, 4.12m }));
        }
        public void MultipleLineLoadsScenes()
        {
            string input =
                "1\tAvePolLoanYield\t0.00\t0.04\n" +
                "1\tCashPrem\t3.23\t4.12";

            IProjector <Scene> sut = new SceneProjector('\t');
            var output             = sut.Map(input.Split('\n')).ToList();

            Assert.That(output[0].VarName, Is.EqualTo("AvePolLoanYield"));
            Assert.That(output[0].Values, Is.EqualTo(new decimal[] { 0.00m, 0.04m }));
            Assert.That(output[1].VarName, Is.EqualTo("CashPrem"));
            Assert.That(output[1].Values, Is.EqualTo(new decimal[] { 3.23m, 4.12m }));
        }