logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class SequencePlayerCreatorTests

    EditMode tests for SequencePlayerCreator. Every test targets fixture paths under a private temp folder — the real project's own SequencePlayer assets, if any, are never touched — and every test passes an explicit DuplicateIdSearchFolder pinned to Serenity.SequencePlayer.Tests.Editor.Builder.SequencePlayerCreatorTests.TempFolder so every project-wide scan is hermetic by construction. Scene placement (CreateSequencePlayerWindow.PlaceServiceInOpenScene) is intentionally NOT covered here: it mutates editor-scene state (creates a GameObject in whatever scene happens to be open), which is exactly the kind of side effect these hermetic, fixture-scoped tests are built to avoid touching.

    Inheritance
    object
    SequencePlayerCreatorTests
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    Namespace: Serenity.SequencePlayer.Tests.Editor.Builder
    Assembly: Serenity.SequencePlayer.Tests.Editor.dll
    Syntax
    public class SequencePlayerCreatorTests

    Constructors

    SequencePlayerCreatorTests()

    Declaration
    public SequencePlayerCreatorTests()

    Methods

    Create_ChangedDefinitionIdNotMatchingAnyExistingAssetInFolder_CreatesANewAssetInsteadOfEditing()

    Declaration
    public void Create_ChangedDefinitionIdNotMatchingAnyExistingAssetInFolder_CreatesANewAssetInsteadOfEditing()

    Create_ExistingDefinitionFileRemovedBeforeSecondRun_RollsBackTheFullFieldSetIncludingStages()

    Declaration
    public void Create_ExistingDefinitionFileRemovedBeforeSecondRun_RollsBackTheFullFieldSetIncludingStages()

    Create_ExistingSettingsLosesADefinition_WarnsUnlinkButLeavesTheFileOnDisk()

    Declaration
    public void Create_ExistingSettingsLosesADefinition_WarnsUnlinkButLeavesTheFileOnDisk()

    Create_ExistingSettingsReorderedAndExtendedFailsAtItsOwnVerify_RestoresOriginalOrderAndRollsBackTheNewDefinition()

    CRITICAL coverage for SettingsSnapshot.RestoreOnto. The first run creates a two-definition settings asset [seq_a, seq_b]. The second run mutates the EXISTING settings asset through ApplySettingsFields — reordering to [seq_b, seq_a] AND adding a brand-new third definition (seq_c) — then the settings asset's own VerifyAssetWasWrittenToDisk fails (its file was deleted directly off disk). This also exercises the Serenity.Global.Infrastructure.Editor.Validation.References.SerenitySafeDeleteScope suppression the type doc on SequencePlayerCreator.Create calls out: at the moment rollback deletes the freshly-created seq_c asset, the settings object still holds a LIVE (dirty, not-yet-reverted) reference to it in memory. The assertion that seq_c's file is actually gone from disk is the proof the suppression did its job.

    Declaration
    public void Create_ExistingSettingsReorderedAndExtendedFailsAtItsOwnVerify_RestoresOriginalOrderAndRollsBackTheNewDefinition()

    Create_OrderIsInputOrderNotAlphabetical()

    Declaration
    public void Create_OrderIsInputOrderNotAlphabetical()

    Create_RegisterAsAddressablesFalse_LeavesAddressablesUntouched()

    Declaration
    public void Create_RegisterAsAddressablesFalse_LeavesAddressablesUntouched()

    Create_RegisterAsAddressablesTrue_TagsBothDefinitionsAndSettingsWithModuleSequencePlayer()

    Declaration
    public void Create_RegisterAsAddressablesTrue_TagsBothDefinitionsAndSettingsWithModuleSequencePlayer()

    Create_ReorderingAnExistingSettings_PersistsTheNewOrder()

    Declaration
    public void Create_ReorderingAnExistingSettings_PersistsTheNewOrder()

    Create_UpdatingExistingAssets_PreservesTheOriginalGuids()

    Declaration
    public void Create_UpdatingExistingAssets_PreservesTheOriginalGuids()

    Create_ValidInput_AssignsANonEmptyGuidToEachAsset()

    Declaration
    public void Create_ValidInput_AssignsANonEmptyGuidToEachAsset()

    Create_ValidInput_CreatesDefinitionsAndOrderedSettings()

    Declaration
    public void Create_ValidInput_CreatesDefinitionsAndOrderedSettings()

    Create_ValidInput_SetsNeedsSceneServicePlacementTrue()

    Declaration
    public void Create_ValidInput_SetsNeedsSceneServicePlacementTrue()

    Preview_ExistingAssets_ReportsNotNewWithTheirRealPaths()

    Declaration
    public void Preview_ExistingAssets_ReportsNotNewWithTheirRealPaths()

    Preview_NeverMutatesTheProject()

    Declaration
    public void Preview_NeverMutatesTheProject()

    Preview_NullDefinitionEntry_SkipsItInsteadOfThrowing()

    Declaration
    public void Preview_NullDefinitionEntry_SkipsItInsteadOfThrowing()

    Preview_ReportsStageCountPerDefinition()

    Declaration
    public void Preview_ReportsStageCountPerDefinition()

    SetUp()

    Declaration
    public void SetUp()

    TearDown()

    Declaration
    public void TearDown()

    Validate_AnotherDifferentlyIdSettingsAlreadyCarriesTheLabel_WarnsAboutAmbiguity()

    Declaration
    public void Validate_AnotherDifferentlyIdSettingsAlreadyCarriesTheLabel_WarnsAboutAmbiguity()

    Validate_AnotherSettingsExistsButIsNotLabeled_DoesNotWarnAboutAmbiguity()

    Declaration
    public void Validate_AnotherSettingsExistsButIsNotLabeled_DoesNotWarnAboutAmbiguity()

    Validate_CaseVariantDefinitionIdInSameFolder_IsRejectedBecauseAssetFileNamesCollide()

    Serenity Ids are case-sensitive, but a definition's Id also becomes its asset FILE NAME (NamingSanitizer.FileNameSafe), and file names are NOT case-sensitive on Windows/macOS. So 'seq_orange' and 'Seq_Orange' would collide on disk — one asset silently overwriting the other — even though they are different, unrelated Ids at runtime. Validate(Input) must reject this with an error (not merely warn), mirroring PrefetchPolicyCreator's own case-insensitive uniqueness check, and Create(Input) must refuse to run at all.

    Declaration
    public void Validate_CaseVariantDefinitionIdInSameFolder_IsRejectedBecauseAssetFileNamesCollide()

    Validate_DuplicateDefinitionIdElsewhere_WarnsWithoutBlocking()

    Declaration
    public void Validate_DuplicateDefinitionIdElsewhere_WarnsWithoutBlocking()

    Validate_DuplicateDefinitionIdWithinBatch_ReturnsError()

    Declaration
    public void Validate_DuplicateDefinitionIdWithinBatch_ReturnsError()

    Validate_DuplicateSettingsIdElsewhere_WarnsWithoutBlocking()

    Declaration
    public void Validate_DuplicateSettingsIdElsewhere_WarnsWithoutBlocking()

    Validate_DuplicateStageIdWithinDefinition_WarnsWithoutBlocking()

    Deliberate deviation from the definition/settings-Id rule: a duplicate stage Id within one definition never collides two assets (a stage is a plain list entry, not a separately resolved asset), and the runtime (UnitySequencePlayerService.PlayDefinitionAsync) iterates stages strictly by list position, never by Id — so this is a warning, not an error, unlike the definition/settings same-batch Id collision above.

    Declaration
    public void Validate_DuplicateStageIdWithinDefinition_WarnsWithoutBlocking()

    Validate_EmptyDefinitionId_ReturnsError()

    Declaration
    public void Validate_EmptyDefinitionId_ReturnsError()

    Validate_EmptySettingsId_ReturnsError()

    Declaration
    public void Validate_EmptySettingsId_ReturnsError()

    Validate_EmptyStageId_WarnsWithoutBlocking()

    Declaration
    public void Validate_EmptyStageId_WarnsWithoutBlocking()

    Validate_InvalidOutputFolderPath_ReturnsError()

    Declaration
    public void Validate_InvalidOutputFolderPath_ReturnsError()

    Validate_NullDefinitionEntry_ReturnsErrorInsteadOfThrowing()

    Declaration
    public void Validate_NullDefinitionEntry_ReturnsErrorInsteadOfThrowing()

    Validate_NullInput_ReturnsMissingInputError()

    Declaration
    public void Validate_NullInput_ReturnsMissingInputError()

    Validate_SameDefinitionIdInItsOwnFolder_IsExcludedFromTheDuplicateWarning()

    Declaration
    public void Validate_SameDefinitionIdInItsOwnFolder_IsExcludedFromTheDuplicateWarning()

    Validate_SameSettingsIdInItsOwnFolder_IsExcludedFromTheDuplicateWarning()

    Declaration
    public void Validate_SameSettingsIdInItsOwnFolder_IsExcludedFromTheDuplicateWarning()

    Validate_ZeroDefinitions_WarnsWithoutBlocking()

    Declaration
    public void Validate_ZeroDefinitions_WarnsWithoutBlocking()

    Validate_ZeroStagesInDefinition_WarnsWithoutBlocking()

    Declaration
    public void Validate_ZeroStagesInDefinition_WarnsWithoutBlocking()
    In this article
    © 2026 Serenity. All Rights Reserved