コード例 #1
0
        public void SalaryRequirementPrinterCreationTest()
        {
            IDataPrinter salaryRequirementPrinter = new SalaryRequirementPrinter();

            Assert.NotNull(salaryRequirementPrinter);
            Assert.IsType <SalaryRequirementPrinter>(salaryRequirementPrinter);
        }
コード例 #2
0
        public void SalaryRequirementPrinterPrintStringNotEmptyTest()
        {
            IDataPrinter salaryRequirementPrinter = new SalaryRequirementPrinter();

            var result = salaryRequirementPrinter.PrintString(_rootManager);

            Assert.NotEmpty(result);
        }
コード例 #3
0
        public void SalaryRequirementPrinterPrintStringTest()
        {
            IDataPrinter salaryRequirementPrinter = new SalaryRequirementPrinter();

            var result = salaryRequirementPrinter.PrintString(_rootManager);

            var expectedString = "Total salary: $552,000.00";

            Assert.Equal(expectedString, result);
        }
コード例 #4
0
        public void SalaryRequirementPrinterPrintStringArgumentExceptionTest()
        {
            IDataPrinter salaryRequirementPrinter = new SalaryRequirementPrinter();

            Assert.Throws <ArgumentException>(() => salaryRequirementPrinter.PrintString(null));
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: harrider/CodingChallenge
        // Main
        static void Main(string[] args)
        {
            // Try to load AppSettings.json configuration file first
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Environment.CurrentDirectory)
                          .AddJsonFile(_AppSettingsFileName);

            // Read the AppSettings file and create a ConfigurationRoot object
            var configs = builder.Build();


            // Get the Employee Hierarchy filename from the AppSettings file
            var employeeHierarchyFileName = configs[_AppSetting_HierarchyFileName];

            // Throw exception if there was a problem
            if (String.IsNullOrEmpty(employeeHierarchyFileName))
            {
                throw new ApplicationException($"ERROR :: Problem reading App Setting '{_AppSetting_HierarchyFileName}'!");
            }


            // Create filepath to Employee Hierarchy json file
            var employeeHierarchyFilePath = Path.Combine(Environment.CurrentDirectory, employeeHierarchyFileName);


            // Convert AppSettings parameter 'SortHierarchyOutput' to Boolean
            var castSortEmployeeHierarchySuccess = bool.TryParse(configs[_AppSetting_SortHierarchyOutput], out bool sortEmployeeHierarchy);

            if (castSortEmployeeHierarchySuccess == false)
            {
                throw new ApplicationException($"ERROR :: Problem reading App Setting '{_AppSetting_SortHierarchyOutput}'!");
            }


            // Use the Composition Root & Dependency Injection patterns to compose the application's functionality
            // IFormatReader formatReader = new MockFormatReader();
            IFormatReader formatReader     = new JsonFormatReader(employeeHierarchyFilePath);
            IDataReader   dataReader       = new DataReader(formatReader);
            IDataPrinter  hierarchyPrinter = null;


            // If AppSettings parameter 'SortHierarchyOutput' set to True: create 'SortedHierarchyPrinter'
            //  otherwise, create an unsorted 'HierarchyPrinter'
            if (sortEmployeeHierarchy)
            {
                hierarchyPrinter = new SortedHierarchyPrinter();
            }
            else
            {
                hierarchyPrinter = new HierarchyPrinter();
            }


            // Create the Salaray Requirement Printer
            IDataPrinter salaryRequirementPrinter = new SalaryRequirementPrinter();


            // Read Employee data from the data source
            var rootManager = dataReader.Read();


            // Get String representations for the Employee Hierarchy & Salary Requirement
            var hierarchyString         = hierarchyPrinter.PrintString(rootManager);
            var salaryRequirementString = salaryRequirementPrinter.PrintString(rootManager);


            // Print the Employee Hierarchy & Salary Requirement
            Console.WriteLine(hierarchyString);
            Console.WriteLine(salaryRequirementString);

            // Keep the console window open
            Console.WriteLine("\n\nPress 'enter' to exit...");
            Console.ReadLine();
        }