CQRS Call-Site Migration: Phase 2 Extension Handlers & Phase 3 Base Classes - #269
Merged
Merged
GitHub Actions / Test Results
succeeded
Feb 24, 2026 in 1s
455 passed, 0 failed and 3 skipped
| Report | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| src/TestResults/architecture-results.trx | 61✅ | 4s | ||
| src/TestResults/config-results.trx | 288✅ | 19s | ||
| src/TestResults/integration-results.trx | 27✅ | 1⚪ | 43s | |
| src/TestResults/logging-results.trx | 25✅ | 3s | ||
| src/TestResults/migration-results.trx | 9✅ | 2⚪ | 4s | |
| src/TestResults/performance-results.trx | 45✅ | 3s |
✅ src/TestResults/architecture-results.trx
61 tests were completed in 4s with 61 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| ACATCore.Tests.Architecture.CqrsTests | 9✅ | 17ms | ||
| ACATCore.Tests.Architecture.EventBusTests | 12✅ | 12ms | ||
| ACATCore.Tests.Architecture.FactoryTests | 32✅ | 2s | ||
| ACATCore.Tests.Architecture.RepositoryTests | 8✅ | 568ms |
✅ ACATCore.Tests.Architecture.CqrsTests
✅ CommandHandler_Handle_ExecutesAction
✅ GetActivePanelQuery_IsIQuery
✅ GetAllPanelNamesQuery_IsIQuery
✅ GetConfigurationValueQuery_IsIQuery
✅ HandleActuatorSwitchCommand_IsICommand
✅ HandleActuatorSwitchCommand_Resume_StoresAction
✅ HidePanelCommand_IsICommand
✅ QueryHandler_Handle_ReturnsExpectedResult
✅ ShowPanelCommand_IsICommand
✅ ACATCore.Tests.Architecture.EventBusTests
✅ ActuatorSwitchActivatedEvent_SwitchName_SetCorrectly
✅ AgentContextChangedEvent_Properties_SetCorrectly
✅ ConfigurationReloadEvent_ConfigPath_SetCorrectly
✅ PanelHideEvent_PanelClass_SetCorrectly
✅ PanelShowEvent_PanelClass_SetCorrectly
✅ Publish_NullEventData_ThrowsArgumentNullException
✅ Publish_WithMultipleSubscribers_AllReceiveEvent
✅ Publish_WithNoSubscribers_DoesNotThrow
✅ Publish_WithSubscriber_InvokesHandler
✅ Subscribe_DifferentEventTypes_OnlyCorrectHandlerCalled
✅ Subscribe_NullHandler_ThrowsArgumentNullException
✅ Unsubscribe_ByHandler_HandlerNoLongerCalled
✅ ACATCore.Tests.Architecture.FactoryTests
✅ ActuatorFactory_Constructor_NullServiceProvider_Throws
✅ ActuatorFactory_Constructor_ValidServiceProvider_Succeeds
✅ ActuatorFactory_CreateByName_EmptyName_Throws
✅ ActuatorFactory_CreateByName_NullName_Throws
✅ ActuatorFactory_CreateByName_UnknownName_Throws
✅ ActuatorFactory_CreateByType_NonActuatorType_Throws
✅ ActuatorFactory_CreateByType_NullType_Throws
✅ ActuatorFactory_ImplementsIActuatorFactory
✅ AgentFactory_Constructor_NullServiceProvider_Throws
✅ AgentFactory_Constructor_ValidServiceProvider_Succeeds
✅ AgentFactory_CreateByName_EmptyName_Throws
✅ AgentFactory_CreateByName_NullName_Throws
✅ AgentFactory_CreateByName_UnknownName_Throws
✅ AgentFactory_CreateByType_NonAgentType_Throws
✅ AgentFactory_CreateByType_NullType_Throws
✅ AgentFactory_ImplementsIAgentFactory
✅ DI_Factories_AreSingletons
✅ DI_IActuatorFactory_IsRegistered_AfterAddActuatorManagement
✅ DI_IAgentFactory_IsRegistered_AfterAddAgentManagement
✅ DI_IScannerFactory_IsRegistered_AfterAddPanelManagement
✅ DI_IWidgetFactory_IsRegistered_AfterAddWidgetManagement
✅ ScannerFactory_Constructor_NullServiceProvider_Throws
✅ ScannerFactory_Constructor_ValidServiceProvider_Succeeds
✅ ScannerFactory_CreateByName_EmptyName_Throws
✅ ScannerFactory_CreateByName_NullName_Throws
✅ ScannerFactory_CreateByName_UnknownName_Throws
✅ ScannerFactory_CreateByType_NonScannerType_Throws
✅ ScannerFactory_CreateByType_NullType_Throws
✅ ScannerFactory_ImplementsIScannerFactory
✅ WidgetFactory_Constructor_NullServiceProvider_Throws
✅ WidgetFactory_Constructor_ValidServiceProvider_Succeeds
✅ WidgetFactory_ImplementsIWidgetFactory
✅ ACATCore.Tests.Architecture.RepositoryTests
✅ ConfigurationRepository_GetDefault_ReturnsNonNull
✅ ConfigurationRepository_ImplementsIRepository
✅ ConfigurationRepository_Load_MissingFile_ReturnsDefault
✅ ConfigurationRepository_Load_NullPath_ReturnsNull
✅ PreferencesRepository_GetDefault_ReturnsNonNull
✅ PreferencesRepository_ImplementsIRepository
✅ PreferencesRepository_Load_NullPath_ReturnsNull
✅ PreferencesRepository_Save_RoundTrip
✅ src/TestResults/config-results.trx
288 tests were completed in 19s with 288 passed, 0 failed and 0 skipped.
✅ ACATCore.Tests.Configuration.AbbreviationsJsonTests
✅ AbbreviationsClassCanLoadFromJson
✅ AbbreviationsClassCanSaveToJson
✅ CanCreateDefaultAbbreviations
✅ CanDeserializeFromJson
✅ CanLoadAndSaveJsonConfiguration
✅ CanSerializeToJson
✅ ValidatorAcceptsValidConfiguration
✅ ValidatorRejectsEmptyWord
✅ ValidatorRejectsInvalidMode
✅ ACATCore.Tests.Configuration.ActuatorSettingsConverterTests
✅ ConvertInvalidGuidHandlesGracefully
✅ ConvertJsonListToLegacyList
✅ ConvertJsonToLegacy_BasicProperties
✅ ConvertJsonToLegacy_SwitchSettings
✅ ConvertLegacyListToJson
✅ ConvertLegacyToJson_BasicProperties
✅ ConvertLegacyToJson_SwitchSettings
✅ ConvertNullJsonReturnsEmpty
✅ ConvertNullLegacyListReturnsEmptyJson
✅ ConvertNullStringsHandlesGracefully
✅ RoundTripConversion_PreservesData
✅ ACATCore.Tests.Configuration.ActuatorSettingsJsonTests
✅ CanCreateDefaultSettings
✅ CanDeserializeFromJson
✅ CanSerializeToJson
✅ FactoryMethodCreatesBCIActuator
✅ FactoryMethodCreatesCameraActuator
✅ FactoryMethodCreatesKeyboardActuator
✅ RoundTripSerializationPreservesData
✅ SwitchFactoryCreatesTriggerSwitch
✅ ACATCore.Tests.Configuration.ActuatorSettingsValidatorTests
✅ DuplicateActuatorIdsFails
✅ DuplicateSwitchNamesWithinActuatorFails
✅ EmptyActuatorNameFails
✅ EmptyActuatorSettingsListFails
✅ EnabledActuatingSwitchWithoutCommandFails
✅ EnabledActuatorWithoutEnabledSwitchFails
✅ InvalidGuidFails
✅ NoEnabledActuatorsFails
✅ NullActuatorSettingsListFails
✅ ValidSettingsPass
✅ ACATCore.Tests.Configuration.ConfigurationEnhancementsTests
✅ ConfigurationReloadService_FileChanged_RaisesEvent
✅ ConfigurationReloadService_StartMonitoring_ValidFile_Success
✅ ConfigurationReloadService_StopMonitoring_StopsEvents
✅ ConfigurationVersion_IsCompatibleWith_SameMajor_ReturnsTrue
✅ ConfigurationVersion_IsNewerThan_NewerVersion_ReturnsTrue
✅ ConfigurationVersion_Parse_ValidVersion_Success
✅ ConfigurationVersionManager_GetVersion_FileWithVersion_ReturnsVersion
✅ ConfigurationVersionManager_NeedsMigration_OlderVersion_ReturnsTrue
✅ EnvironmentConfiguration_DetectEnvironment_CaseInsensitive
✅ EnvironmentConfiguration_DetectEnvironment_DefaultsToProduction
✅ EnvironmentConfiguration_DetectEnvironment_FallsBackToAspNetCoreEnvironment
✅ EnvironmentConfiguration_DetectEnvironment_FallsBackToDotnetEnvironment
✅ EnvironmentConfiguration_DetectEnvironment_FromACATEnvironmentVar_Development
✅ EnvironmentConfiguration_DetectEnvironment_FromACATEnvironmentVar_Production
✅ EnvironmentConfiguration_DetectEnvironment_FromACATEnvironmentVar_Staging
✅ EnvironmentConfiguration_DetectEnvironment_FromACATEnvironmentVar_Testing
✅ EnvironmentConfiguration_GetConfigurationFiles_AllThreeLayers_ReturnsAll
✅ EnvironmentConfiguration_GetConfigurationFiles_BaseAndEnv_ReturnsBoth
✅ EnvironmentConfiguration_GetConfigurationFiles_BaseOnly_ReturnsBase
✅ EnvironmentConfiguration_GetConfigurationFiles_LocalOverrideOnly_ReturnsBaseAndLocal
✅ EnvironmentConfiguration_GetEnvironmentFilePath_DevelopmentFile_ReturnsDevPath
✅ EnvironmentConfiguration_GetEnvironmentFilePath_NoEnvFile_ReturnsBasePath
✅ EnvironmentConfiguration_GetLocalOverrideFilePath_NullInput_ReturnsNull
✅ EnvironmentConfiguration_GetLocalOverrideFilePath_ReturnsLocalJson
✅ EnvironmentConfiguration_SetGetOverride_StoresValue
✅ JsonConfigurationLoader_EnableHotReload_LoadsAndReloads
✅ JsonConfigurationLoader_LoadWithEnvironment_LoadsDevConfig
✅ JsonSchemaValidator_LoadSchema_ValidSchema_Success
✅ JsonSchemaValidator_Validate_MissingRequired_Fails
✅ JsonSchemaValidator_Validate_Performance_CompletesWithin100ms
✅ JsonSchemaValidator_Validate_ValidJson_Success
✅ ACATCore.Tests.Configuration.ConfigurationMigrationTests
✅ AbbreviationsJson_HasVersionField_DefaultsTo_1_0_0
✅ ActuatorSettingsJson_HasVersionField_DefaultsTo_1_0_0
✅ GetBackups_AfterMigration_ReturnsAtLeastOneBackup
✅ GetBackups_NoMigrationDone_ReturnsEmpty
✅ GetVersion_FileWithNoVersionField_Returns_1_0_0
✅ GetVersion_FileWithVersionField_ReturnsParsedVersion
✅ MigrateIfNeeded_AppliesMigration_UpdatesVersionInFile
✅ MigrateIfNeeded_FailingMigration_RollsBackToOriginal
✅ MigrateIfNeeded_FileNotFound_ReturnsFailure
✅ MigrateIfNeeded_NoMigrationNeeded_ReturnsSuccessWithoutModifying
✅ MigrateIfNeeded_ReturnsCorrectFromAndToVersions
✅ MigrateIfNeeded_WithBackup_BackupContainsOriginalContent
✅ MigrateIfNeeded_WithBackup_CreatesBackupFile
✅ MigrateIfNeeded_WithoutBackup_NoBackupFileCreated
✅ MigrationBase_BuildMigratedElement_PreservesExistingProperties
✅ MigrationBase_BuildMigratedElement_SetsVersionToToVersion
✅ NeedsMigration_FileVersionMatchesCurrent_ReturnsFalse
✅ NeedsMigration_FileVersionOlderThanCurrent_ReturnsTrue
✅ NeedsMigration_NoVersionField_DefaultsTo_1_0_0_AndDetectsMigration
✅ PanelConfigJson_HasVersionField_DefaultsTo_1_0_0
✅ PreferredWordPredictorsJson_HasVersionField_DefaultsTo_1_0_0
✅ PronunciationsJson_HasVersionField_DefaultsTo_1_0_0
✅ Rollback_MissingBackupFile_ReturnsFalse
✅ Rollback_ValidBackup_RestoresFile
✅ ThemeJson_HasVersionField_DefaultsTo_1_0_0
✅ ACATCore.Tests.Configuration.ConfigurationWatcherTests
✅ ConfigurationChanged_EventArgs_ContainsExpectedData
✅ ConfigurationChangeFailed_EventArgs_ContainsErrorMessage
✅ Constructor_EmptyDirectory_ThrowsArgumentNullException
✅ Constructor_NullDirectory_ThrowsArgumentNullException
✅ Constructor_ValidDirectory_CreatesInstance
✅ Dispose_StopsWatching
✅ FileChanged_AfterStop_DoesNotRaiseEvent
✅ FileChanged_CancelledByChangingEvent_RaisesFailedEvent
✅ FileChanged_RaisesConfigurationChangedEvent
✅ FileChanged_ValidationCallbackThrows_RaisesFailedEvent
✅ FileChanged_ValidationFails_RaisesFailedEvent
✅ FileChanged_ValidationPasses_RaisesChangedEvent
✅ RapidChanges_AreDebounced_SingleEventRaised
✅ Start_AlreadyWatching_ReturnsTrue
✅ Start_ExistingDirectory_ReturnsTrue
✅ Start_NonExistentDirectory_ReturnsFalse
✅ Stop_WhileWatching_StopsWatcher
✅ ACATCore.Tests.Configuration.ContextDependencyInjectionTests
✅ Context_AndIContext_ResolveSameSingletonInstance
✅ GetManager_MultipleManagers_AllResolvable
✅ GetManager_UnregisteredService_ReturnsNull
✅ GetManager_WithConfiguredServiceProvider_ReturnsManager
✅ GetManager_WithConfiguredServiceProvider_ReturnsSameInstanceAsDirect
✅ GetManager_WithNullServiceProvider_ThrowsInvalidOperationException
✅ IContext_ResolvedFromServiceProvider_IsNotNull
✅ IContext_ResolvingSetsStaticServiceProvider
✅ ServiceProvider_CanBeSet_AndRetrieved
✅ ServiceProvider_CanBeSetToNull
✅ ACATCore.Tests.Configuration.ContextLoggerTests
✅ GetLogger_AfterServiceProviderChange_UsesNewProvider
✅ GetLogger_CanLog_NoExceptions
✅ GetLogger_DifferentTypes_ReturnsDifferentCategories
✅ GetLogger_Generic_ReturnsTypedLogger
✅ GetLogger_SameType_ReturnsSameLoggerCategory
✅ GetLogger_WithNullType_ThrowsArgumentNullException
✅ GetLogger_WithType_ReturnsLogger
✅ LogManager_GetLogger_Generic_ReturnsTypedLogger
✅ LogManager_GetLogger_ReturnsValidLogger
✅ LogManager_GetLogger_WithNullType_ThrowsArgumentNullException
✅ ACATCore.Tests.Configuration.ContextThreadSafetyTests
✅ GetLogger_ConcurrentAccess_AllThreadsGetValidLogger
✅ GetManager_ConcurrentAccess_AllThreadsGetSameInstance
✅ GetManager_ConcurrentWithServiceProviderChange_NoExceptions
✅ MultipleManagers_ConcurrentAccess_AllReturnCorrectTypes
✅ ServiceProvider_ConcurrentSet_NoExceptions
✅ ServiceProvider_RapidSetAndGet_NoDeadlock
✅ ACATCore.Tests.Configuration.CQRSPatternTests
✅ CreatePanelCommand_DefaultStartupArgIsNull
✅ CreatePanelCommand_DefaultTitleIsNull
✅ CreatePanelCommand_ImplementsICommand
✅ CreatePanelCommand_StoresPanelClass
✅ CreatePanelCommand_StoresTitleAndStartupArg
✅ GetActiveAgentNameQuery_ImplementsIQuery
✅ GetActiveAgentNameQueryHandler_ReturnsAgentName
✅ GetActiveAgentNameQueryHandler_ReturnsEmptyStringWhenNoAgent
✅ GetConfigurationValueQuery_ImplementsIQuery
✅ GetConfigurationValueQuery_StoresKey
✅ GetConfigurationValueQueryHandler_ReturnsNullForMissingKey
✅ GetConfigurationValueQueryHandler_ReturnsStoredOverrideValue
✅ GetConfigurationValueQueryHandler_ReturnsUpdatedValue_AfterOverrideChanges
✅ HandleActuatorSwitchCommand_ImplementsICommand
✅ HandleActuatorSwitchCommand_StoresPauseAction
✅ HandleActuatorSwitchCommand_StoresResumeAction
✅ HandleActuatorSwitchCommandHandler_Pause_CallsPauseOnManager
✅ HandleActuatorSwitchCommandHandler_Resume_CallsResumeOnManager
✅ ACATCore.Tests.Configuration.ExtensionLoadingIntegrationTests
✅ ExtensionInstantiator_CreateSingleExtension_WithNullType_ReturnsNull
✅ ExtensionInstantiator_WithNullExtensionTypes_ReturnsEmptyList
✅ ExtensionInstantiator_WithNullServiceProvider_ThrowsArgumentNullException
✅ ExtensionInstantiator_WithServiceProvider_CanCreateExtensions
✅ ExtensionLoader_AddExtensionLoader_RegistersIExtensionLoaderAsSingleton
✅ ExtensionLoader_Constructor_WithNullServiceProvider_ThrowsArgumentNullException
✅ ExtensionLoader_Constructor_WithServiceProvider_Succeeds
✅ ExtensionLoader_CreateAllInstances_WithNoTypesLoaded_ReturnsEmptyCollection
✅ ExtensionLoader_CreateInstance_WithUnknownGuid_ReturnsNull
✅ ExtensionLoader_ImplementsIExtensionLoader
✅ ExtensionLoader_LoadedTypes_IsEmptyBeforeLoadingAssemblies
✅ ExtensionLoader_RegisterExtensions_WithNoLoadedTypes_LeavesServicesUnchanged
✅ ExtensionLoader_RegisterExtensions_WithNullServices_ThrowsArgumentNullException
✅ ServiceProvider_CanCreateLoggers
✅ ServiceProvider_CanResolveLoggerFactory
✅ ServiceProvider_IsAvailableInContext_AfterSetup
✅ ACATCore.Tests.Configuration.FactoryRegistrationTests
✅ AbbreviationsManagerFactory_FromDI_CreatesManager
✅ ActuatorManagerFactory_FromDI_CreatesManager
✅ AddACATServices_RegistersAllFactories
✅ AgentManagerFactory_FromDI_CreatesManager
✅ AutomationEventManagerFactory_FromDI_CreatesManager
✅ CommandManagerFactory_FromDI_CreatesManager
✅ Factory_CreatedManager_MatchesDIResolvedManager
✅ Factory_MultipleCalls_ReturnsSameInstance
✅ PanelManagerFactory_FromDI_CreatesManager
✅ SpellCheckManagerFactory_FromDI_CreatesManager
✅ ThemeManagerFactory_FromDI_CreatesManager
✅ TTSManagerFactory_FromDI_CreatesManager
✅ WordPredictionManagerFactory_FromDI_CreatesManager
✅ ACATCore.Tests.Configuration.JsonConfigurationLoaderTests
✅ CreateDefaultCallsStaticFactoryMethod
✅ GetValidationErrorMessageReturnsEmptyForValidConfig
✅ GetValidationErrorMessageReturnsMessageForInvalidConfig
✅ LoadEmptyFileCreatesDefault
✅ LoadHandlesJsonCommentsAndTrailingCommas
✅ LoadInvalidJsonCreatesDefault
✅ LoadNonExistentFileCreatesDefault
✅ LoadNonExistentFileReturnsNullWhenCreateDefaultFalse
✅ LoadValidatesWithValidator
✅ LoadWithSchemaValidator_NonStrictMode_InvalidJson_StillDeserializes
✅ LoadWithSchemaValidator_StrictMode_InvalidJson_ReturnsDefault
✅ LoadWithSchemaValidator_ValidJson_LoadsSuccessfully
✅ SaveAndLoadRoundTrip
✅ SaveCreatesDirectoryIfNotExists
✅ SaveValidatesBeforeSaving
✅ ACATCore.Tests.Configuration.ManagerFactoryTests
✅ AbbreviationsManagerFactory_Create_ReturnsInstance
✅ ActuatorManagerFactory_Create_ReturnsInstance
✅ AgentManagerFactory_Create_ReturnsInstance
✅ AutomationEventManagerFactory_Create_ReturnsInstance
✅ CommandManagerFactory_Create_ReturnsInstance
✅ Factory_Create_ReturnsSameInstanceAsDirectResolution
✅ PanelManagerFactory_Create_ReturnsInstance
✅ ServiceConfiguration_RegistersAllFactories
✅ SpellCheckManagerFactory_Create_ReturnsInstance
✅ ThemeManagerFactory_Create_ReturnsInstance
✅ TTSManagerFactory_Create_ReturnsInstance
✅ WordPredictionManagerFactory_Create_ReturnsInstance
✅ ACATCore.Tests.Configuration.PanelConfigJsonTests
✅ CanCreateSimpleMenu
✅ CanDeserializeComplexPanel
✅ CanDeserializeFontSizeAsNumber
✅ CanDeserializeFontSizeAsString
✅ CanDeserializeFromJson
✅ CanSerializeToJson
✅ ACATCore.Tests.Configuration.PanelConfigValidatorTests
✅ DuplicateAnimationNamesFails
✅ DuplicateWidgetAttributeNamesFails
✅ EmptyAnimationStepsFails
✅ EmptyAnimationStepWidgetNameFails
✅ EmptyColorSchemeFails
✅ EmptyWidgetClassFails
✅ EmptyWidgetNameFails
✅ NullLayoutFails
✅ NullWidgetAttributesFails
✅ ValidPanelConfigPasses
✅ ACATCore.Tests.Configuration.PreferredWordPredictorsJsonTests
✅ CanCreateDefaultPreferredWordPredictors
✅ CanDeserializeFromJson
✅ CanLoadAndSaveJsonConfiguration
✅ CanSerializeToJson
✅ ConverterHandlesEmptyList
✅ ConverterHandlesNullList
✅ PreferredWordPredictorsCanLoadFromJson
✅ PreferredWordPredictorsCanSaveToJson
✅ ValidatorAcceptsValidConfiguration
✅ ValidatorRejectsEmptyLanguage
✅ ValidatorRejectsInvalidGuid
✅ ACATCore.Tests.Configuration.PronunciationsJsonTests
✅ BackwardCompatibilityWithXml
✅ CanCreateDefaultPronunciations
✅ CanDeserializeFromJson
✅ CanLoadAndSaveJsonConfiguration
✅ CanSerializeToJson
✅ PronunciationsClassCanLoadFromJson
✅ PronunciationsClassCanSaveToJson
✅ ValidatorAcceptsValidConfiguration
✅ ValidatorRejectsEmptyPronunciation
✅ ValidatorRejectsEmptyWord
✅ ACATCore.Tests.Configuration.ServiceConfigurationTests
✅ AddACATInfrastructure_AllowsChaining
✅ AddACATInfrastructure_ConfiguresLoggingAndServices
✅ AddACATInfrastructure_WithNullServices_ThrowsArgumentNullException
✅ AddACATServices_AllowsChaining
✅ AddACATServices_InterfaceAndConcreteTypeResolveToSameInstance
✅ AddACATServices_RegistersAllManagerInterfaces
✅ AddACATServices_RegistersAllManagers
✅ AddACATServices_RegistersManagersAsSingletons
✅ AddACATServices_WithNullServices_ThrowsArgumentNullException
✅ CreateServiceProvider_ReturnsConfiguredProvider
✅ CreateServiceProvider_WithLoggerFactory_UsesProvidedFactory
✅ CreateServiceProvider_WithNullLoggerFactory_ThrowsArgumentNullException
✅ ACATCore.Tests.Configuration.ServiceLifetimeTests
✅ AbbreviationsManager_MultipleCalls_ReturnsSameInstance
✅ ActuatorManager_MultipleCalls_ReturnsSameInstance
✅ AgentManager_MultipleCalls_ReturnsSameInstance
✅ AllFactories_AreRegisteredAsSingletons
✅ AllManagers_AreRegisteredAsSingletons
✅ AutomationEventManager_MultipleCalls_ReturnsSameInstance
✅ CommandManager_MultipleCalls_ReturnsSameInstance
✅ MultipleServiceProviders_ShareGlobalSingletonInstances
✅ PanelManager_MultipleCalls_ReturnsSameInstance
✅ Singletons_SharedAcrossNestedScopes
✅ SpellCheckManager_MultipleCalls_ReturnsSameInstance
✅ ThemeManager_MultipleCalls_ReturnsSameInstance
✅ TTSManager_MultipleCalls_ReturnsSameInstance
✅ WordPredictionManager_MultipleCalls_ReturnsSameInstance
✅ ACATCore.Tests.Configuration.ThemeJsonTests
✅ CanCreateDefaultTheme
✅ CanDeserializeFromJson
✅ CanSerializeToJson
✅ FactoryMethodCreatesScanner
✅ FactoryMethodCreatesScannerButton
✅ ACATCore.Tests.Configuration.ThemeValidatorTests
✅ DuplicateColorSchemeNamesFails
✅ EmptyColorSchemesFails
✅ EmptyDescriptionFails
✅ InvalidColorFormatFails
✅ MissingBackgroundAndImageFails
✅ NullColorSchemesFails
✅ ValidColorNamePasses
✅ ValidHexColorPasses
✅ ValidThemePass
✅ src/TestResults/integration-results.trx
28 tests were completed in 43s with 27 passed, 0 failed and 1 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| ACATCore.Tests.Integration.ConfigurationValidationIntegrationTests | 8✅ | 99ms | ||
| ACATCore.Tests.Integration.FreshInstallIntegrationTests | 5✅ | 456ms | ||
| ACATCore.Tests.Integration.LoggingProductionIntegrationTests | 7✅ | 1⚪ | 41s | |
| ACATCore.Tests.Integration.XmlMigrationIntegrationTests | 7✅ | 50ms |
✅ ACATCore.Tests.Integration.ConfigurationValidationIntegrationTests
✅ ConfigValidation_DefaultsCreatedOnError
✅ CorruptedConfigFile_ProducesUserFriendlyError
✅ EmptyConfigFile_HandledGracefully
✅ InvalidJson_LoadReturnsGracefulError
✅ InvalidJsonSchema_ValidationDetectsErrors
✅ MissingConfigFile_FallsBackToDefaults
✅ MissingRequiredFields_ValidationFails
✅ ReadOnlyConfigFile_ErrorHandledGracefully
✅ ACATCore.Tests.Integration.FreshInstallIntegrationTests
✅ FreshInstall_DefaultDirectoryStructureCreated
✅ FreshInstall_DefaultJsonConfigsCreated
✅ FreshInstall_LogFilesCreatedInCorrectLocation
✅ FreshInstall_LoggingInitializationSucceeds
✅ FreshInstall_VerifyMinimalFileCount
✅ ACATCore.Tests.Integration.LoggingProductionIntegrationTests
⚪ ContinuousLogging_PerformanceImpactMinimal
✅ ExceptionLogging_WorksInProduction
✅ HighVolumeLogging_NoMemoryLeaks
✅ LogFileCreation_SucceedsInProductionScenario
✅ LogFileRotation_HandlesLargeFiles
✅ LoggingPerformanceTest
✅ ProductionLogLevels_ConfiguredCorrectly
✅ StructuredLogging_PerformanceAcceptable
✅ ACATCore.Tests.Integration.XmlMigrationIntegrationTests
✅ MigratedJson_LoadsSuccessfully
✅ MigrationResult_ReportsSuccessCount
✅ MigrationTool_HandlesMultipleConfigFiles
✅ XmlBackup_PreservedAfterMigration
✅ XmlMigration_AllSettingsPreserved
✅ XmlToJson_ActuatorSettingsMigrated
✅ XmlToJson_ThemeSettingsMigrated
✅ src/TestResults/logging-results.trx
25 tests were completed in 3s with 25 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| ACATCore.Tests.Logging.CachedLogBehaviorTests | 7✅ | 710ms | ||
| ACATCore.Tests.Logging.LoggingPerformanceTests | 7✅ | 63ms | ||
| ACATCore.Tests.Logging.ModernLoggingConfigTests | 11✅ | 12ms |
✅ ACATCore.Tests.Logging.CachedLogBehaviorTests
✅ EmptyCachedLogCanBeSavedWithoutError
✅ LogEntryMethodAcceptsTypeAndData
✅ MultipleEntriesCanBeAddedBeforeSave
✅ NewCachedLogInstanceCreatesSuccessfully
✅ SaveOperationReturnsTrue
✅ SpecialCharactersInDataAreHandled
✅ SubsequentSavesAppendToExistingFile
✅ ACATCore.Tests.Logging.LoggingPerformanceTests
✅ ConcurrentLoggingFromMultipleThreadsSucceeds
✅ HighVolumeLoggingCompletesQuickly
✅ LoggerFactoryCreationIsConsistent
✅ ParallelLoggingWithExceptionsHandled
✅ RapidSequentialCallsComplete
✅ SharedLoggerFactoryWritesToSameFile
✅ SingleLogCallReturnsQuickly
✅ ACATCore.Tests.Logging.ModernLoggingConfigTests
✅ CategoryNameLoggerCreationSucceeds
✅ DebugLevelLoggingAccepted
✅ ErrorLevelLoggingAccepted
✅ ExceptionLoggingWithMessageWorks
✅ FactoryCanCreateMultipleLoggers
✅ GenericLoggerCreationSucceeds
✅ InformationLevelLoggingAccepted
✅ LoggerFactoryCreationSucceeds
✅ MultipleLoggerInstancesCoexist
✅ StructuredLoggingWithParametersWorks
✅ WarningLevelLoggingAccepted
✅ src/TestResults/migration-results.trx
11 tests were completed in 4s with 9 passed, 0 failed and 2 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| ACAT.ConfigMigrationTool.Tests.ConfigurationMigratorTests | 5✅ | 2⚪ | 4s | |
| ACAT.ConfigMigrationTool.Tests.XmlDeserializersTests | 4✅ | 951ms |
✅ ACAT.ConfigMigrationTool.Tests.ConfigurationMigratorTests
✅ MigrateAsync_EmptyDirectory_ReturnsZeroFiles
✅ MigrateAsync_WithBackup_CreatesBackupFiles
⚪ MigrateAsync_WithDryRun_NoFilesCreated
⚪ MigrateAsync_WithValidActuatorSettings_Success
✅ RollbackAsync_WithBackupFiles_RestoresOriginals
✅ ValidateAsync_InvalidJson_ReportsError
✅ ValidateAsync_ValidJson_Success
✅ ACAT.ConfigMigrationTool.Tests.XmlDeserializersTests
✅ DeserializeActuatorSettings_InvalidFormat_ThrowsException
✅ DeserializeActuatorSettings_ValidXml_Success
✅ DeserializePanelConfig_ValidXml_Success
✅ DeserializeTheme_ValidXml_Success
✅ src/TestResults/performance-results.trx
45 tests were completed in 3s with 45 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| ACATCore.Tests.Performance.MemoryProfilerTests | 7✅ | 32ms | ||
| ACATCore.Tests.Performance.PerformanceRegressionDetectorTests | 18✅ | 347ms | ||
| ACATCore.Tests.Performance.RuntimeMetricCategoryTests | 12✅ | 9ms | ||
| ACATCore.Tests.Performance.RuntimeMetricsCollectorTests | 8✅ | 2s |
✅ ACATCore.Tests.Performance.MemoryProfilerTests
✅ CaptureSnapshot_ReturnsValidSnapshot
✅ CaptureSnapshot_StoredInList
✅ ClearSnapshots_RemovesAll
✅ CompareSnapshots_ReturnsReport
✅ IsPotentialLeak_AboveThreshold_ReturnsTrue
✅ IsPotentialLeak_BelowThreshold_ReturnsFalse
✅ IsPotentialLeak_NullArguments_ReturnsFalse
✅ ACATCore.Tests.Performance.PerformanceRegressionDetectorTests
✅ CommittedBaselineFile_ContainsAllRequiredThresholds
✅ CommittedBaselineFile_DetectorIdentifiesRegressions
✅ CommittedBaselineFile_Exists
✅ CommittedBaselineFile_LoadsSuccessfully
✅ CommittedBaselineFile_ThresholdValuesMatchTargets
✅ CreateDefault_ContainsExpectedThresholds
✅ DetectRegressions_MultipleMetrics_FindsOnlyExceeded
✅ DetectRegressions_NullInput_ReturnsEmptyList
✅ GenerateReport_AlertContent_IncludesExceedanceAndUnit
✅ GenerateReport_NoRegressions_IndicatesPass
✅ GenerateReport_WithRegressions_IncludesMetricName
✅ IsRegression_AboveThreshold_ReturnsTrue
✅ IsRegression_BelowThreshold_ReturnsFalse
✅ IsRegression_UnknownMetric_ReturnsFalse
✅ Load_MissingFile_ReturnsDefault
✅ PerformanceBaseline_Save_CreatesDirectory
✅ RegressionResult_ToString_ContainsKeyInfo
✅ SaveAndLoad_RoundTrip_PreservesThresholds
✅ ACATCore.Tests.Performance.RuntimeMetricCategoryTests
✅ Record_AllCategories_AllStoredIndependently
✅ Record_CpuMetric_CategoryPreserved
✅ Record_IoOperation_CategoryPreserved
✅ Record_MemoryMetric_CategoryPreserved
✅ Record_MemoryMetric_MultipleValues_AggregatesCorrectly
✅ Record_MultipleIoOperations_StoredSeparately
✅ Record_PredictionLatency_CategoryPreserved
✅ Record_PredictionLatency_MultipleValues_AggregatesCorrectly
✅ Record_ResumedAfterReenable_EntryAdded
✅ Record_SkippedWhenCategoryDisabled_NoEntryAdded
✅ Record_UiInputLag_CategoryAndUnitPreserved
✅ Record_UiInputLag_MultipleValues_AggregatesCorrectly
✅ ACATCore.Tests.Performance.RuntimeMetricsCollectorTests
✅ Dispose_StopsSampling
✅ Record_CategoryAndUnitPreserved
✅ Record_MultipleValues_AggregatesCorrectly
✅ Record_NullOrEmptyName_DoesNotThrow
✅ Record_SingleValue_StoresEntry
✅ Start_CollectsSamplesOverTime
✅ Start_PeriodicSamplesPopulateNamedEntries
✅ Start_SamplesHavePositiveWorkingSet
Loading