logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Namespace Serenity.UnityGlobal.Tests.Editor

    Classes

    AddressablesOwnershipLabelsTests

    Tests for Serenity.Global.Infrastructure.Editor.Utils.AddressablesOwnershipLabels.IsProjectOwnedPath(System.String): pure string logic, mirroring SerenityEditorPathsTests since it is the direct inverse of Serenity.Global.Infrastructure.Editor.SerenityEditorPaths.IsPackageContentPath(System.String) — the ownership rule the Addressables labeler and auto-labeler both apply.

    BatchAudioImportWindowLabelsTests

    Tests for BatchAudioImportWindowLabels, the label copy every concrete BatchAudioImportWindow<TItem,TInput,TResult,TAsset> declares its own instance of (BatchSoundEffectImportWindow, BatchMusicTrackImportWindow). Its constructor guards every one of its 12 positional strings against null/empty/whitespace, so a missed argument fails fast at the declaring window's static initializer instead of rendering a blank label. The two windows' own SfxLabels/MusicLabels fields stay private, so reading them back still needs reflection.

    EditorPlaybackClockTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.Preview.EditorPlaybackClock.AdvanceTime(System.Single,System.Single,System.Single,System.Boolean,System.Boolean@) — pure step math, no editor-tick wiring.

    EditorTypePickerFiltersTests

    Direct unit tests for Serenity.Global.Infrastructure.Editor.EditorTypePickerFilters's test-assembly-name rule — the shared filter every editor type picker (signal types, interface-implementer object fields, ...) applies so a designer never sees an NUnit test fixture in an authoring dropdown. Covers every naming shape actually present in this project's asmdefs (verified by find Assets -iname "*.asmdef" | grep -i test).

    FoundationEditorTests

    Tests for FoundationEditor. Editor-only.

    FoundationIdReferenceGuiTests

    Tests for the pure resolution logic in Serenity.Global.Infrastructure.Editor.FoundationIdReferenceGui. Editor-only; Serenity.Global.Infrastructure.Editor.FoundationIdReferenceGui.LoadCandidates(System.Type) is not covered here since it depends on a real UnityEditor.AssetDatabase scan.

    GameSettingsValueFieldDrawerTests

    Tests for GameSettingsValueFieldDrawer's parsing/formatting helpers. Editor-only.

    ModelPreviewCameraFramingTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.Preview.ModelPreviewCameraFraming — pure math, no scene objects.

    ModelPreviewContentTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.Preview.ModelPreviewContent. Every fixture is a runtime-built UnityEngine.GameObject (no assets touched), destroyed in TearDown().

    PreviewOrbitStateTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.Preview.PreviewOrbitState — pure math, no scene objects.

    SerenityAssetCreationTransactionTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.SerenityAssetCreationTransaction. Follows the temp-folder hygiene convention of UnityEditorUtilsTests: every fixture asset lives under a private temp folder that is wiped in TearDown(), and any Addressables entry a test registers is removed explicitly (in a finally or in TearDown()) per the project rule that tests must not pollute the real Addressables settings. The ordering Rollback gives a registered Serenity.Global.Infrastructure.Editor.SerenityExistingAssetRestore is tested here too, since Rollback is what owns it — SerenityExistingAssetRestoreTests covers the capture itself.

    SerenityAssetDeleteProbe

    A test seam for asserting what was true AT THE MOMENT one particular asset was deleted — the only place from which SerenityAssetCreationTransaction.Rollback's internal ordering is observable, since everything it does is undone or persisted again by the time the call returns. Records whether Serenity.Global.Infrastructure.Editor.Validation.References.SerenitySafeDeleteAssetProcessor was suppressed and the value of a caller-supplied probe, then always answers UnityEditor.AssetDeleteResult.DidNotDelete so the delete itself proceeds untouched.

    Unity keeps every UnityEditor.AssetModificationProcessor in the editor's callback list for the whole session, this one included, so it stays inert unless a test called Watch(string, Func<object>) for an exact path — and every test that calls it calls StopWatching() in its teardown.

    SerenityAssetIdLookupTestSettings

    A throwaway IFoundationSettings asset type used by SerenityAssetIdLookupTests to exercise the by-Id passes against real assets on disk. Lives in its own same-named file so Unity can bind its script when the tests create it as an asset (mirrors UnityEditorUtilsTestFoundationSettings).

    Deliberately NOT shared with any other suite: the project-wide pass queries by type name, so a type used from two suites would make whole-project assertions depend on the other suite's cleanup.

    SerenityAssetIdLookupTests

    Tests for the two by-Id passes behind every creation engine's duplicate and near-miss reporting. Editor-only, and deliberately built on real assets on disk: the contract is about what UnityEditor.AssetDatabase queries return, which no in-memory double can stand in for.

    SerenityAssetIdRulesTestSettings

    A throwaway IFoundationSettings asset type used by SerenityAssetIdRulesTests to build real Serenity.Global.Infrastructure.Editor.SerenityAssetIdLookup.IdMatches`1 pairs to feed the rules. Lives in its own same-named file so Unity can bind its script when the tests create it as an asset (mirrors SerenityAssetIdLookupTestSettings).

    Deliberately its OWN type rather than a reuse of SerenityAssetIdLookupTestSettings, for the reason that type's doc gives: the by-Id passes query by type name, so a type shared across two suites makes one suite's whole-project assertions depend on the other suite's cleanup.

    SerenityAssetIdRulesTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityAssetIdRules. Like SerenityAssetIdLookupTests these build real assets on disk, because the only way to obtain a Serenity.Global.Infrastructure.Editor.SerenityAssetIdLookup.IdMatches`1 is to run a real pass over them — the struct's constructor is internal precisely so a rule can never be fed a pair no lookup produced.

    Every pass here is folder-scoped. None asks for the whole project, so this suite cannot be perturbed by what the real project ships.

    SerenityAssetPingingTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityAssetPinging. UnityEditor.Selection and UnityEditor.EditorGUIUtility.PingObject(UnityEngine.Object) are editor-UI statics with no observable seam of their own, so the contract exercised here is exactly what a caller can assert on: a resolved asset ends up selected, and a missing one leaves whatever was selected before untouched.

    SerenityCreationValidationResultTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityCreationValidationResult. Unlike its neighbours in this folder it touches no assets on disk: the type is a pure in-memory accumulator, so every case here is a direct assertion about what a validation pass reported and in what order.

    The cases that matter most are the two the inversion onto AuthoringIssue could have changed silently — report order within a severity, and whether a flat view still reflects a finding added after something already read it.

    SerenityDefaultAssetFolderTestAsset

    A throwaway UnityEngine.ScriptableObject type used by SerenityDefaultAssetFolderTests to exercise the majority-folder scan against real assets on disk. Lives in its own same-named file so Unity can bind its script when the tests create it as an asset (mirrors SerenityAssetIdLookupTestSettings).

    Deliberately NOT shared with any other suite: SerenityDefaultAssetFolder queries by t: type name across the whole project, so a type used from two suites would make one suite's project-wide assertions depend on the other suite's fixture placement and cleanup timing.

    SerenityDefaultAssetFolderTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityDefaultAssetFolder's majority-folder scan and its package-exclusion filter. Editor-only, and deliberately built on real assets on disk — the contract is about what UnityEditor.AssetDatabase queries return, which no in-memory double can stand in for. Mirrors the temp-folder SetUp/TearDown pattern of SerenityAssetIdLookupTests.

    SerenityEditorPathsTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityEditorPaths.IsPackageContentPath(System.String): pure string logic, so exercised against plain string literals rather than real assets on disk.

    SerenityEditorTextFieldCommitTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityEditorTextFieldCommit's pending/flush lifecycle, driven entirely through its internal test seams — no real AssetDatabase or Undo traffic, and the real EditorApplication.update tick is never touched (its subscribe/unsubscribe seams are stubbed out for the duration of each test). Editor-only.

    SerenityExistingAssetRestoreTestSettings

    A throwaway asset type for SerenityExistingAssetRestoreTests, carrying one field of every serialization shape a real settings asset mixes — value types, a string, an enum, a list, a live object reference and a polymorphic managed-reference graph — so the forgotten-field test has something to walk. Lives in its own same-named file so Unity can bind its script when the tests create it as an asset (mirrors UnitySingletonSettingsLoaderTestSettings). The payload types are nested rather than top-level: they exist only as this fixture's [SerializeReference] element types.

    SerenityExistingAssetRestoreTestSettings.FlagPayload

    A SerenityExistingAssetRestoreTestSettings.ScratchPayload carrying a flag, the other half of the polymorphism proof.

    SerenityExistingAssetRestoreTestSettings.NumericPayload

    A SerenityExistingAssetRestoreTestSettings.ScratchPayload carrying a number, to prove the restored element keeps its concrete type and not just its base fields.

    SerenityExistingAssetRestoreTestSettings.ScratchPayload

    The managed-reference element base — what makes Payloads polymorphic.

    SerenityExistingAssetRestoreTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.SerenityExistingAssetRestore itself — what a capture puts back, and what it refuses to capture at all. The ordering Serenity.Global.Infrastructure.Editor.SerenityAssetCreationTransaction gives a registered restore is tested by SerenityAssetCreationTransactionTests, the fixture that owns Rollback. Every fixture asset lives under a private temp folder wiped in TearDown() with the safe-delete processor suppressed, the convention UnitySingletonSettingsLoaderTests established; nothing here registers an Addressables entry, so nothing has to be removed from the project's Addressables settings either.

    SerenityPackageContentRelocatorTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.SerenityPackageContentRelocator. The fixture lives under a throwaway folder nested inside Serenity.Global.Infrastructure.Editor.SerenityEditorPaths.AssetsRoot — a real shipped asset cannot stand in here since these tests actually move (and sometimes deliberately fail to move) it. Every root is owned by a ScratchAssetFixture, wiped in both SetUp() and TearDown(); every fixture's GUID is captured the moment it is created (stable across a later move) so TearDown() can remove any Addressables entry before the underlying asset is deleted, and then assert — loudly, not silently — that nothing survives into the next test.

    SerenityProjectOutputFolderRulesTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityProjectOutputFolderRules.IsAcceptableOutputFolder(System.String): pure string logic exercised against plain string literals — no folder needs to exist on disk for any of these cases, since the rule's whole point is that existence is never required.

    SerenityStepWizardWindowTests

    Tests for SerenityStepWizardWindow<TStep> — the descriptor-driven scaffolding that replaced every stepped wizard's hand-rolled header/breadcrumb/body/footer/error-gate quintet. Driven entirely through the base's public and protected seams on Serenity.UnityGlobal.Tests.Editor.SerenityStepWizardTestWindow: no OnGUI pass, so these assert the navigation, visibility and gating rules rather than IMGUI layout — except where a doc block below says otherwise. The frame-ordering tests that need a real repaint drive one through EditorWindow.SendEvent, skipping themselves when a headless run has no graphics device to deliver it. RunFrame_OnAFreshScratchWindow_DoesNotThrowOnItsFirstFrame(), RunFrame_MutatingAShowingRowsTitle_ReProjectsOnTheNextFrame() and TogglingTheHiddenRule_ReProjectsOnTheNextFrameWithoutMovingTheReader() instead drive the non-drawing PrepareFrame preamble directly — they must run headless, since a headless run is exactly where the first one's regression was found — and need no console-error suppression, since PrepareFrame makes no GUILayout/EditorGUILayout call.

    SerenityWebGLResourcesPathsTests

    Tests for the pure path/validation logic of Serenity.Global.Infrastructure.Editor.Utils.WebGL.SerenityWebGLResourcesPaths and the JSON-shape helpers of Serenity.Global.Infrastructure.Editor.Utils.WebGL.SerenityWebGLExportManifest. Covers normalization, Resources-folder detection, asset-path-to-load-key conversion and the structured destination validation rules. Nothing here touches the filesystem or AssetDatabase. Editor-only.

    SerenityWizardActivityLogTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityWizardActivityLog — the shared rich-text status log that replaced every stepped wizard's hand-rolled string _status field and private LogSuccess/LogWarning/LogError/Append methods. Pins the exact markup those wizards built by hand (<color=#RRGGBB>{icon} {message}</color>, tinted from Serenity.Global.Infrastructure.Editor.SerenityWizardGui's own palette) so a future palette or format change is caught here first. Editor-only.

    SerenityWizardDoneStepTests

    Covers Serenity.Global.Infrastructure.Editor.SerenityWizardDoneStep.ForSingleSettingsAsset(System.String,System.String,System.String,System.Action) — the shared Done-step Model factory for a "one project-wide settings asset, created or updated in place" wizard (Menu/Modal/Sound Mixer/UI Service Settings). Pure model-shape test — no window, no IMGUI pass.

    SerenityWizardDropZoneGuiTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityWizardDropZoneGui.FilterAcceptedPaths(System.Collections.Generic.IEnumerable{System.String},System.Func{System.String,System.Boolean},System.Collections.Generic.IEnumerable{System.String}) — the pure half of the shared drag-and-drop zone lifted out of BatchSoundEffectImportWindow and BatchMusicTrackImportWindow. The rest of the type only wraps Unity's DragAndDrop statics and is exercised through the two windows themselves rather than unit-tested directly.

    SerenityWizardFieldRulesTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityWizardFieldRules's pure rule builders. No UnityEditor call, no asset — every rule is a plain Func<string, string>, exercised directly.

    SerenityWizardIdFieldTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityWizardIdFieldResult and the pure validation pass-through behind Serenity.Global.Infrastructure.Editor.SerenityWizardIdField.Draw(UnityEngine.GUIContent,System.String,System.Func{System.String,System.String}) (Serenity.Global.Infrastructure.Editor.SerenityWizardIdField.Evaluate(System.String,System.Func{System.String,System.String}), reached here via its [InternalsVisibleTo("Tests.Editor")] grant). Draw itself calls UnityEditor.EditorGUILayout and needs an active IMGUI layout pass, so it is not exercised here.

    SerenityWizardStepControllerTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityWizardStepController — the shared int-cursor step machine that replaced every stepped wizard's hand-rolled SetStep/GoNext/GoBack/CanGoBack. Covers navigation bounds and the scroll-reset/focus-clear side effect every wizard's old SetStep reproduced by hand. Editor-only.

    SerenityWizardTargetAssetTestSettings

    A trivial UnityEngine.ScriptableObject type used by SerenityWizardTargetAssetTests to exercise Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAsset against real assets on disk. Lives in its own same-named file so Unity can bind its script when the tests create it as an asset (mirrors SerenityDefaultAssetFolderTestAsset).

    SerenityWizardTargetAssetTests

    Tests for Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAsset's get-or-create decision state: mode derivation, ambiguity, the user-pick override, change tracking, and the package-content confirmation gate. Editor-only, and built on real assets on disk for the package-content case — the contract there is about a real shipped asset's path, which no in-memory double can stand in for. Mirrors the temp-folder SetUp/TearDown pattern of SerenityDefaultAssetFolderTests.

    UnityAnimationAssetUtilsTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.UnityAnimationAssetUtils. Every fixture (clip, controller, prefab) is built under a private temp folder and torn down after each test, mirroring ModelAnimationScannerTests. Includes a regression guard pinning the exact keyframe literals ThemeAnimationGenerator.SpecFor(ShowHideAnimation.ScalePop) fed into the overshoot curve builder as they stood immediately before this type was extracted out of ThemeAnimationGenerator.

    UnityAssemblyScannerTests

    Tests for the docs-build assembly scanner helpers that do not require a fabricated Unity Assembly: Serenity.Global.Infrastructure.Editor.Utils.UnityAssemblyScanner.PrepareOutput(Serenity.Global.Infrastructure.Editor.Utils.UnityBuildJob,System.String@,System.String@,System.String@) (derives dll/xml/rsp paths from a Serenity.Global.Infrastructure.Editor.Utils.UnityBuildJob), the empty-sources guard of Serenity.Global.Infrastructure.Editor.Utils.UnityAssemblyScanner.WriteRsp(Serenity.Global.Infrastructure.Editor.Utils.UnityBuildJob,System.String,System.String,System.String,System.Boolean), and the editor-driven Serenity.Global.Infrastructure.Editor.Utils.UnityAssemblyScanner.GatherWork(System.Boolean,System.Boolean,System.String[]) which queries the live CompilationPipeline. The full WriteRsp success path needs a real Unity Assembly (defines / allReferences) that cannot be constructed in a unit test, so only its precondition is asserted here. Editor-only.

    UnityAssetSetClonerTests

    EditMode tests for Serenity.Global.Infrastructure.Editor.Utils.UnityAssetSetCloner: the explicit-file-list clone core shared by Serenity.Global.Infrastructure.Editor.Utils.UnityDirectoryCloner and any caller cloning a non-mirrored file set (a shipped system's dependency closure). Every fixture lives under a scratch folder wiped in TearDown().

    UnityCollectionSettingsLoaderTestSettings

    A throwaway IFoundationSettings asset type for UnityCollectionSettingsLoaderTests. Lives in its own same-named file so Unity can bind its script when the tests create it as an asset (mirrors UnitySingletonSettingsLoaderTestSettings). Deliberately not shared with that suite: a type reused across fixtures would make each suite's label query see the other's assets.

    UnityCollectionSettingsLoaderTests

    EditMode tests for UnityCollectionSettingsLoader: the adopted-twin rule a collection lookup applies, wired to the real RenamedId(string) suffix and to real Addressables loading. Every fixture is a real UnityCollectionSettingsLoaderTestSettings asset registered through Serenity.Global.Infrastructure.Editor.Utils.UnityAddressablesLabeler.RetagAssets(System.Collections.Generic.IEnumerable{System.String},System.Collections.Generic.IEnumerable{System.String}), created through a ScratchAssetFixture per test and disposed in TearDown().

    UnityDirectoryClonerAssetTests

    Regression tests for Serenity.Global.Infrastructure.Editor.Utils.UnityDirectoryCloner.CloneAsset(System.String,System.String,System.String,System.String): the single-file counterpart of Serenity.Global.Infrastructure.Editor.Utils.UnityDirectoryCloner.CloneDirectory(System.String,System.String,System.String,System.String) that must clone exactly one asset without touching its siblings.

    UnityDirectoryClonerTests

    Regression tests for UnityDirectoryCloner foundation settings behavior. Validates that cloning regenerates IFoundationSettings.Guid without creating dynamic Addressables labels from that Guid.

    UnityDocfxApiTocGeneratorTests

    Tests for the DocFX API table-of-contents pipeline: Serenity.Global.Infrastructure.Editor.Utils.TocNode (data model), Serenity.Global.Infrastructure.Editor.Utils.UnityDocfxTypeIndexBuilder, Serenity.Global.Infrastructure.Editor.Utils.UnityDocfxNamespaceIndexWriter and the orchestrating Serenity.Global.Infrastructure.Editor.Utils.UnityDocfxApiTocGenerator. These build TOC/index structures from generated *.yml files and emit toc.yml + per-namespace index.md. All file I/O is routed through a per-test temp directory cleaned up in TearDown(). Editor-only.

    UnityDocfxWritersTests

    Tests for the path-parameterized DocFX file-writing helpers that accept an explicit docsDir and therefore can be exercised against a temp directory without touching the real project: Serenity.Global.Infrastructure.Editor.Utils.UnityDocfxScaffoldWriter, Serenity.Global.Infrastructure.Editor.Utils.UnityDocfxTemplateWriter and Serenity.Global.Infrastructure.Editor.Utils.UnityDocfxCacheCleaner.CleanApiFolder(System.String). The members that resolve their destination from Serenity.Global.Infrastructure.Editor.Utils.UnityDocsPaths (e.g. CleanAllCaches, UnityDocfxConfigurationWriter.Generate, UnityDocfxBrandingWriter.EnsureMinimalBrandFiles) would write into the live project docs folder and are intentionally not invoked here. Editor-only.

    UnityDocsBrandingTests

    Tests for Serenity.Global.Infrastructure.Editor.Utils.UnityDocsBranding and the DocFX writers' branding-parameterized paths. Every writer exercised here is either a pure function with no file IO (Serenity.Global.Infrastructure.Editor.Utils.UnityDocfxConfigurationWriter.BuildDocfxJson(Serenity.Global.Infrastructure.Editor.Utils.UnityDocsBranding,System.Collections.Generic.IEnumerable{System.String}), Serenity.Global.Infrastructure.Editor.Utils.UnityDocfxBrandingWriter.GenerateCss(Serenity.Global.Infrastructure.Editor.Utils.UnityDocsBranding)) or a path-parameterized overload that accepts an explicit docsDir (mirrors the temp-dir convention in UnityDocfxWritersTests) — nothing here writes into the live project's docs folder. Editor-only.

    UnityDocsPathsAndConstantsTests

    Tests for the computed paths in Serenity.Global.Infrastructure.Editor.Utils.UnityDocsPaths and the literal values in Serenity.Global.Infrastructure.Editor.Utils.UnityDocsConstants. These are read-only derivations from Application.dataPath; the tests assert the relationships between the paths rather than absolute machine-specific strings, so they stay culture- and machine-agnostic. Editor-only.

    UnityEditorUtilsTestFoundationSettings

    A throwaway IFoundationSettings asset type used by UnityEditorUtilsTests to exercise UnityEditorUtils.AssetUtils.TryFindAssetWithId/FindAllAssets against real assets on disk. Lives in its own same-named file so Unity can bind its script when the tests create it as an asset (mirrors CodecTestSO in the ProjectRecipe tests).

    UnityEditorUtilsTests

    Tests for UnityEditorUtils static utility classes. Editor-only.

    UnityProcessRunnerTests

    Tests for UnityProcessRunner. Editor-only.

    UnitySerializedFieldAssertionsTests

    EditMode tests for the one comparison in UnitySerializedFieldAssertions that cannot be reference equality: a restored reference to a SAVED asset. A UnityEngine.Object is a managed wrapper over a native object and Unity guarantees no single wrapper per object — its own == compares instance ids for that reason — so a reference re-marshalled by Serenity.Global.Infrastructure.Editor.SerenityExistingAssetRestore.Restore's JSON overwrite, or an asset re-imported by the AssetDatabase.Refresh() a rollback ends with, can arrive as a second wrapper over an asset that never moved. Assert.AreSame read that as a broken restore and failed LocalizationLanguageCreatorTests' field walk in CI on a UnityEngine.Texture2D alternate. What follows pins the replacement rule from both sides: what the production restore seam actually puts back matches, and nothing that is a DIFFERENT asset — or a different unsaved instance — is let through by the loosening. The rule is read through RestoredReferenceMatches(object, object) rather than by catching the ladder's assertion failures: NUnit records a failed assertion against the running test even when the exception is caught, so a suite built on Assert.Throws<AssertionException> would report its own passing cases as failures. Fixtures follow SerenityExistingAssetRestoreTests: one private temp folder wiped in TearDown() with the safe-delete processor suppressed, and no Addressables entries to remove.

    UnitySingletonSettingsLoaderTestSettings

    A throwaway IFoundationSettings asset type for UnitySingletonSettingsLoaderTests. Lives in its own same-named file so Unity can bind its script when the tests create it as an asset (mirrors SerenityAssetIdLookupTestSettings). Deliberately not shared with any other suite — see that type's docstring for why.

    UnitySingletonSettingsLoaderTests

    EditMode tests for UnitySingletonSettingsLoader: the ownership rule a project-owned settings asset beats a shipped one with the same Id. Every fixture is a real UnitySingletonSettingsLoaderTestSettings asset registered into Addressables via Serenity.Global.Infrastructure.Editor.Utils.UnityAddressablesLabeler.RetagAssets(System.Collections.Generic.IEnumerable{System.String},System.Collections.Generic.IEnumerable{System.String}), created through a ScratchAssetFixture in SetUp() and disposed in TearDown().

    UnityTextMeasurementUtilsTests

    Tests for UnityTextMeasurementUtils. Editor-only.

    WiredOrDiscoveredSettingsTests

    EditMode tests for WiredOrDiscoveredSettings: the wired reference wins, and the fallback answers exactly what the underlying loader answers. Fixtures are created through a ScratchAssetFixture, reusing UnityCollectionSettingsLoaderTests's settings type so the assets go through real Addressables loading rather than a fake.

    Enums

    SerenityExistingAssetRestoreTestSettings.ScratchMode

    An enum field's shape. Three values so "the next one" is never a wrap-around to the default.

    In this article
    © 2026 Serenity. All Rights Reserved