Skip to content

Refactor Context: add IContext interface and register Context/IContext via DI - #256

Merged
michaelbeale-IL merged 7 commits into
masterfrom
copilot/refactor-context-class
Feb 23, 2026
Merged

Refactor Context: add IContext interface and register Context/IContext via DI#256
michaelbeale-IL merged 7 commits into
masterfrom
copilot/refactor-context-class

Refactor Context class: add IContext interface, DI registration, and …

4ce1b2d
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
GitHub Actions / Test Results failed Feb 22, 2026 in 1s

247 passed, 1 failed and 0 skipped

Tests failed

Report Passed Failed Skipped Time
src/TestResults/config-results.trx 222✅ 1❌ 9s
src/TestResults/logging-results.trx 25✅ 6s

❌ src/TestResults/config-results.trx

223 tests were completed in 9s with 222 passed, 1 failed and 0 skipped.

Test suite Passed Failed Skipped Time
ACATCore.Tests.Configuration.AbbreviationsJsonTests 9✅ 1s
ACATCore.Tests.Configuration.ActuatorSettingsConverterTests 11✅ 14ms
ACATCore.Tests.Configuration.ActuatorSettingsJsonTests 8✅ 148ms
ACATCore.Tests.Configuration.ActuatorSettingsValidatorTests 10✅ 26ms
ACATCore.Tests.Configuration.ConfigurationEnhancementsTests 17✅ 3s
ACATCore.Tests.Configuration.ContextDependencyInjectionTests 9✅ 1❌ 130ms
ACATCore.Tests.Configuration.ContextLoggerTests 10✅ 3ms
ACATCore.Tests.Configuration.ContextThreadSafetyTests 6✅ 1s
ACATCore.Tests.Configuration.CQRSPatternTests 18✅ 304ms
ACATCore.Tests.Configuration.ExtensionLoadingIntegrationTests 7✅ 3ms
ACATCore.Tests.Configuration.FactoryRegistrationTests 13✅ 98ms
ACATCore.Tests.Configuration.JsonConfigurationLoaderTests 15✅ 48ms
ACATCore.Tests.Configuration.ManagerFactoryTests 12✅ 2ms
ACATCore.Tests.Configuration.PanelConfigJsonTests 6✅ 41ms
ACATCore.Tests.Configuration.PanelConfigValidatorTests 10✅ 37ms
ACATCore.Tests.Configuration.PreferredWordPredictorsJsonTests 11✅ 74ms
ACATCore.Tests.Configuration.PronunciationsJsonTests 10✅ 124ms
ACATCore.Tests.Configuration.ServiceConfigurationTests 12✅ 4ms
ACATCore.Tests.Configuration.ServiceLifetimeTests 14✅ 7ms
ACATCore.Tests.Configuration.ThemeJsonTests 5✅ 5ms
ACATCore.Tests.Configuration.ThemeValidatorTests 9✅ 19ms

✅ 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_DefaultsToProduction
✅ EnvironmentConfiguration_GetEnvironmentFilePath_DevelopmentFile_ReturnsDevPath
✅ EnvironmentConfiguration_GetEnvironmentFilePath_NoEnvFile_ReturnsBasePath
✅ EnvironmentConfiguration_SetGetOverride_StoresValue
✅ JsonConfigurationLoader_EnableHotReload_LoadsAndReloads
✅ JsonConfigurationLoader_LoadWithEnvironment_LoadsDevConfig
✅ JsonSchemaValidator_LoadSchema_ValidSchema_Success
✅ JsonSchemaValidator_Validate_MissingRequired_Fails
✅ JsonSchemaValidator_Validate_ValidJson_Success

❌ 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
	Assert.AreSame failed. 
✅ 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
✅ 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/logging-results.trx

25 tests were completed in 6s with 25 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
ACATCore.Tests.Logging.CachedLogBehaviorTests 7✅ 1s
ACATCore.Tests.Logging.LoggingPerformanceTests 7✅ 86ms
ACATCore.Tests.Logging.ModernLoggingConfigTests 11✅ 6ms

✅ 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

Annotations

Check failure on line 182 in src/Libraries/ACATCore.Tests.Configuration/ContextDependencyInjectionTests.cs

See this annotation in the file changed.

@github-actions github-actions / Test Results

ACATCore.Tests.Configuration.ContextDependencyInjectionTests ► IContext_ResolvingSetsStaticServiceProvider

Failed test found in:
  src/TestResults/config-results.trx
Error:
  Assert.AreSame failed. 
Raw output
Assert.AreSame failed. 
   at ACATCore.Tests.Configuration.ContextDependencyInjectionTests.IContext_ResolvingSetsStaticServiceProvider() in D:\a\acat\acat\src\Libraries\ACATCore.Tests.Configuration\ContextDependencyInjectionTests.cs:line 182