logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    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.

    Inheritance
    object
    ProjectPipelineCompletionRulesTests
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    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()
    In this article
    © 2026 Serenity. All Rights Reserved