コード例 #1
0
        public void Read()
        {
            var reader = new DependenciesReader();
            var data   = new[]
            {
                "1 ()",
                "2 ()",
                "3 (1)",
                "4 (2,3)",
            };

            var dependencies = reader.Read(data).RootNodes;

            Assert.NotNull(dependencies);
            Assert.NotEmpty(dependencies);
            var orderedDependencies = dependencies.OrderBy(p => p.Id).ToArray();

            Assert.Collection(orderedDependencies,
                              p => Assert.Equal(1, p.Id),
                              p => Assert.Equal(2, p.Id));

            Assert.Empty(orderedDependencies[0].Parents);
            Assert.Collection(orderedDependencies[0].Children, p => Assert.Equal(3, p.Id));

            Assert.Empty(orderedDependencies[1].Parents);
            Assert.Collection(orderedDependencies[1].Children, p => Assert.Equal(4, p.Id));

            var fourNode = orderedDependencies[1].Children.First();

            Assert.Empty(fourNode.Children);
            Assert.Collection(fourNode.Parents.OrderBy(p => p.Id),
                              p => Assert.Equal(2, p.Id),
                              p => Assert.Equal(3, p.Id));
        }
コード例 #2
0
        public void GetOptimalSchedule(string graphData, string timeInformation, string expected)
        {
            var reader = new DependenciesReader();
            var graph  = reader.Read(graphData.Split(Separator, StringSplitOptions.RemoveEmptyEntries));
            var additionalInformationReader = new AdditionalInformationReader();

            additionalInformationReader.FillData(timeInformation.Split(Separator, StringSplitOptions.RemoveEmptyEntries), graph);

            var scheduleGenerator = new ScheduleGenerator(graph);


            var actual = scheduleGenerator.GetOptimalSchedule().ToArray();

            var formattedActual = string.Join(" ", actual.Select(p => p.Id.ToString(CultureInfo.InvariantCulture)));

            _testOutput.WriteLine(formattedActual);

            Assert.Equal(expected, formattedActual);
        }
コード例 #3
0
        public void Generate(string graphData, string expectedData)
        {
            var reader = new DependenciesReader();
            var graph  = reader.Read(graphData.Split(Separator, StringSplitOptions.RemoveEmptyEntries));

            var scheduleGenerator = new ScheduleGenerator(graph);
            var actual            = scheduleGenerator.Generate().ToArray();

            var expected = expectedData.Split(Separator, StringSplitOptions.RemoveEmptyEntries).OrderBy(p => p).ToArray();

            var formattedActual = new List <string>();

            foreach (var schedule in actual)
            {
                var formattedString = string.Join(" ", schedule.Select(p => p.Id.ToString(CultureInfo.InvariantCulture)));
                _testOutput.WriteLine(formattedString);
                formattedActual.Add(formattedString);
            }

            formattedActual.Sort();

            Assert.Equal(expected, formattedActual);
            Assert.Equal(expected.Length, actual.Length);
        }