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)); }
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); }
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); }