Class ProjectPipelineCompletionRulesTests
Pure unit tests for Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineCompletionRules.Plan(System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String},System.Func{System.String,System.String},System.Func{System.String,System.String},System.Collections.Generic.IReadOnlyList{System.String}) — no AssetDatabase: a
synthetic profile task list, synthetic shipped/adopted path pairs and a fake twin resolver stand in for
the real project scan Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineCompletion performs. The real
Serenity.CreateGame.Infrastructure.Editor.BootTaskCanonicalOrder IS the template here, since the placements under test are about
the actual splash tasks' real neighbours.
Inherited Members
Namespace: Serenity.CreateGame.Tests.Editor
Assembly: Serenity.CreateGame.Tests.Editor.dll
Syntax
public class ProjectPipelineCompletionRulesTests
Constructors
ProjectPipelineCompletionRulesTests()
Declaration
public ProjectPipelineCompletionRulesTests()
Methods
Plan_ProfileAlreadyCarriesTheAdoptedTask_PlansNothingForIt()
Declaration
public void Plan_ProfileAlreadyCarriesTheAdoptedTask_PlansNothingForIt()
Plan_ProfileHoldsAShippedTaskWithAnAdoptedTwin_ReplacesItInPlaceWithoutReordering()
Declaration
public void Plan_ProfileHoldsAShippedTaskWithAnAdoptedTwin_ReplacesItInPlaceWithoutReordering()
Plan_ProfileListsTheSameTaskTwice_KeepsTheFirstAndReportsTheDuplicate()
A hand-edited profile can perfectly well list the same task twice. Presence is decided by task NAME everywhere in this rule, so the second entry is a repeat, not an authored order: it is dropped, the first keeps its position, and the caller is told how many entries it removes.
Declaration
public void Plan_ProfileListsTheSameTaskTwice_KeepsTheFirstAndReportsTheDuplicate()
Plan_ProfileMissingEverySplashTask_PlansThemAtTheirCanonicalPositions()
Declaration
public void Plan_ProfileMissingEverySplashTask_PlansThemAtTheirCanonicalPositions()
Plan_RequiredSetOmitsTheSplashTasks_IsEmpty()
Declaration
public void Plan_RequiredSetOmitsTheSplashTasks_IsEmpty()
Plan_ShippedAndAdoptedEntriesForTheSameTask_DropsTheSecondOne()
Declaration
public void Plan_ShippedAndAdoptedEntriesForTheSameTask_DropsTheSecondOne()
Plan_ShippedEntryWithNoTwin_IsPlannedForAdoptionInPlace()
Declaration
public void Plan_ShippedEntryWithNoTwin_IsPlannedForAdoptionInPlace()
Plan_TwinExistsButTheProfileDoesNotListIt_InsertsItWithNothingToAdopt()
The case an earlier adoption run makes routine: the shipped profile's own closure clones every task it references, so a project seeded with the splash tasks DESELECTED still ends up owning their twins. The profile does not list them, so completing it is real work — inserting an existing twin, with nothing left to adopt.
Declaration
public void Plan_TwinExistsButTheProfileDoesNotListIt_InsertsItWithNothingToAdopt()
Plan_UserReorderedTasksByHand_KeepsThatOrderAndOnlyInsertsRelativeToCanonicalNeighbours()
Declaration
public void Plan_UserReorderedTasksByHand_KeepsThatOrderAndOnlyInsertsRelativeToCanonicalNeighbours()