コード例 #1
0
        private static decimal TotalContractedVolume(long contractId)
        {
            var contractFile            = Path.GetFullPath(@"..\..\DataFiles\Contracts.xml");
            var contractProductFile     = Path.GetFullPath(@"..\..\DataFiles\ContractProducts.xml");
            var contractProductSiteFile =
                Path.GetFullPath(@"..\..\DataFiles\ContractProductSites.xml");
            var siteVolumeFile = Path.GetFullPath(@"..\..\DataFiles\SiteVolumes.xml");

            var calculculator = new SiteVolumeCalculator();
            var forecaster    = new SiteVolumeForecaster(calculculator);

            var contractReader = new ContractReader(contractFile);
            var contractData   = new ContractData(contractReader);
            var contractRepo   = new ContractRepository(contractData);


            var contractProductReader = new ContractProductReader(contractProductFile);
            var contractProductData   = new ContractProductData(contractProductReader);
            var productsRepo          = new ContractProductRepository(contractProductData);


            var contractProductSiteReader =
                new ContractProductSiteReader(contractProductSiteFile);
            var contractProductSiteData = new ContractProductSiteData(contractProductSiteReader);
            var sitesRepo =
                new ContractProductSiteRepository(contractProductSiteData);


            var contractProductSiteVolumeReader =
                new ContractProductSiteVolumeReader(siteVolumeFile);
            var contractProductSiteVolumeData =
                new ContractProductSiteVolumeData(contractProductSiteVolumeReader);
            var volumesRepo =
                new ContractProductSiteVolumeRepository(contractProductSiteVolumeData);


            var contract  = contractRepo.Contract(x => x.Id == contractId);
            var contracts = contractRepo.Contracts().ToList();

            var contractProducts     = productsRepo.Records().ToList();
            var contractProductSites = sitesRepo.Records().ToList();
            var siteVolumes          = volumesRepo.Records().ToList();

            var total = forecaster.TotalContractedVolume(contract, contracts,
                                                         contractProducts, contractProductSites, siteVolumes);

            return(total);
        }
コード例 #2
0
        public void DecoupleSiteVolumeCalculatorFromForecaster()
        {
            var contract  = ContractReaderStub.Contract();
            var contracts = ContractReaderStub.Contracts();
            var products  = ContractProductReaderStub.Products();
            var sites     = ContractProductSiteReaderStub.Sites();
            var volumes   = ContractProductSiteVolumeReaderStub.SomeVolumes();

            var volumeCalculator =
                new SiteVolumeCalculator();
            var volumeForecaster = new SiteVolumeForecaster(volumeCalculator);

            var actualResult = volumeForecaster.TotalContractedVolume(
                contract, contracts,
                products,
                sites,
                volumes);

            Assert.AreEqual(250, actualResult);
        }