Class ProjectPipelineAdoptionExclusionTests
EditMode tests for Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineAdoption.IsUnselectedShippedTask(System.String,System.Collections.Generic.IReadOnlyList{System.String}) — the predicate
SystemAdoptionPlanner uses to keep a deselected attributed system's shipped task out of
the profile-creation adoption closure, reached through the shipped canonical profile's own
Tasks[] object reference. The first four cases below drive the predicate directly with
fabricated path strings — proof of the string matching alone. The two Plan_... cases exercise
the real thing end to end: the actual shipped canonical profile, the actual attributed-system catalog,
and the actual Plan(IReadOnlyList<string>, string, Func<string, bool>)
call a real adoption run makes — one proving inclusion when selected, the other proving the predicate
itself excludes what the closure walk still discovers when deselected.
Inherited Members
Namespace: Serenity.CreateGame.Tests.Editor
Assembly: Serenity.CreateGame.Tests.Editor.dll
Syntax
public class ProjectPipelineAdoptionExclusionTests
Constructors
ProjectPipelineAdoptionExclusionTests()
Declaration
public ProjectPipelineAdoptionExclusionTests()
Methods
IsUnselectedShippedTask_EmptySelection_ExcludesEveryShippedTask()
Declaration
public void IsUnselectedShippedTask_EmptySelection_ExcludesEveryShippedTask()
IsUnselectedShippedTask_PathIsNotARecognizedShippedTaskAtAll_IsNeverExcluded()
Declaration
public void IsUnselectedShippedTask_PathIsNotARecognizedShippedTaskAtAll_IsNeverExcluded()
IsUnselectedShippedTask_ShippedTaskInSelection_IsNeverExcluded()
Declaration
public void IsUnselectedShippedTask_ShippedTaskInSelection_IsNeverExcluded()
IsUnselectedShippedTask_ShippedTaskNotInSelection_IsExcluded()
Declaration
public void IsUnselectedShippedTask_ShippedTaskNotInSelection_IsExcluded()
Plan_RealShippedProfileWithCutscenePlayerDeselected_ExcludesItsSplashTasksFoundThroughTheProfile()
The exclusion counterpart of Plan_RealShippedProfileWithCutscenePlayerSelected_CarriesItsFamilyThroughThePlan():
with Cutscene Player deselected, the closure walk over the real shipped profile still DISCOVERS
its three splash tasks — they are genuine Tasks[] object references on the profile, not
something this test adds — so their absence from the plan below proves
Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineAdoption.IsUnselectedShippedTask(System.String,System.Collections.Generic.IReadOnlyList{System.String}) actively excluded them, not merely
that nothing happened to reach them.
Declaration
public void Plan_RealShippedProfileWithCutscenePlayerDeselected_ExcludesItsSplashTasksFoundThroughTheProfile()
Plan_RealShippedProfileWithCutscenePlayerSelected_CarriesItsFamilyThroughThePlan()
Runs Plan(IReadOnlyList<string>, string, Func<string, bool>)
— the exact call Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectPipelineAdoption.TryRun(System.String,System.Collections.Generic.IReadOnlyList{System.String},System.Action{System.String},System.String@,System.Collections.Generic.IReadOnlyList{System.String}@,System.Collections.Generic.IReadOnlyList{System.String}@,System.String@) makes for a real "create a new game"
run — over the real shipped canonical profile (Serenity.CreateGame.Infrastructure.Editor.SerenityBootTaskCatalog.ShippedProfilePath)
and the real attributed-system catalog (Descriptors),
with Cutscene Player selected in one call and deselected in the other. Every task path resolved
below already exists as a shipped asset, so neither call creates anything. Read-only throughout:
Plan only ever computes destination path strings, so no fixture cleanup is needed.
Declaration
public void Plan_RealShippedProfileWithCutscenePlayerSelected_CarriesItsFamilyThroughThePlan()