public void LinkToWithCondition() { var owner = new Mock <IOwnScheduleDefinitions>(); ScheduleElementId id = null; var scheduleBuilder = new Mock <IBuildFixedSchedules>(); { scheduleBuilder.Setup( s => s.LinkTo( It.IsAny <IScheduleVertex>(), It.IsAny <IScheduleVertex>(), It.IsAny <ScheduleElementId>())) .Callback <IScheduleVertex, IScheduleVertex, ScheduleElementId>( (s, e, c) => id = c); } var builder = new ScheduleDefinitionBuilder(owner.Object, scheduleBuilder.Object); var start = new MarkHistoryVertex(0); var end = new InsertVertex(1); var condition = new ScheduleConditionRegistrationId(typeof(string), 0, "a"); builder.LinkTo(start, end, condition); Assert.IsNotNull(id); }
/// <summary> /// Adds a vertex which indicates that the current values of all history-enabled data should /// be stored in the <see cref="Timeline"/> so that it is possible to revert to the /// current point in time later on. /// </summary> /// <returns>The vertex that indicates that the current state should be stored in the <see cref="Timeline"/>.</returns> public MarkHistoryVertex AddHistoryMarkingPoint() { var result = new MarkHistoryVertex(m_Schedule.VertexCount); m_Schedule.AddVertex(result); return(result); }
public void InsertInWithNoMoreRemainingInserts() { var builder = new FixedScheduleBuilder(); var insertVertex = builder.AddInsertPoint(1); builder.LinkFromStart(insertVertex); builder.LinkToEnd(insertVertex); var markHistoryVertex1 = new MarkHistoryVertex(10); var newInserts = builder.InsertIn(insertVertex, markHistoryVertex1); Assert.IsNull(newInserts.Item1); Assert.IsNull(newInserts.Item2); }
public void InsertIn() { var conditionId1 = new ScheduleElementId(); var conditionId2 = new ScheduleElementId(); var builder = new FixedScheduleBuilder(); var insertVertex = builder.AddInsertPoint(); builder.LinkFromStart(insertVertex, conditionId1); builder.LinkToEnd(insertVertex, conditionId2); var markHistoryVertex = new MarkHistoryVertex(10); builder.InsertIn(insertVertex, markHistoryVertex); var schedule = builder.Build(); int index = 0; var vertexTypes = new List <Type> { typeof(StartVertex), typeof(InsertVertex), typeof(MarkHistoryVertex), typeof(InsertVertex), typeof(EndVertex) }; var conditions = new List <ScheduleElementId> { conditionId1, null, null, conditionId2 }; schedule.TraverseAllScheduleVertices( schedule.Start, (vertex, edges) => { Assert.AreEqual(vertexTypes[index], vertex.GetType()); if (index < conditions.Count) { Assert.AreEqual(1, edges.Count()); Assert.AreEqual(conditions[index], edges.First().Item1); } index++; return(true); }); }
public void AddHistoryMarkingPoint() { var owner = new Mock <IOwnScheduleDefinitions>(); MarkHistoryVertex startVertex = new MarkHistoryVertex(0); var scheduleBuilder = new Mock <IBuildFixedSchedules>(); { scheduleBuilder.Setup(s => s.AddHistoryMarkingPoint()) .Returns(startVertex); } var builder = new ScheduleDefinitionBuilder(owner.Object, scheduleBuilder.Object); var vertex = builder.AddHistoryMarkingPoint(); Assert.AreSame(startVertex, vertex); }
public void LinkToWithoutCondition() { var owner = new Mock <IOwnScheduleDefinitions>(); var scheduleBuilder = new Mock <IBuildFixedSchedules>(); { scheduleBuilder.Setup( s => s.LinkTo( It.IsAny <IScheduleVertex>(), It.IsAny <IScheduleVertex>(), It.IsAny <ScheduleElementId>())) .Callback <IScheduleVertex, IScheduleVertex, ScheduleElementId>( (s, e, c) => Assert.IsNull(c)); } var builder = new ScheduleDefinitionBuilder(owner.Object, scheduleBuilder.Object); var start = new MarkHistoryVertex(0); var end = new InsertVertex(1); builder.LinkTo(start, end); }