public void Sort_MesWesDependOnSys_SysBeforeMesWes()
        {
            // Arrange
            WorkloadInstance w1 = BuildWorkloadInstance(SYS);

            List <string> mesDependencies = new List <string> {
                SYS
            };
            WorkloadInstance w2 = BuildWorkloadInstance(MES, mesDependencies);

            List <string> wesDependencies = new List <string> {
                SYS
            };
            WorkloadInstance w3 = BuildWorkloadInstance(WES, wesDependencies);

            List <WorkloadInstance> workloadInstances = new List <WorkloadInstance>()
            {
                w2, w3, w1
            };

            // Act
            WorkloadInstanceTopologicalSortUtil topologicalSortUtil     = new WorkloadInstanceTopologicalSortUtil(workloadInstances);
            List <WorkloadInstance>             sortedWorkloadInstances = topologicalSortUtil.Sort();

            // Assert
            sortedWorkloadInstances[0].Should().Be(w1);
        }
        public void Sort_EmptyWorkloadInstanceList_EmptyListReturned()
        {
            // Arrange
            List <WorkloadInstance> workloadInstances = new List <WorkloadInstance>();

            // Act
            WorkloadInstanceTopologicalSortUtil topologicalSortUtil     = new WorkloadInstanceTopologicalSortUtil(workloadInstances);
            List <WorkloadInstance>             sortedWorkloadInstances = topologicalSortUtil.Sort();

            // Assert
            sortedWorkloadInstances.Should().HaveCount(0);
        }
        public void New_NullWorkloadInstanceList_ExceptionThrown()
        {
            // Arrange
            bool exceptionThrown = false;
            List <WorkloadInstance> workloadInstances = null;

            // Act
            try
            {
                WorkloadInstanceTopologicalSortUtil topologicalSortUtil = new WorkloadInstanceTopologicalSortUtil(workloadInstances);
            }
            catch (ArgumentNullException)
            {
                exceptionThrown = true;
            }

            exceptionThrown.Should().BeTrue();
        }
        public void Sort_FourElementsWithMultipleDependencies_CorrectSort()
        {
            const string TEST = "Test";

            List <string> sysDependencies = new List <string> {
                MES
            };
            WorkloadInstance w1 = BuildWorkloadInstance(SYS, sysDependencies);

            List <string> mesDependencies = new List <string> {
                TEST
            };
            WorkloadInstance w2 = BuildWorkloadInstance(MES, mesDependencies);

            List <string> wesDependencies = new List <string> {
                SYS, TEST
            };
            WorkloadInstance w3 = BuildWorkloadInstance(WES, wesDependencies);

            WorkloadInstance w4 = BuildWorkloadInstance(TEST);

            List <WorkloadInstance> workloadInstances = new List <WorkloadInstance>()
            {
                w1, w2, w3, w4
            };

            // Act
            WorkloadInstanceTopologicalSortUtil topologicalSortUtil     = new WorkloadInstanceTopologicalSortUtil(workloadInstances);
            List <WorkloadInstance>             sortedWorkloadInstances = topologicalSortUtil.Sort();

            // Assert
            List <WorkloadInstance> expectedSortedList = new List <WorkloadInstance> {
                w4, w2, w1, w3
            };

            for (int i = 0; i < sortedWorkloadInstances.Count; i++)
            {
                sortedWorkloadInstances[i].Should().Be(expectedSortedList[i]);
            }
        }
        public void Sort_ThreeWorkloadInstancesInput_SortedListHasAllWorkloadInstances()
        {
            // Arrange
            WorkloadInstance w1 = BuildWorkloadInstance(SYS);
            WorkloadInstance w2 = BuildWorkloadInstance(MES);
            WorkloadInstance w3 = BuildWorkloadInstance(WES);

            List <WorkloadInstance> workloadInstances = new List <WorkloadInstance>()
            {
                w1, w2, w3
            };

            // Act
            WorkloadInstanceTopologicalSortUtil topologicalSortUtil     = new WorkloadInstanceTopologicalSortUtil(workloadInstances);
            List <WorkloadInstance>             sortedWorkloadInstances = topologicalSortUtil.Sort();

            // Assert
            sortedWorkloadInstances.Should().HaveCount(workloadInstances.Count);
            foreach (var expectedWorkloadInstance in workloadInstances)
            {
                sortedWorkloadInstances.Should().Contain(expectedWorkloadInstance);
            }
        }