├── .gitattributes ├── .github └── workflows │ └── codeql-analysis.yml ├── .gitignore ├── CSharp ├── .editorconfig ├── AdapterTests │ ├── AdapterTests.sln │ ├── AdapterTests │ │ ├── AdapterTests.csproj │ │ ├── Protos │ │ │ ├── greet.proto │ │ │ ├── health.proto │ │ │ ├── riva_asr.proto │ │ │ ├── riva_audio.proto │ │ │ ├── riva_nlp.proto │ │ │ ├── riva_nmt.proto │ │ │ └── riva_tts.proto │ │ ├── UnitTest1.cs │ │ └── Usings.cs │ └── GreetingService │ │ ├── GreetingService.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Protos │ │ ├── health.proto │ │ ├── riva_asr.proto │ │ ├── riva_audio.proto │ │ ├── riva_nlp.proto │ │ ├── riva_nmt.proto │ │ └── riva_tts.proto │ │ ├── Services │ │ └── AsrService.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── AntiAntiMock │ ├── .editorconfig │ ├── AntiAntiMock │ │ ├── Broadcast.cs │ │ ├── IRecipient.cs │ │ ├── IUserApi.cs │ │ ├── MarsRide │ │ │ ├── Directions.cs │ │ │ ├── IBoard.cs │ │ │ ├── MarsRover.cs │ │ │ └── Position.cs │ │ ├── MockNoMock.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Twitter │ │ │ ├── IAddingOperationStatus.cs │ │ │ ├── IAddingToExistingTweetsStatus.cs │ │ │ ├── IFollowers.cs │ │ │ ├── INewTweetRequest.cs │ │ │ ├── INotifyingFollowersStatus.cs │ │ │ ├── IPostedTweets.cs │ │ │ ├── ITweetCommand.cs │ │ │ └── NewTweetCommand.cs │ │ ├── Urls.cs │ │ ├── UsersApp │ │ │ ├── Adapter.Controllers │ │ │ │ ├── ControllersAdapter.cs │ │ │ │ └── UserController.cs │ │ │ ├── Adapter.Logging │ │ │ │ ├── LoggingAdapter.cs │ │ │ │ └── UserApiSupport.cs │ │ │ ├── Adapter.UserApi │ │ │ │ ├── DuplicateUserException.cs │ │ │ │ ├── HttpBasedUserApi.cs │ │ │ │ ├── IUserApiSupport.cs │ │ │ │ ├── LogScopedHttpUserApi.cs │ │ │ │ ├── RequestFactory.cs │ │ │ │ ├── UserApiAdapter.cs │ │ │ │ └── UserDto.cs │ │ │ ├── AppLogic │ │ │ │ ├── ApplicationLogic.cs │ │ │ │ ├── CommandFactory.cs │ │ │ │ └── ICommandFactory.cs │ │ │ ├── CompositionRoot.cs │ │ │ └── MyProgram.cs │ │ ├── Work.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── AntiAntiMockSpecification │ │ ├── .editorconfig │ │ ├── GlobalUsings.cs │ │ ├── MockNoMockSpecification.csproj │ │ ├── _01_ChangeDetectors │ │ │ ├── IFirstPart.cs │ │ │ ├── ISecondPart.cs │ │ │ ├── WorkProcessing.cs │ │ │ ├── _01_FileTextVsBehavior.cs │ │ │ ├── _02_MocksVsHttpMocks.cs │ │ │ └── _03_StructuralTests.cs │ │ ├── _02_ImplementationDetails │ │ │ ├── ManagedWork.cs │ │ │ ├── MyConnection.cs │ │ │ ├── _01_InteractionsAsImplementationDetail.cs │ │ │ ├── _02_InteractionsAsNotImplementationDetail.cs │ │ │ ├── _03_InteractionsRevealImplementationDetails.cs │ │ │ └── _04_DataRevealsImplementationDetails.cs │ │ ├── _03_MocksReturningMocks │ │ │ └── MocksReturningMocksReturningMocks.cs │ │ ├── _04_RddUsingMocks │ │ │ └── TicketOfficeSpecification.cs │ │ ├── _05_TellDontAsk │ │ │ └── NewTweetCommandSpecification.cs │ │ ├── _06_ValueObjects │ │ │ └── MarsRoverSpecification.cs │ │ ├── _07_IntegrationOrAdapterTests │ │ │ ├── UserApiAdapterDriver.cs │ │ │ └── UserApiAdapterSpecification.cs │ │ └── _08_PeersInternals │ │ │ ├── BufferedObserver.cs │ │ │ ├── BufferingObserverSpecification.cs │ │ │ ├── IMyEvent.cs │ │ │ └── IMyObserver.cs │ └── MockNoMock.sln ├── AutomatedRefactorings │ ├── .vs │ │ └── AutomatedRefactorings │ │ │ └── DesignTimeBuild │ │ │ └── .dtbcache.v2 │ ├── AutomatedRefactorings.sln │ ├── AutomatedRefactorings │ │ ├── 1_Basic │ │ │ └── BasicRefactorings.cs │ │ ├── 2_MethodsAndParameters │ │ │ ├── ConsoleDestination.cs │ │ │ ├── FriendlyMessage.cs │ │ │ ├── MessageDestination.cs │ │ │ └── MethodsAndParameters.cs │ │ ├── 3_LessUsed │ │ │ ├── CompositionRoot.cs │ │ │ ├── FactoryMethods.cs │ │ │ └── MyMessage.cs │ │ ├── 4_DealingWithSingleton │ │ │ └── CompositionRoot.cs │ │ ├── 5_MakeNotStaticFavouriteTrick │ │ │ └── EmployeeReportCommand.cs │ │ └── AutomatedRefactorings.csproj │ └── TestProject │ │ ├── TestProject.csproj │ │ └── UnitTest1.cs ├── AvoidAutoMockingContainers │ └── AvoidAutoMockingContainers │ │ ├── AvoidAutoMockingContainers.sln │ │ └── AvoidAutoMockingContainers │ │ ├── AvoidAutoMockingContainers.csproj │ │ ├── DataTransfer.cs │ │ ├── IDestination.cs │ │ ├── IService.cs │ │ ├── ISource.cs │ │ ├── README.txt │ │ ├── RestartSequences.cs │ │ ├── _01_WithoutAutoMock.cs │ │ ├── _02_WithSimpleAutoMock.cs │ │ ├── _03_EdgeCaseWithoutAutoMock.cs │ │ └── _04_EdgeCaseWithAutoMock.cs ├── BotsLecture │ ├── .editorconfig │ ├── BotsLecture.sln │ ├── CarRecognition.json │ ├── Lib │ │ ├── FederalDatabase.cs │ │ ├── Lib.csproj │ │ ├── LicensePlateQueryData.cs │ │ ├── LuisApi.cs │ │ ├── PlateIntent.cs │ │ ├── SecretStore.cs │ │ ├── SpeechService.cs │ │ └── User.cs │ ├── _01_NotABot_StructuredInput │ │ ├── Program.cs │ │ └── _01_NotABot_StructuredInput.csproj │ ├── _02_UnstructuredInput │ │ ├── Program.cs │ │ └── _02_UnstructuredInput.csproj │ ├── _03_AudioInput │ │ ├── Program.cs │ │ └── _03_AudioInput.csproj │ ├── _04_AudioOutput │ │ ├── Program.cs │ │ └── _04_AudioOutput.csproj │ ├── _05_Form │ │ ├── LicensePlateQueryForm.cs │ │ ├── Program.cs │ │ └── _05_Form.csproj │ └── _06_Dialog │ │ ├── Dialog.cs │ │ ├── DialogStates.cs │ │ ├── FormFlow.cs │ │ ├── IDialogState.cs │ │ ├── InitialState.cs │ │ ├── InvalidState.cs │ │ ├── LicensePlateQueryForm.cs │ │ ├── Program.cs │ │ ├── WaitingForMissingDataState.cs │ │ └── _06_Dialog.csproj ├── CSharpTricks │ ├── CSharpTricks.sln │ ├── CSharpTricks │ │ ├── CSharpTricks.csproj │ │ └── GetEnumeratorPlayground.cs │ └── TestProject1 │ │ ├── Lol.cs │ │ ├── TestProject1.csproj │ │ └── UnitTest1.cs ├── CommandComparison │ ├── CommandComparison.sln │ ├── CommandComparison │ │ ├── AddUserCommand.cs │ │ ├── AddUserCommandDispatcher.cs │ │ ├── CommandComparisonFactory.csproj │ │ ├── CommandFactory.cs │ │ ├── DispatcherBasedController.cs │ │ ├── ICommandFactory.cs │ │ ├── IResultInProgressFactory.cs │ │ ├── IUserCommandDispatcher.cs │ │ ├── Program.cs │ │ ├── Repository.cs │ │ ├── Result.cs │ │ ├── ResultInProgress.cs │ │ ├── ResultInProgressFactory.cs │ │ ├── User.cs │ │ └── UserDto.cs │ ├── CommandComparisonDispatcher │ │ ├── AddUserCommand.cs │ │ ├── CommandComparisonDispatcher.csproj │ │ ├── CommandFactory.cs │ │ ├── FactoryBasedController.cs │ │ ├── ICommandFactory.cs │ │ ├── IResultInProgressFactory.cs │ │ ├── IUserCommand.cs │ │ ├── Program.cs │ │ ├── Repository.cs │ │ ├── Result.cs │ │ ├── ResultInProgress.cs │ │ ├── ResultInProgressFactory.cs │ │ ├── User.cs │ │ └── UserDto.cs │ ├── DotNetJunkieKata │ │ ├── Address.cs │ │ ├── CustomerController.cs │ │ ├── DeadlockRetryCommandHandlerDecorator.cs │ │ ├── DotNetJunkieKata.csproj │ │ ├── EntityFrameworkUnitOfWork.cs │ │ ├── ICommandHandler.cs │ │ ├── MoveCustomerCommand.cs │ │ ├── MoveCustomerCommandHandler.cs │ │ ├── OtherDependencies.cs │ │ ├── Program.cs │ │ ├── TransactionCommandHandlerDecorator.cs │ │ └── UnitOfWork.cs │ └── DotNetJunkieKataWithCommandFactory │ │ ├── Address.cs │ │ ├── CommandFactory.cs │ │ ├── CustomerController.cs │ │ ├── DeadlockRetryCommandDecorator.cs │ │ ├── DotNetJunkieKataWithCommandFactory.csproj │ │ ├── EntityFrameworkUnitOfWork.cs │ │ ├── ICommand.cs │ │ ├── ICommandFactory.cs │ │ ├── MoveCustomerCommand.cs │ │ ├── OtherDependencies.cs │ │ ├── Program.cs │ │ ├── TransactionCommandDecorator.cs │ │ └── UnitOfWork.cs ├── ConsumerDrivenContracts │ ├── ConsumerDrivenContractTests │ │ ├── ApkaKonsument.cs │ │ ├── ConsumerDrivenContractTests.csproj │ │ ├── ConsumerTests.cs │ │ ├── ProviderTests.cs │ │ ├── UnitTest1.cs │ │ ├── pacts │ │ │ └── Something API Consumer-Something API.json │ │ └── shouldReturnOk.json │ └── ConsumerDrivenContracts.sln ├── ControllerImplementations │ ├── ControllerImplementations.sln │ └── ControllerImplementations │ │ ├── ControllerImplementations.csproj │ │ ├── Controllers │ │ ├── CommandBasedApi │ │ │ ├── DoubleDispatchWithActionResult │ │ │ │ ├── Add │ │ │ │ │ ├── AddPostRequest.cs │ │ │ │ │ ├── AddingInProgress.cs │ │ │ │ │ ├── CreatePostCommand.cs │ │ │ │ │ ├── IActionResultBasedAddingInProgress.cs │ │ │ │ │ ├── IAddPostRequest.cs │ │ │ │ │ └── IAddingInProgress.cs │ │ │ │ ├── CommandFactory.cs │ │ │ │ ├── ExistingPosts.cs │ │ │ │ ├── FakeMain.cs │ │ │ │ ├── Followers.cs │ │ │ │ ├── ICommandFactory.cs │ │ │ │ ├── IFollowers.cs │ │ │ │ ├── IPostCommand.cs │ │ │ │ ├── Link │ │ │ │ │ ├── ExistingPost.cs │ │ │ │ │ ├── IActionResultBasedLinkingInProgress.cs │ │ │ │ │ ├── IExistingPost.cs │ │ │ │ │ ├── IExistingPosts.cs │ │ │ │ │ ├── ILinkingInProgress.cs │ │ │ │ │ ├── LinkPostsCommand.cs │ │ │ │ │ └── LinkingInProgress.cs │ │ │ │ └── PostController.cs │ │ │ └── DoubleDispatchWithWritingToHttpContext │ │ │ │ ├── Add │ │ │ │ ├── AddPostRequest.cs │ │ │ │ ├── AddingInProgress.cs │ │ │ │ ├── CreatePostCommand.cs │ │ │ │ ├── IAddPostRequest.cs │ │ │ │ └── IAddingInProgress.cs │ │ │ │ ├── CommandFactory.cs │ │ │ │ ├── ExistingPosts.cs │ │ │ │ ├── FakeMain.cs │ │ │ │ ├── Followers.cs │ │ │ │ ├── ICommandFactory.cs │ │ │ │ ├── IFollowers.cs │ │ │ │ ├── IPostCommand.cs │ │ │ │ ├── Link │ │ │ │ ├── ExistingPost.cs │ │ │ │ ├── IExistingPost.cs │ │ │ │ ├── IExistingPosts.cs │ │ │ │ ├── ILinkingInProgress.cs │ │ │ │ ├── LinkPostsCommand.cs │ │ │ │ └── LinkingInProgress.cs │ │ │ │ └── PostController.cs │ │ ├── CommandHandlerBasedApi │ │ │ ├── DotNetJunkieVersion │ │ │ │ ├── Add │ │ │ │ │ ├── AddPostCommand.cs │ │ │ │ │ └── AddPostHandler.cs │ │ │ │ ├── ErrorInfo.cs │ │ │ │ ├── ExistingPosts.cs │ │ │ │ ├── FakeMain.cs │ │ │ │ ├── Followers.cs │ │ │ │ ├── IExistingPost.cs │ │ │ │ ├── IExistingPosts.cs │ │ │ │ ├── IFollowers.cs │ │ │ │ ├── IHandler.cs │ │ │ │ ├── IPostAssertions.cs │ │ │ │ ├── Link │ │ │ │ │ ├── LinkPostsCommand.cs │ │ │ │ │ └── LinkPostsHandler.cs │ │ │ │ ├── PostAssertions.cs │ │ │ │ └── PostController.cs │ │ │ ├── ReturningGenericResultVersion │ │ │ │ ├── ActionResultResponseFactory.cs │ │ │ │ ├── Add │ │ │ │ │ ├── AddPostCommand.cs │ │ │ │ │ └── AddPostHandler.cs │ │ │ │ ├── ErrorInfo.cs │ │ │ │ ├── ExistingPosts.cs │ │ │ │ ├── FakeMain.cs │ │ │ │ ├── Followers.cs │ │ │ │ ├── IExistingPost.cs │ │ │ │ ├── IExistingPosts.cs │ │ │ │ ├── IFollowers.cs │ │ │ │ ├── IHandler.cs │ │ │ │ ├── IPostAssertions.cs │ │ │ │ ├── Link │ │ │ │ │ ├── LinkPostsCommand.cs │ │ │ │ │ └── LinkPostsHandler.cs │ │ │ │ ├── PostAssertions.cs │ │ │ │ └── PostController.cs │ │ │ └── ReturningResultMonadVersion │ │ │ │ ├── Add │ │ │ │ ├── AddPostCommand.cs │ │ │ │ └── AddPostHandler.cs │ │ │ │ ├── ErrorInfo.cs │ │ │ │ ├── ExistingPosts.cs │ │ │ │ ├── FakeMain.cs │ │ │ │ ├── Followers.cs │ │ │ │ ├── IExistingPost.cs │ │ │ │ ├── IExistingPosts.cs │ │ │ │ ├── IFollowers.cs │ │ │ │ ├── IHandler.cs │ │ │ │ ├── IPostAssertions.cs │ │ │ │ ├── Link │ │ │ │ ├── LinkPostsCommand.cs │ │ │ │ └── LinkPostsHandler.cs │ │ │ │ ├── PostAssertions.cs │ │ │ │ └── PostController.cs │ │ ├── PostCreatedDto.cs │ │ └── PostDto.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── DesignPatterns │ ├── Command │ │ ├── Command.sln │ │ └── Command │ │ │ ├── App.config │ │ │ ├── Command.csproj │ │ │ ├── Commands │ │ │ ├── AddGroupCommand.cs │ │ │ ├── AggregateCommand.cs │ │ │ ├── DeleteGroupCommand.cs │ │ │ ├── GetGroupCommand.cs │ │ │ ├── GetGroupsCommand.cs │ │ │ ├── LogAndSwallowExceptionsCommand.cs │ │ │ ├── ModifyGroupCommand.cs │ │ │ └── SynchronizedCommand.cs │ │ │ ├── DummyCode │ │ │ ├── Dep1.cs │ │ │ ├── Dep2.cs │ │ │ ├── Dep3.cs │ │ │ ├── Dep4.cs │ │ │ ├── Dep5.cs │ │ │ └── DummyDep.cs │ │ │ ├── Factories │ │ │ ├── DefaultGroupCommandFactory.cs │ │ │ └── SynchronizingInterceptor.cs │ │ │ ├── GroupCommandFactory.cs │ │ │ ├── GroupsController.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ ├── Results │ │ │ ├── ConcreteAggregateResult.cs │ │ │ └── ConcreteResult.cs │ │ │ ├── Startup.cs │ │ │ └── packages.config │ ├── Observer │ │ ├── Observer.sln │ │ └── Observer │ │ │ ├── Common │ │ │ ├── CleanupHistory.cs │ │ │ ├── ICleanUpProcedure.cs │ │ │ ├── ICleanedUpDir.cs │ │ │ ├── ICleanedUpFile.cs │ │ │ ├── ICleanupObserver.cs │ │ │ ├── ISupport.cs │ │ │ ├── NullCleanupObserver.cs │ │ │ ├── ParallelBroadcastingObserver.cs │ │ │ ├── Telemetry.cs │ │ │ ├── ThresholdAlertDetection.cs │ │ │ ├── WhateverCleanedUpDir.cs │ │ │ ├── WhateverCleanedUpProcedure.cs │ │ │ └── WhateverSupport.cs │ │ │ ├── Observer.csproj │ │ │ ├── Tests.cs │ │ │ ├── Usings.cs │ │ │ ├── _01_PushObserverByTheBook │ │ │ ├── CleanupJob.cs │ │ │ ├── CleanupJobSpecification.cs │ │ │ └── ExampleComposition.cs │ │ │ ├── _02_RemovingDetach │ │ │ ├── CleanupJob.cs │ │ │ ├── CleanupJobSpecification.cs │ │ │ └── ExampleComposition.cs │ │ │ ├── _03_ExtractingOneToManyAndExceptionHandling │ │ │ ├── BroadcastingObserver.cs │ │ │ ├── CleanupJob.cs │ │ │ ├── CleanupJobSpecification.cs │ │ │ └── ExampleComposition.cs │ │ │ ├── _04_UsingConstructorInjection │ │ │ ├── BroadcastingObserver.cs │ │ │ ├── CleanupJob.cs │ │ │ ├── CleanupJobSpecification.cs │ │ │ ├── CtorBasedBroadcastingObserver.cs │ │ │ └── ExampleComposition.cs │ │ │ └── _05_NotUsingObserverAtAll │ │ │ ├── BroadcastingObserver.cs │ │ │ ├── CleanupHistory.cs │ │ │ ├── CleanupJob.cs │ │ │ ├── CleanupJobSpecification.cs │ │ │ ├── DiagnosticSubsystem.cs │ │ │ ├── ExampleComposition.cs │ │ │ ├── ICleanupHistory.cs │ │ │ ├── IDiagnosticSubsystem.cs │ │ │ ├── ITelemetry.cs │ │ │ ├── IThresholdAlertDetection.cs │ │ │ ├── Telemetry.cs │ │ │ └── ThresholdAlertDetection.cs │ ├── State │ │ ├── FunctionalState │ │ │ ├── FunctionalState.csproj │ │ │ ├── LightSwitchState.cs │ │ │ ├── LightSwitchStateMachine.cs │ │ │ ├── MainObject.cs │ │ │ ├── OtherServices │ │ │ │ ├── ConsoleOutput.cs │ │ │ │ ├── DiningRoomLight.cs │ │ │ │ ├── Light.cs │ │ │ │ └── Output.cs │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── ProceduralStateMachine │ │ │ ├── LightSwitchState.cs │ │ │ ├── LightSwitchStateMachine.cs │ │ │ ├── MainObject.cs │ │ │ ├── OtherServices │ │ │ │ ├── DiningRoomLight.cs │ │ │ │ ├── Light.cs │ │ │ │ └── Output.cs │ │ │ ├── ProceduralStateMachine.csproj │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── State.sln │ │ ├── State │ │ │ ├── Interfaces │ │ │ │ ├── ILightSwitch.cs │ │ │ │ ├── ILightSwitchState.cs │ │ │ │ ├── LightSwitchContext.cs │ │ │ │ └── LightSwitchStates.cs │ │ │ ├── InterfacesAndRoles.png │ │ │ ├── LightSwitchStateMachine.cs │ │ │ ├── LightSwitchStatesFactory.cs │ │ │ ├── MainObject.cs │ │ │ ├── OtherServices │ │ │ │ ├── ConsoleOutput.cs │ │ │ │ ├── DiningRoomLight.cs │ │ │ │ ├── Light.cs │ │ │ │ └── Output.cs │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── State.csproj │ │ │ ├── States │ │ │ │ ├── SwitchedOffState.cs │ │ │ │ └── SwitchedOnState.cs │ │ │ └── Synchronization │ │ │ │ └── SynchronizedLightSwitch.cs │ │ ├── StateWithImplicitContextPassing │ │ │ ├── App.config │ │ │ ├── Interfaces │ │ │ │ ├── LightSwitch.cs │ │ │ │ ├── LightSwitchContext.cs │ │ │ │ ├── LightSwitchState.cs │ │ │ │ └── LightSwitchStates.cs │ │ │ ├── LightSwitchStateMachine.cs │ │ │ ├── LightSwitchStatesFactory.cs │ │ │ ├── MainObject.cs │ │ │ ├── OtherServices │ │ │ │ ├── ConsoleOutput.cs │ │ │ │ ├── DiningRoomLight.cs │ │ │ │ ├── Light.cs │ │ │ │ └── Output.cs │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── StateWithImplicitContextPassing.csproj │ │ │ ├── States │ │ │ │ ├── SwitchedOffState.cs │ │ │ │ └── SwitchedOnState.cs │ │ │ └── Synchronization │ │ │ │ └── SynchronizedLightSwitch.cs │ │ ├── StateWithReturnedNextState │ │ │ ├── App.config │ │ │ ├── Interfaces │ │ │ │ ├── LightSwitch.cs │ │ │ │ ├── LightSwitchContext.cs │ │ │ │ ├── LightSwitchState.cs │ │ │ │ └── LightSwitchStates.cs │ │ │ ├── LightSwitchStateMachine.cs │ │ │ ├── LightSwitchStatesFactory.cs │ │ │ ├── MainObject.cs │ │ │ ├── OtherServices │ │ │ │ ├── ConsoleOutput.cs │ │ │ │ ├── DiningRoomLight.cs │ │ │ │ ├── Light.cs │ │ │ │ └── Output.cs │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── StateWithReturnedNextState.csproj │ │ │ ├── States │ │ │ │ ├── SwitchedOffState.cs │ │ │ │ └── SwitchedOnState.cs │ │ │ └── Synchronization │ │ │ │ └── SynchronizedLightSwitch.cs │ │ └── TestingStatePattern │ │ │ ├── BlackBox │ │ │ └── LightSwitchStateMachineSpecification.cs │ │ │ ├── Parts │ │ │ └── LightSwitchStateMachineSpecification.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ ├── TestingStatePattern.csproj │ │ │ └── packages.config │ └── VisitorPattern │ │ ├── AuthorizationStructure │ │ ├── .cr │ │ │ └── personal │ │ │ │ └── FavoritesList │ │ │ │ └── List.xml │ │ ├── AuthorizationStructure.sln │ │ ├── AuthorizationStructureExample │ │ │ ├── AddEventsSpecification.cs │ │ │ ├── AuthorizationStructureExample.csproj │ │ │ ├── CheckingUserAccessSpecification.cs │ │ │ ├── DumpSpecification.cs │ │ │ ├── DumpSubtreeSpecification.cs │ │ │ ├── ExistenceCheckSpecification.cs │ │ │ ├── InvalidOperationsSpecification.cs │ │ │ ├── Missing.md │ │ │ ├── ProductionCode │ │ │ │ ├── AuthorizationStructure.cs │ │ │ │ ├── GlobalUsings.cs │ │ │ │ ├── IChangeEventsTarget.cs │ │ │ │ ├── INode.cs │ │ │ │ ├── NodeId.cs │ │ │ │ ├── NodeType.cs │ │ │ │ ├── Nodes │ │ │ │ │ ├── Device.cs │ │ │ │ │ ├── Group.cs │ │ │ │ │ ├── NullNode.cs │ │ │ │ │ └── User.cs │ │ │ │ └── PropertyNames.cs │ │ │ ├── RemovalEventsSpecification.cs │ │ │ ├── RetrievingIdsForGroupSpecification.cs │ │ │ ├── RetrievingIdsForNetworkNameSpecification.cs │ │ │ ├── RetrievingIdsForUserSpecification.cs │ │ │ └── RetrievingIntersectionSpecification.cs │ │ └── AuthorizationStructureExampleWithVisitor │ │ │ ├── AddEventsSpecification.cs │ │ │ ├── AuthorizationStructureExampleWithVisitor.csproj │ │ │ ├── CheckingUserAccessSpecification.cs │ │ │ ├── DumpSpecification.cs │ │ │ ├── DumpSubtreeSpecification.cs │ │ │ ├── ExistenceCheckSpecification.cs │ │ │ ├── InvalidOperationsSpecification.cs │ │ │ ├── Missing.md │ │ │ ├── ProductionCode │ │ │ ├── AuthorizationStructure.cs │ │ │ ├── GlobalUsings.cs │ │ │ ├── IChangeEventsTarget.cs │ │ │ ├── INode.cs │ │ │ ├── INodeVisitor.cs │ │ │ ├── NodeId.cs │ │ │ ├── NodeType.cs │ │ │ ├── Nodes │ │ │ │ ├── Device.cs │ │ │ │ ├── Group.cs │ │ │ │ ├── NullNode.cs │ │ │ │ └── User.cs │ │ │ ├── PropertyNames.cs │ │ │ └── Visitors │ │ │ │ ├── AddChildVisitor.cs │ │ │ │ ├── CollectDeviceIdsBelongingToGroupVisitor.cs │ │ │ │ ├── CollectDevicesByNetworkNameVisitor.cs │ │ │ │ ├── CollectUserOwnedDeviceIdsVisitor.cs │ │ │ │ ├── ContainsNodeIdVisitor.cs │ │ │ │ ├── FindDevicesIntersectionVisitor.cs │ │ │ │ ├── GetOwnedDeviceIdsFromAmongVisitor.cs │ │ │ │ ├── RemoveChildVisitor.cs │ │ │ │ └── UserOwnsDeviceVisitor.cs │ │ │ ├── RemovalEventsSpecification.cs │ │ │ ├── RetrievingIdsForGroupSpecification.cs │ │ │ ├── RetrievingIdsForNetworkNameSpecification.cs │ │ │ ├── RetrievingIdsForUserSpecification.cs │ │ │ └── RetrievingIntersectionSpecification.cs │ │ ├── CourtesyImplementation │ │ ├── CourtesyImplementation.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── _1_Downcasting │ │ │ ├── Box.cs │ │ │ ├── Elephant.cs │ │ │ ├── Node.cs │ │ │ └── Test.cs │ │ ├── _2_CourtesyImplementation │ │ │ ├── Box.cs │ │ │ ├── Elephant.cs │ │ │ ├── Node.cs │ │ │ └── Test.cs │ │ ├── _3_TellDontAsk │ │ │ ├── Box.cs │ │ │ ├── Elephant.cs │ │ │ ├── ElephantCounter.cs │ │ │ ├── Melon.cs │ │ │ ├── Node.cs │ │ │ └── Test.cs │ │ ├── _4_Visitor │ │ │ ├── Box.cs │ │ │ ├── Elephant.cs │ │ │ ├── ElephantCountingVisitor.cs │ │ │ ├── Node.cs │ │ │ ├── NodeVisitor.cs │ │ │ └── Test.cs │ │ └── packages.config │ │ ├── VisitorPattern.sln │ │ └── VisitorPattern │ │ ├── Class1.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ └── VisitorPattern.csproj ├── DomainSpecificLanguages │ └── DomainSpecificLanguages │ │ ├── AlarmsNestedFunctions │ │ ├── ApplicationRoot.cs │ │ ├── ApplicationRoot2.cs │ │ ├── Class1.cs │ │ ├── Core │ │ │ ├── AcmeProcessingWorkflow.cs │ │ │ └── TeleComSystem.cs │ │ ├── InMessages │ │ │ ├── NullMessage.cs │ │ │ ├── StartMessage.cs │ │ │ └── StopMessage.cs │ │ ├── Inbound │ │ │ ├── BinaryParsing.cs │ │ │ ├── MessageInbound.cs │ │ │ └── UdpSocket.cs │ │ ├── Interfaces │ │ │ ├── AcmeMessage.cs │ │ │ └── DataDestination.cs │ │ ├── Outbound │ │ │ ├── MessageOutbound.cs │ │ │ ├── TcpSocket.cs │ │ │ ├── XmlMarshalling.cs │ │ │ ├── XmlOutboundMessage.cs │ │ │ └── XmlOutboundMessageFactory.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Services │ │ │ ├── ActiveDirectoryBasedAuthorization.cs │ │ │ ├── MsSqlBasedRepository.cs │ │ │ └── SqlDataDestination.cs │ │ └── TelecomSystemNestedFunctions.csproj │ │ ├── AlarmsWithNestedFunctions │ │ ├── Alarm.cs │ │ ├── Alarms │ │ │ ├── CompoundAlarm.cs │ │ │ ├── LoudAlarm.cs │ │ │ ├── NoAlarm.cs │ │ │ ├── ParallelCompoundAlarm.cs │ │ │ ├── SilentAlarm.cs │ │ │ └── SwitchableAlarm.cs │ │ ├── AlarmsWithNestedFunctions.csproj │ │ ├── Building.cs │ │ ├── CompositionRoot.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── SwitchCriteria.cs │ │ └── SwitchCriterias │ │ │ ├── CompoundSwitchCriteria.cs │ │ │ ├── MetDuringTheDayCriteria.cs │ │ │ └── MetOnWorkDayCriteria.cs │ │ ├── ClosuresXhtmlBuilder │ │ ├── Builder.cs │ │ ├── ClosuresXhtmlBuilder.csproj │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── CombosClassicNestedFunctions │ │ ├── ComboSyntax.cs │ │ ├── CombosClassicNestedFunctions.csproj │ │ ├── JinKazama.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── CombosDynamicParsingOfNonExistentMethod │ │ ├── ComboSyntax.cs │ │ ├── CombosDynamicParsingOfNonExistentMethod.csproj │ │ ├── JinKazama.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ │ ├── CombosExtensionMethods │ │ ├── ComboSyntax.cs │ │ ├── CombosExtensionMethods.csproj │ │ ├── JinKazama.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── CombosFunctionSequence │ │ ├── Class1.cs │ │ ├── ComboData.cs │ │ ├── ComboSyntax.cs │ │ ├── CombosFunctionSequence.csproj │ │ ├── JinKazama.cs │ │ ├── KeyPress.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── CombosMethodChaining │ │ ├── ComboBuilder.cs │ │ ├── ComboData.cs │ │ ├── CombosMethodChaining.csproj │ │ ├── JinKazama.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── CombosNestedFunctions │ │ ├── ComboSyntax.cs │ │ ├── CombosFancyNestedFunctionsAndOperators.csproj │ │ ├── JinKazama.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── CommandQuerySeparation │ │ ├── 00_WellKnownViolations │ │ │ └── Example.cs │ │ ├── 01_ReturningPlainTypes │ │ │ ├── DeletedFiles.cs │ │ │ ├── DeletedFilesFactory.cs │ │ │ ├── Example.cs │ │ │ ├── FileListDestination.cs │ │ │ ├── FileListWidget.cs │ │ │ ├── FileSystem.cs │ │ │ └── MyDeletedFiles.cs │ │ ├── 02_ReturningAbstraction │ │ │ ├── DeletedFiles.cs │ │ │ ├── DeletedFilesFactory.cs │ │ │ ├── Example.cs │ │ │ ├── FileListDestination.cs │ │ │ ├── FileListWidget.cs │ │ │ ├── FileSystem.cs │ │ │ └── MyDeletedFiles.cs │ │ ├── 03_PassAbstraction │ │ │ ├── DeletedFiles.cs │ │ │ ├── Example.cs │ │ │ ├── FileListDestination.cs │ │ │ ├── FileListWidget.cs │ │ │ └── FileSystem.cs │ │ ├── 04_QueryFirst │ │ │ ├── Example.cs │ │ │ ├── FileListDestination.cs │ │ │ ├── FileListWidget.cs │ │ │ ├── FileSystem.cs │ │ │ ├── Fileset.cs │ │ │ ├── FilesetsFactory.cs │ │ │ └── MyFileset.cs │ │ ├── CommandQuerySeparation.csproj │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── DomainSpecificLanguages.sln │ │ ├── DomainSpecificLanguages │ │ ├── CQS.cs │ │ ├── DomainSpecificLanguages.csproj │ │ ├── LiteralExtensionsExample.cs │ │ ├── MakeCalc.cs │ │ ├── PathExample.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ │ └── Instruction.txt ├── EventAnomalies │ ├── EventAnomalies.sln │ ├── EventAnomalies │ │ ├── ErrorHandling.cs │ │ ├── EventAnomalies.csproj │ │ ├── Example1 │ │ │ ├── ExampleUsage.cs │ │ │ └── Nonsense1.cs │ │ ├── Example2 │ │ │ ├── ConsoleErrorService.cs │ │ │ ├── ExampleUsage.cs │ │ │ ├── IErrorService.cs │ │ │ └── Nonsense2.cs │ │ ├── Example3 │ │ │ ├── ConsoleErrorService.cs │ │ │ ├── ExampleUsage.cs │ │ │ └── Nonsense3.cs │ │ ├── Example4 │ │ │ ├── ConsoleErrorService.cs │ │ │ ├── ExampleUsage.cs │ │ │ └── MakesSense.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ ├── PrivateMethodsAsEventHandlers │ │ ├── BiDirectionalDictionary.cs │ │ ├── ExpiryPolicy.cs │ │ ├── PrivateMethodsAsEventHandlers.csproj │ │ ├── Program.cs │ │ └── RemoveEventArgs.cs │ └── PrivateMethodsAsEventHandlersRegisteredInMethod │ │ ├── BiDirectionalDictionary.cs │ │ ├── PrivateMethodsAsEventHandlersRegisteredInMethod.csproj │ │ ├── Program.cs │ │ ├── RemoveEventArgs.cs │ │ └── ValueExpiryPolicy.cs ├── FakeItTillYouMakeIt │ ├── FakeItTillYouMakeIt.sln │ ├── FakeItTillYouMakeIt │ │ ├── FakeItTillYouMakeIt.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── FakeItTillYouMakeItSpecification │ │ ├── FakeItTillYouMakeItSpecification.csproj │ │ └── UnitTest1.cs ├── FrodoEntersTheRoom │ ├── FrodoEntersTheRoom.sln │ ├── FrodoEntersTheRoom │ │ ├── .editorconfig │ │ ├── Dialog.cs │ │ ├── DialogState.cs │ │ ├── DialogStorage.cs │ │ ├── FrodoEntersTheRoom.csproj │ │ ├── HttpBasedResponse.cs │ │ ├── IDialog.cs │ │ ├── IIntent.cs │ │ ├── IResponse.cs │ │ ├── IntentFactory.cs │ │ ├── KillCharacterIntent.cs │ │ ├── NoIntent.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── ServiceLogicRoot.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── FrodoEntersTheRoomSpecification │ │ ├── DialogSpecification.cs │ │ ├── FrodoEntersTheRoomSpecification.csproj │ │ └── KillCharacterIntentSpecification.cs ├── Generics │ ├── Agenda.txt │ ├── Generics.sln │ └── Generics │ │ ├── Generics.csproj │ │ ├── Usings.cs │ │ ├── _01_SimpleGenericClass.cs │ │ ├── _02_StaticsInGenerics.cs │ │ ├── _03_GenericInterfaces.cs │ │ └── _04_GenericMethods.cs ├── Http2StreamingExample │ ├── Http2Client │ │ ├── Http2Client.csproj │ │ └── Program.cs │ ├── Http2Example.sln │ ├── Http2Server │ │ ├── Http2Server.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── Http2StreamingExample.sln ├── Kata │ ├── DigitsRandori │ │ ├── DigitsRandori.sln │ │ └── DigitsRandori │ │ │ ├── Cell.cs │ │ │ ├── Class1.cs │ │ │ ├── CompositionRoot.cs │ │ │ ├── DigitalDisplayDriver.cs │ │ │ ├── DigitsRandori.csproj │ │ │ ├── Display.cs │ │ │ ├── LightableCell.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ ├── Row.cs │ │ │ ├── app.config │ │ │ └── packages.config │ ├── FizzBuzz │ │ ├── FizzBuzz.sln │ │ └── FizzBuzz │ │ │ ├── App.config │ │ │ ├── BuzzGenerator.cs │ │ │ ├── DefaultGenerator.cs │ │ │ ├── FizzBuzz.csproj │ │ │ ├── FizzBuzzAlgorithm.cs │ │ │ ├── FizzBuzzConverter.cs │ │ │ ├── FizzBuzzSpecification.cs │ │ │ ├── FizzGenerator.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ └── packages.config │ ├── FizzBuzzCore │ │ ├── AspectsOfImmutability │ │ │ ├── Age.cs │ │ │ ├── AmIImmutable.cs │ │ │ └── AspectsOfImmutability.csproj │ │ ├── FizzBuzzCore.sln │ │ ├── FizzBuzzCore │ │ │ ├── BuzzRule.cs │ │ │ ├── FizzBuzzAlgorithm.cs │ │ │ ├── FizzBuzzAlgorithmSpecification.cs │ │ │ ├── FizzBuzzCore.csproj │ │ │ ├── FizzBuzzRule.cs │ │ │ ├── FizzRule.cs │ │ │ ├── IRule.cs │ │ │ └── ToStringRule.cs │ │ ├── FizzBuzzRecruitment │ │ │ ├── FizzBuzzRecruitment.csproj │ │ │ └── Tests.cs │ │ ├── NUnitTestProject1 │ │ │ ├── DI │ │ │ │ ├── InjectMe1.cs │ │ │ │ ├── InjectMe2.cs │ │ │ │ ├── InjectMe3.cs │ │ │ │ └── ThreeFormsOfInjection.cs │ │ │ ├── NUnitTestProject1.csproj │ │ │ └── Refactoring │ │ │ │ └── ExpressionRefactoring.cs │ │ ├── RecruitmentExercises │ │ │ ├── DecouplingFromGui.cs │ │ │ ├── ElephantBox.cs │ │ │ └── RecruitmentExercises.csproj │ │ ├── SOLID.DIP.Domain │ │ │ ├── DomainLogic.cs │ │ │ └── SOLID.DIP.Domain.csproj │ │ ├── SOLID.DIP.Persistence │ │ │ ├── Database.cs │ │ │ └── SOLID.DIP.Persistence.csproj │ │ └── SOLID.DIP.Root │ │ │ ├── RootObject.cs │ │ │ └── SOLID.DIP.Root.csproj │ ├── ImageArchivistKata │ │ ├── ImageArchivistKata.sln │ │ └── ImageArchivistKata │ │ │ ├── FileSystemFactory.cs │ │ │ ├── FolderNode.cs │ │ │ ├── IFileSystem.cs │ │ │ ├── IFileSystemNode.cs │ │ │ ├── IFolder.cs │ │ │ ├── IImageFile.cs │ │ │ ├── IUnidentifiedFile.cs │ │ │ ├── IVisitor.cs │ │ │ ├── ImageArchivistKata.csproj │ │ │ ├── ImageCopyingVisitor.cs │ │ │ ├── ImageFile.cs │ │ │ ├── Program.cs │ │ │ ├── SystemIoBasedFileSystem.cs │ │ │ ├── Tests.cs │ │ │ └── UnidentifiedFileNode.cs │ ├── KataTrainReservationTddEbook │ │ ├── KataTrainReservationTddEbook.sln │ │ ├── KataTrainReservationTddEbook │ │ │ ├── CheckWhetherThereAreEnoughSeatsInAnyCoach.cs │ │ │ ├── CheckWhetherThereAreEnoughSeatsInTheTrain.cs │ │ │ ├── Coach.cs │ │ │ ├── CommandFactory.cs │ │ │ ├── DtoBasedReservationInProgress.cs │ │ │ ├── EntryPoint.cs │ │ │ ├── IBookingProcess.cs │ │ │ ├── IBookingStep.cs │ │ │ ├── IReservationReferenceService.cs │ │ │ ├── ISeat.cs │ │ │ ├── ITrain.cs │ │ │ ├── KataTrainReservationTddEbook.csproj │ │ │ ├── MakeReservation.cs │ │ │ ├── Percentage.cs │ │ │ ├── PersistentData │ │ │ │ └── SeatDto.cs │ │ │ ├── Request │ │ │ │ └── ReservationRequestDto.cs │ │ │ ├── ReservableTrain.cs │ │ │ ├── ReservableTrainSpecification.cs │ │ │ ├── ReservationCommand.cs │ │ │ ├── ReservationInProgress.cs │ │ │ ├── ReservationInProgressFactory.cs │ │ │ ├── Response │ │ │ │ ├── ReservationDto.cs │ │ │ │ └── TicketDto.cs │ │ │ ├── Specification │ │ │ │ └── TicketOfficeSpecification.cs │ │ │ ├── StandardBookingProcess.cs │ │ │ ├── TicketOffice.cs │ │ │ ├── TicketOfficeCommandFactory.cs │ │ │ ├── TodoReservationInProgressFactory.cs │ │ │ ├── TrainDataService.cs │ │ │ ├── TrainId.cs │ │ │ ├── TrainIdSpecification.cs │ │ │ ├── TrainReservationCommand.cs │ │ │ ├── Trains.cs │ │ │ ├── Usings.cs │ │ │ └── WebApp.cs │ │ ├── TrainReservationService │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── TrainReservationService.csproj │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ └── TrainReservationServiceSpecification │ │ │ ├── TrainReservationServiceSpecification.csproj │ │ │ ├── UnitTest1.cs │ │ │ └── Usings.cs │ ├── KataTrainReservationTddEbook_MoreTellDontAsk │ │ ├── .cr │ │ │ └── personal │ │ │ │ └── FavoritesList │ │ │ │ └── List.xml │ │ ├── .vs │ │ │ └── ProjectEvaluation │ │ │ │ ├── katatrainreservationtddebook.metadata.v6.1 │ │ │ │ └── katatrainreservationtddebook.projects.v6.1 │ │ ├── KataTrainReservationTddEbook.sln │ │ ├── KataTrainReservationTddEbook │ │ │ ├── Coach.cs │ │ │ ├── CoachReservabilityVisitor.cs │ │ │ ├── CoachSoftLimitReservabilityVisitor.cs │ │ │ ├── CommandFactory.cs │ │ │ ├── DtoBasedReservationInProgress.cs │ │ │ ├── EntryPoint.cs │ │ │ ├── IReservationReferenceService.cs │ │ │ ├── ISeat.cs │ │ │ ├── ITrain.cs │ │ │ ├── KataTrainReservationTddEbook.csproj │ │ │ ├── Percentage.cs │ │ │ ├── PersistentData │ │ │ │ └── SeatDto.cs │ │ │ ├── Request │ │ │ │ └── ReservationRequestDto.cs │ │ │ ├── ReservableTrain.cs │ │ │ ├── ReservableTrainSpecification.cs │ │ │ ├── ReservationCommand.cs │ │ │ ├── ReservationInProgress.cs │ │ │ ├── ReservationInProgressFactory.cs │ │ │ ├── Response │ │ │ │ ├── ReservationDto.cs │ │ │ │ └── TicketDto.cs │ │ │ ├── Specification │ │ │ │ └── TicketOfficeSpecification.cs │ │ │ ├── TicketOffice.cs │ │ │ ├── TicketOfficeCommandFactory.cs │ │ │ ├── TicketOfficeCommandFactorySpecification.cs │ │ │ ├── TodoReservationInProgressFactory.cs │ │ │ ├── TrainDataService.cs │ │ │ ├── TrainHardLimitReservabilityVisitor.cs │ │ │ ├── TrainId.cs │ │ │ ├── TrainIdSpecification.cs │ │ │ ├── TrainReservationCommand.cs │ │ │ ├── Trains.cs │ │ │ ├── Usings.cs │ │ │ └── WebApp.cs │ │ ├── TrainReservationService │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── TrainReservationService.csproj │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ └── TrainReservationServiceSpecification │ │ │ ├── TrainReservationServiceSpecification.csproj │ │ │ ├── UnitTest1.cs │ │ │ └── Usings.cs │ ├── LedDisplayKata │ │ ├── LED1.sln │ │ └── LED1 │ │ │ ├── AcceptanceSpecification.cs │ │ │ ├── BlankSpace.cs │ │ │ ├── CircularDisplayable.cs │ │ │ ├── CircularDisplayableSpecification.cs │ │ │ ├── CompositionRoot.cs │ │ │ ├── Display.cs │ │ │ ├── Displayable.cs │ │ │ ├── Driver.cs │ │ │ ├── DriverSpecification.cs │ │ │ ├── LED1.csproj │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ ├── Row.cs │ │ │ ├── SegmentFactory.cs │ │ │ ├── SwitchableSegment.cs │ │ │ ├── SwitchableSegmentSpecification.cs │ │ │ └── packages.config │ ├── OutsideInTdd │ │ ├── OutsideInTdd.sln │ │ ├── OutsideInTdd │ │ │ ├── Adapters │ │ │ │ ├── AddTodoEndpoint.cs │ │ │ │ ├── AddTodoResponseInProgress.cs │ │ │ │ ├── EndpointsRoot.cs │ │ │ │ ├── GetAllTodosEndpoint.cs │ │ │ │ ├── ITodoEndpoint.cs │ │ │ │ ├── NoteDeserializer.cs │ │ │ │ ├── RetrieveTodoResponse.cs │ │ │ │ ├── ServiceLogicRoot.cs │ │ │ │ ├── Startup.cs │ │ │ │ └── TodoNoteDao.cs │ │ │ ├── App │ │ │ │ ├── AddNoteCommand.cs │ │ │ │ ├── AppLogicRoot.cs │ │ │ │ ├── IAddTodoResponseInProgress.cs │ │ │ │ ├── IRetrieveTodoResponse.cs │ │ │ │ ├── ITodoCommand.cs │ │ │ │ ├── ITodoNoteDao.cs │ │ │ │ ├── InappropriateWordException.cs │ │ │ │ ├── NewNoteRequest.cs │ │ │ │ ├── RetrieveAllNotesCommand.cs │ │ │ │ ├── TodoCommandFactory.cs │ │ │ │ └── TodoNoteDto.cs │ │ │ ├── OutsideInTdd.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OutsideInTddBoxSpecification │ │ │ ├── AllRetrievedNotes.cs │ │ │ ├── AppDriver.cs │ │ │ ├── Integration │ │ │ │ ├── DataAccessIntegrationSpecification.cs │ │ │ │ ├── EndpointIntegrationDriver.cs │ │ │ │ └── EndpointIntegrationSpecification.cs │ │ │ ├── ManagingNotesSpecification.cs │ │ │ └── OutsideInTddBoxSpecification.csproj │ │ └── OutsideInTddSpecification │ │ │ ├── App │ │ │ └── AddNoteCommandSpecification.cs │ │ │ ├── ArchitectureSpecification.cs │ │ │ ├── ComponentSpecification │ │ │ └── ComponentSpecification.cs │ │ │ └── OutsideInTddSpecification.csproj │ ├── OutsideInTdd2 │ │ └── TodoApp1 │ │ │ ├── ApplicationLogic │ │ │ ├── AddNewTodoNote │ │ │ │ ├── AddTodoCommand.cs │ │ │ │ ├── NoteDefinitionByDto.cs │ │ │ │ └── NotifyRequesterOnSuccessfulNotePersistence.cs │ │ │ ├── ApplicationLogic.csproj │ │ │ ├── ApplicationLogicRoot.cs │ │ │ ├── Ports │ │ │ │ ├── IAddTodoResponseInProgress.cs │ │ │ │ ├── IGetTodoNoteResponseInProgress.cs │ │ │ │ ├── ITodoAppCommand.cs │ │ │ │ ├── ITodoCommandFactory.cs │ │ │ │ ├── ITodoNoteDao.cs │ │ │ │ ├── NewTodoNoteDefinitionDto.cs │ │ │ │ ├── TodoNoteDto.cs │ │ │ │ └── TodoNoteMetadataDto.cs │ │ │ ├── RetrieveTodoNoteCommand.cs │ │ │ └── TodoCommandFactory.cs │ │ │ ├── ApplicationLogicTests │ │ │ ├── AddNewTodoNote │ │ │ │ ├── AddTodoCommandTests.cs │ │ │ │ └── NoteDefinitionByDtoTests.cs │ │ │ ├── AppLogicTests │ │ │ │ ├── Automation │ │ │ │ │ ├── AddTodoNoteResponse.cs │ │ │ │ │ ├── AppLogicDriver.cs │ │ │ │ │ ├── FakeTodoNoteDao.cs │ │ │ │ │ └── RetrieveTodoNoteResponse.cs │ │ │ │ └── Tests.cs │ │ │ ├── ApplicationLogicTests.csproj │ │ │ └── GlobalUsings.cs │ │ │ ├── TodoApp1.sln │ │ │ ├── TodoApp1 │ │ │ ├── Bootstrap │ │ │ │ └── ServiceLogicRoot.cs │ │ │ ├── Database │ │ │ │ ├── DatabaseAdapterRoot.cs │ │ │ │ ├── DatabaseOptions.cs │ │ │ │ └── InMemoryTodoNoteDao.cs │ │ │ ├── DiContainerExtensions.cs │ │ │ ├── Endpoints │ │ │ │ ├── AddTodoEndpoint.cs │ │ │ │ ├── AddTodoResponseInProgress.cs │ │ │ │ ├── EndpointsAdapterRoot.cs │ │ │ │ ├── GetTodoNoteResponseInProgress.cs │ │ │ │ ├── HeaderValidatingEndpoint.cs │ │ │ │ ├── IEndpoint.cs │ │ │ │ ├── IEndpointsRoot.cs │ │ │ │ └── RetrieveTodoNoteEndpoint.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── TodoApp1.csproj │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ │ └── TodoApp1Tests │ │ │ ├── AdapterTests │ │ │ ├── Database │ │ │ │ ├── DatabaseAdapterDriver.cs │ │ │ │ └── DatabaseAdapterTests.cs │ │ │ └── Endpoints │ │ │ │ ├── AddTodoEndpointTests.cs │ │ │ │ ├── Automation │ │ │ │ ├── AddTodoItemRequest.cs │ │ │ │ ├── AddTodoItemResponse.cs │ │ │ │ ├── ConfigurableCommand.cs │ │ │ │ ├── EndpointsAdapterDriver.cs │ │ │ │ ├── FactoryForSuccessfulCommands.cs │ │ │ │ └── RetrieveTodoItemResponse.cs │ │ │ │ └── RetrieveTodoEndpointTests.cs │ │ │ ├── GlobalUsings.cs │ │ │ ├── HostTests │ │ │ ├── Automation │ │ │ │ ├── AppDriver.cs │ │ │ │ ├── AttemptToCreateTodoNoteResponse.cs │ │ │ │ ├── CreateTodoNoteResponse.cs │ │ │ │ └── RetrieveTodoNoteResponse.cs │ │ │ └── Tests.cs │ │ │ ├── TestDtos │ │ │ ├── NewTodoNoteDefinitionTestDto.cs │ │ │ ├── TodoNoteMetadataTestDto.cs │ │ │ └── TodoNoteTestDto.cs │ │ │ └── TodoApp1Tests.csproj │ ├── PathValueObjectsRandori │ │ ├── PathValueObjectsRandori.sln │ │ └── PathValueObjectsRandori │ │ │ ├── Main.cs │ │ │ ├── PathValueObjectsRandori.csproj │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ ├── app.config │ │ │ └── packages.config │ ├── PloehKata │ │ ├── PloehKata.sln │ │ ├── PloehKata │ │ │ ├── Adapters │ │ │ │ ├── ConnectionInProgressFactory.cs │ │ │ │ ├── ConnectionsController.cs │ │ │ │ ├── IActionResultBasedConnectionInProgress.cs │ │ │ │ ├── IConnectionInProgressFactory.cs │ │ │ │ ├── JsonBasedConnectionInProgress.cs │ │ │ │ └── NoResultException.cs │ │ │ ├── Bootstrap │ │ │ │ ├── ApplicationLogicRoot.cs │ │ │ │ ├── Program.cs │ │ │ │ └── Startup.cs │ │ │ ├── Logic │ │ │ │ ├── Connectee.cs │ │ │ │ ├── ConnectionUseCase.cs │ │ │ │ ├── Connector.cs │ │ │ │ ├── IConnectee.cs │ │ │ │ ├── IConnector.cs │ │ │ │ ├── IConnectorDestination.cs │ │ │ │ ├── IExistingConnector.cs │ │ │ │ ├── IUserLookup.cs │ │ │ │ ├── InvalidConnecteeIdException.cs │ │ │ │ ├── InvalidConnectorIdException.cs │ │ │ │ ├── NoConnectee.cs │ │ │ │ ├── NoConnector.cs │ │ │ │ ├── UserDestination.cs │ │ │ │ ├── UserLookup.cs │ │ │ │ └── UserUseCaseFactory.cs │ │ │ ├── PloehKata.csproj │ │ │ ├── Ports │ │ │ │ ├── IConnectionInProgress.cs │ │ │ │ ├── IPersistence.cs │ │ │ │ ├── IUserUseCase.cs │ │ │ │ ├── IUserUseCaseFactory.cs │ │ │ │ └── UserDto.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ └── PloehKataSpecification │ │ │ ├── ApplicationLogicSpecification │ │ │ ├── ApplicationLogicDriver.cs │ │ │ └── ConnectingUsersSpecification.cs │ │ │ ├── ConnecteeSpecification.cs │ │ │ ├── ConnectionInProgressFactorySpecification.cs │ │ │ ├── ConnectionInProgressSpecification.cs │ │ │ ├── ConnectionUseCaseSpecification.cs │ │ │ ├── ConnectionsControllerSpecification.cs │ │ │ ├── ConnectorSpecification.cs │ │ │ ├── NoConnecteeSpecification.cs │ │ │ ├── NoConnectorSpecification.cs │ │ │ ├── PloehKataSpecification.csproj │ │ │ ├── UserDestinationSpecification.cs │ │ │ ├── UserLookupSpecification.cs │ │ │ └── UserUseCaseFactorySpecification.cs │ ├── ValidationsKata │ │ ├── ProductionCode │ │ │ ├── MainModule.cs │ │ │ ├── ProductionCode.csproj │ │ │ └── ThirdParty │ │ │ │ ├── CrazyStuffAttribute.cs │ │ │ │ ├── SubscriptionRequestData.cs │ │ │ │ └── WeirdRoutingInfoAttribute.cs │ │ ├── ValidationsKata.sln │ │ └── ValidationsKata │ │ │ ├── ProductionCodeSpecification.csproj │ │ │ └── Trolololo.cs │ └── VotingSystem │ │ ├── Empty │ │ ├── .vs │ │ │ └── config │ │ │ │ └── applicationhost.config │ │ ├── ApplicationLogic │ │ │ ├── ApplicationLogic.csproj │ │ │ └── Ports │ │ │ │ └── UserDto.cs │ │ ├── Bootstrap │ │ │ ├── Bootstrap.csproj │ │ │ ├── CompositionRoot │ │ │ │ ├── Program.cs │ │ │ │ └── Startup.cs │ │ │ ├── Controllers │ │ │ │ └── UsersController.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ComponentSpecification │ │ │ └── ComponentSpecification.csproj │ │ ├── EndToEndSpecification │ │ │ ├── AutomationLayer │ │ │ │ ├── AppDriver.cs │ │ │ │ ├── CreateUserResponse.cs │ │ │ │ └── GetUserResponse.cs │ │ │ └── EndToEndSpecification.csproj │ │ ├── Lib │ │ │ ├── AnyExtensions.cs │ │ │ ├── Lib.csproj │ │ │ └── UserDtoBuilder.cs │ │ └── VotingSystem.sln │ │ └── Solved │ │ ├── .vs │ │ └── config │ │ │ └── applicationhost.config │ │ ├── ApplicationLogic │ │ ├── ApplicationLogic.csproj │ │ ├── CommandFactory.cs │ │ ├── GetUserByIdQuery.cs │ │ ├── Ports │ │ │ ├── IRegisterUserCommand.cs │ │ │ ├── IResultBuilder.cs │ │ │ ├── IUsersRepository.cs │ │ │ └── UserDto.cs │ │ ├── RegisterUserCommand.cs │ │ └── UserUnderRegistration.cs │ │ ├── Bootstrap │ │ ├── Bootstrap.csproj │ │ ├── CompositionRoot │ │ │ ├── ApplicationLogicRoot.cs │ │ │ ├── Program.cs │ │ │ └── Startup.cs │ │ ├── Controllers │ │ │ ├── ResultBuilder.cs │ │ │ ├── UsersController.cs │ │ │ └── UsersRepository.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ │ ├── ComponentSpecification │ │ ├── AutomationLayer │ │ │ ├── ComponentDriver.cs │ │ │ ├── InMemoryUsersRepository.cs │ │ │ └── QueriedTestUser.cs │ │ ├── ComponentSpecification.csproj │ │ └── UsersSpecification.cs │ │ ├── EndToEndSpecification │ │ ├── AutomationLayer │ │ │ ├── AppDriver.cs │ │ │ ├── CreateUserResponse.cs │ │ │ ├── GetUserResponse.cs │ │ │ └── UserDtoBuilder.cs │ │ ├── E2ESpecification.cs │ │ └── EndToEndSpecification.csproj │ │ ├── Lib │ │ ├── AnyExtensions.cs │ │ ├── Lib.csproj │ │ └── UserDtoBuilder.cs │ │ └── VotingSystem.sln ├── KeycloakDemo │ ├── .dockerignore │ ├── KeycloakDemo.sln │ ├── KeycloakDemo │ │ ├── KeycloakDemo.csproj │ │ └── Program.cs │ └── SecureApp │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── RoleRestrictedRequirement.cs │ │ ├── SecureApp.csproj │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json ├── LanguageExtExamples │ ├── LanguageExtExamples.sln │ └── LanguageExtExamples │ │ ├── Converters │ │ ├── ArrConverter.cs │ │ ├── HashSetConverter.cs │ │ ├── LstConverter.cs │ │ ├── QueConverter.cs │ │ ├── SeqConverter.cs │ │ └── SetConverter.cs │ │ ├── Framework │ │ ├── ICollectionBuilder.cs │ │ ├── ICollectionBuilderFactory.cs │ │ ├── LanguageExtCollectionConverter.cs │ │ └── SpecificCollectionBuilders │ │ │ ├── Arr │ │ │ ├── ArrBuilder.cs │ │ │ └── ArrBuilderFactory.cs │ │ │ ├── HashSet │ │ │ ├── HashSetBuilder.cs │ │ │ └── HashSetBuilderFactory.cs │ │ │ ├── Lst │ │ │ ├── LstBuilder.cs │ │ │ └── LstBuilderFactory.cs │ │ │ ├── Que │ │ │ ├── LstBuilderFactory.cs │ │ │ └── QueBuilder.cs │ │ │ ├── Seq │ │ │ ├── SeqBuilder.cs │ │ │ └── SeqBuilderFactory.cs │ │ │ └── Set │ │ │ ├── SetBuilder.cs │ │ │ └── SetBuilderFactory.cs │ │ ├── LanguageExtCollectionsJson.csproj │ │ └── Usings.cs ├── ModularMonolith │ ├── ModularMonolith.sln │ ├── ModularMonolith │ │ ├── BuyProduct │ │ │ ├── BuyProductEndpoint.cs │ │ │ └── BuyProductResponseInProgress.cs │ │ ├── GetProducts │ │ │ ├── GetProductsEndpoint.cs │ │ │ └── GetProductsResponseInProgress.cs │ │ ├── InternalCommunication │ │ │ └── ShopToWarehouseApiTo.cs │ │ ├── ModularMonolith.csproj │ │ ├── MonolithApplicationLogicCompositionRoot.cs │ │ ├── NotifyCustomer │ │ │ └── EmailCustomerNotifications.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── UpdateOrder │ │ │ ├── UpdateOrderEndpoint.cs │ │ │ └── UpdateOrderStateResponseInProgress.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ShopModule │ │ ├── AppLogic │ │ │ ├── BuyProductCommand.cs │ │ │ ├── CreateGetProductsCommand.cs │ │ │ ├── IBuyProductResponseInProgress.cs │ │ │ ├── IGetProductsResponseInProgress.cs │ │ │ ├── IProductsDao.cs │ │ │ ├── IShopToWarehouseApi.cs │ │ │ ├── ProductChoiceDto.cs │ │ │ ├── ProductDto.cs │ │ │ ├── ProductId.cs │ │ │ └── ShopCommandFactory.cs │ │ ├── Persistence │ │ │ └── LiteDbProductsDao.cs │ │ ├── ShopModule.csproj │ │ └── ShopModuleInstance.cs │ └── WarehouseModule │ │ ├── AppLogic │ │ ├── ICustomerNotifications.cs │ │ ├── IOrdersDao.cs │ │ ├── IUpdateOrderStateResponseInProgress.cs │ │ ├── OrderDeliveryCommand.cs │ │ ├── OrderDto.cs │ │ ├── OrderStates.cs │ │ ├── ProductId.cs │ │ ├── UpdateOrderStateCommand.cs │ │ └── WarehouseCommandFactory.cs │ │ ├── Persistence │ │ └── LiteDbOrdersDao.cs │ │ ├── WarehouseModule.csproj │ │ └── WarehouseModuleInstance.cs ├── MyBot │ ├── .vs │ │ └── config │ │ │ └── applicationhost.config │ ├── Adapters.Luis │ │ ├── Adapters.Luis.csproj │ │ ├── LuisAdapters.cs │ │ └── LuisUserPhrase.cs │ ├── BotLogic │ │ ├── BotLogic.csproj │ │ ├── BotPhrases.cs │ │ ├── Characters │ │ │ ├── Aragorn.cs │ │ │ ├── Gandalf.cs │ │ │ └── ICharacter.cs │ │ ├── Composition │ │ │ └── ActivityFactory.cs │ │ ├── DialogStateMachine.cs │ │ ├── EntityDto.cs │ │ ├── EntityTypes.cs │ │ ├── IDialogContext.cs │ │ ├── IPlayer.cs │ │ ├── IStatesFactory.cs │ │ ├── IUserPhrase.cs │ │ ├── IntentNames.cs │ │ ├── IntentRecognition.cs │ │ ├── Intents │ │ │ ├── IIntent.cs │ │ │ ├── KillCharacterIntent.cs │ │ │ ├── QuestionWhoIntent.cs │ │ │ ├── StartGameIntent.cs │ │ │ ├── TalkToCharacterIntent.cs │ │ │ └── WordsIntent.cs │ │ ├── InvalidItent.cs │ │ ├── MessageActivity.cs │ │ ├── RecognitionResultDto.cs │ │ ├── Roles.cs │ │ └── States │ │ │ ├── AbstractState.cs │ │ │ ├── AragornAsksAboutFrodosFianceeNameState.cs │ │ │ ├── BeforeGameStartsState.cs │ │ │ ├── EnterBrightRoomState.cs │ │ │ ├── IBotPersistentState.cs │ │ │ ├── IState.cs │ │ │ ├── StateNames.cs │ │ │ ├── StatesFactory.cs │ │ │ ├── Words.cs │ │ │ └── YesNoTransitionState.cs │ ├── ComponentSpecification │ │ ├── Automation │ │ │ ├── AppDriver.cs │ │ │ ├── FakeBotPersistentState.cs │ │ │ ├── FakePlayer.cs │ │ │ └── Intents.cs │ │ ├── BrightRoomConversationSpecification.cs │ │ └── ComponentSpecification.csproj │ ├── IntegrationSpecification │ │ ├── IntegrationSpecification.csproj │ │ └── LuisRecognizerSpecification.cs │ ├── MyBot.sln │ └── MyBot │ │ ├── Bot Builder Echo Bot V4 │ │ └── obj │ │ │ └── project.assets.json │ │ └── GameBot │ │ ├── Adapters │ │ ├── BotBuilderPlayer.cs │ │ └── BotPersistentState.cs │ │ ├── Bot.cs │ │ ├── BotAccessors.cs │ │ ├── BotConfiguration.bot │ │ ├── BotModule.cs │ │ ├── DeploymentScripts │ │ └── MsbotClone │ │ │ └── bot.recipe │ │ ├── EchoBotWithCounter.ruleset │ │ ├── GameBot.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── Startup.cs │ │ ├── TurnContextPoweredObjectsFactory.cs │ │ ├── appsettings.json │ │ └── wwwroot │ │ └── default.htm ├── NUnitParallelizableAttribute │ ├── NUnitParallelizableAttribute.sln │ └── NUnitParallelizableAttribute │ │ ├── NUnitParallelizableAttribute.csproj │ │ └── UnitTest1.cs ├── Null │ ├── NullIssues │ │ ├── MaybeAsMonad │ │ │ ├── MaybeAsMonad.csproj │ │ │ └── Program.cs │ │ ├── Notebook │ │ │ ├── Notebook.csproj │ │ │ ├── NullIsDifficultToTrack.cs │ │ │ └── NullRequiresBranching.cs │ │ ├── NullAsError │ │ │ ├── NullAsError.csproj │ │ │ └── Program.cs │ │ ├── NullAsErrorRefactored │ │ │ ├── NullAsErrorRefactored.csproj │ │ │ └── Program.cs │ │ ├── NullAsFlag │ │ │ ├── NullAsFlag.csproj │ │ │ ├── _01_ReturningNull.cs │ │ │ └── _02_PassingNull.cs │ │ ├── NullAsFlagRefactored │ │ │ ├── NullAsFlagRefactored.csproj │ │ │ ├── _01_ReturningNull.cs │ │ │ └── _02_PassingNull.cs │ │ ├── NullAsNothing │ │ │ ├── EntityTypes.cs │ │ │ ├── GroupCache.cs │ │ │ ├── ICache.cs │ │ │ ├── MainCache.cs │ │ │ ├── NullAsNothing.csproj │ │ │ ├── Program.cs │ │ │ ├── QueryResult.cs │ │ │ ├── RadioCache.cs │ │ │ ├── UnknownEntityTypeException.cs │ │ │ └── UsersCache.cs │ │ ├── NullAsNothingRefactored │ │ │ ├── EntityTypes.cs │ │ │ ├── GroupCache.cs │ │ │ ├── ICache.cs │ │ │ ├── MainCache.cs │ │ │ ├── NullAsNothingRefactored.csproj │ │ │ ├── Program.cs │ │ │ ├── QueryResult.cs │ │ │ ├── RadioCache.cs │ │ │ ├── UnknownEntityTypeException.cs │ │ │ └── UsersCache.cs │ │ ├── NullAsNothingRefactored_NRT │ │ │ ├── EntityTypes.cs │ │ │ ├── GroupCache.cs │ │ │ ├── ICache.cs │ │ │ ├── MainCache.cs │ │ │ ├── NullAsNothingRefactored_NRT.csproj │ │ │ ├── Program.cs │ │ │ ├── QueryResult.cs │ │ │ ├── RadioCache.cs │ │ │ ├── UnknownEntityTypeException.cs │ │ │ └── UsersCache.cs │ │ └── NullIssues.sln │ ├── _deprecated_DealingWithNull │ │ ├── DealingWithNull.sln │ │ └── DealingWithNull │ │ │ ├── DealingWithNull.csproj │ │ │ ├── Exceptions │ │ │ ├── Connection.cs │ │ │ ├── ConnectionFactory.cs │ │ │ ├── HttpConnection.cs │ │ │ └── Problem.cs │ │ │ ├── Maybe │ │ │ ├── Maybe.cs │ │ │ ├── MaybeSpecification.cs │ │ │ └── Problem.cs │ │ │ ├── NullObject │ │ │ ├── AuthorizationChange.cs │ │ │ ├── AuthorizationStructure.cs │ │ │ ├── ChangeFactory.cs │ │ │ ├── Changes │ │ │ │ ├── AuthorizationChangeFactory.cs │ │ │ │ ├── Creation.cs │ │ │ │ ├── Deletion.cs │ │ │ │ └── Update.cs │ │ │ ├── IncomingChangeProcessing.cs │ │ │ ├── MyApplicationAuthorizationStructure.cs │ │ │ ├── Problem.cs │ │ │ └── RawData │ │ │ │ ├── ChangeData.cs │ │ │ │ └── ChangeTypes.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ └── packages.config │ └── _deprecated_WksNull │ │ ├── NullAsError │ │ ├── NullAsError.csproj │ │ └── Program.cs │ │ ├── NullAsFlag │ │ ├── NullAsFlag.csproj │ │ ├── Program.cs │ │ └── Program2.cs │ │ ├── NullAsNothing │ │ ├── EntityTypes.cs │ │ ├── GroupCache.cs │ │ ├── ICache.cs │ │ ├── MySystem.cs │ │ ├── NullAsNothing.csproj │ │ ├── Program.cs │ │ ├── QueryResult.cs │ │ ├── RadioCache.cs │ │ ├── UnknownEntityTypeException.cs │ │ └── UsersCache.cs │ │ └── WksNull.sln ├── ParseDoNotValidate │ ├── .vs │ │ └── ParseDoNotValidate │ │ │ └── DesignTimeBuild │ │ │ └── .dtbcache │ ├── NUnitTestProject1 │ │ ├── Json │ │ │ ├── JsonExtensions.cs │ │ │ ├── MyAppSerializationSettings.cs │ │ │ └── ValueConverter.cs │ │ ├── ParseNotValidate.csproj │ │ ├── Tests.cs │ │ ├── UserDto.cs │ │ └── Values │ │ │ ├── Age.cs │ │ │ ├── EmptyNameException.cs │ │ │ ├── EmptySurnameException.cs │ │ │ ├── IllegalAgeException.cs │ │ │ ├── Name.cs │ │ │ └── Surname.cs │ └── ParseDoNotValidate.sln ├── PortsAndAdapters │ ├── PortsAndAdaptersHelloWorld - After - WithTests │ │ ├── AfterWithTests_PortsAndAdaptersHelloWorld.sln │ │ ├── ComponentSpecification │ │ │ ├── ComponentSpecification.csproj │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── TheOnlyPathSpecification.cs │ │ │ └── packages.config │ │ ├── DataAccess.Ports │ │ │ ├── IAppLogic.cs │ │ │ ├── IPersistentStorage.cs │ │ │ ├── Ports.csproj │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── Database │ │ │ ├── Database.csproj │ │ │ ├── DatabaseObject.cs │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── Domain │ │ │ ├── AppLogic.cs │ │ │ ├── ApplicationLogic.csproj │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── GCop.json │ │ ├── Gui │ │ │ ├── Gui.csproj │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ └── Window.cs │ │ ├── PortsAndAdaptersHelloWorld │ │ │ ├── App.config │ │ │ ├── Main.csproj │ │ │ ├── Program.cs │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ └── Views.Ports │ │ │ ├── Class1.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ └── Views.Ports.csproj │ ├── PortsAndAdaptersHelloWorld - After │ │ ├── After_PortsAndAdaptersHelloWorld.sln │ │ ├── DataAccess.Ports │ │ │ ├── Ports.csproj │ │ │ ├── Primary │ │ │ │ └── IAppLogic.cs │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ └── Secondary │ │ │ │ └── IPersistentStorage.cs │ │ ├── Database │ │ │ ├── Database.csproj │ │ │ ├── DatabaseObject.cs │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── Domain │ │ │ ├── AppLogic.cs │ │ │ ├── ApplicationLogic.csproj │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── GCop.json │ │ ├── Gui │ │ │ ├── Gui.csproj │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ └── Window.cs │ │ ├── PortsAndAdaptersHelloWorld │ │ │ ├── App.config │ │ │ ├── Main.csproj │ │ │ ├── Program.cs │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ └── Views.Ports │ │ │ ├── Class1.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ └── Views.Ports.csproj │ ├── PortsAndAdaptersHelloWorld - Before │ │ ├── Before_PortsAndAdaptersHelloWorld.sln │ │ ├── Database │ │ │ ├── Database.csproj │ │ │ ├── DatabaseObject.cs │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── Domain │ │ │ ├── AppLogic.cs │ │ │ ├── ApplicationLogic.csproj │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── GCop.json │ │ ├── Gui │ │ │ ├── Gui.csproj │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ └── Window.cs │ │ └── PortsAndAdaptersHelloWorld │ │ │ ├── App.config │ │ │ ├── Main.csproj │ │ │ ├── Program.cs │ │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ ├── PortsAndAdaptersStructure - Minimal │ │ ├── Domain │ │ │ ├── AppLogic.cs │ │ │ ├── ApplicationLogic.csproj │ │ │ ├── IAppLogic.cs │ │ │ ├── IPersistentStorage.cs │ │ │ └── Properties │ │ │ │ └── AssemblyInfo.cs │ │ ├── PortsAndAdaptersHelloWorld │ │ │ ├── App.config │ │ │ ├── DatabaseObject.cs │ │ │ ├── Main.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── AssemblyInfo.cs │ │ │ └── Window.cs │ │ ├── PortsAndAdaptersMinimalStructure.sln │ │ └── Views.Ports │ │ │ ├── Class1.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ └── Views.Ports.csproj │ └── PortsAndAdaptersStructure - Scaled Up │ │ ├── Database │ │ ├── Database.csproj │ │ ├── DatabaseObject.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Domain │ │ ├── AppLogic.cs │ │ ├── ApplicationLogic.csproj │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── GCop.json │ │ ├── Gui │ │ ├── Gui.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── Window.cs │ │ ├── Persistence.Ports │ │ ├── IPersistentStorage.cs │ │ └── Persistence.Ports.csproj │ │ ├── PortsAndAdaptersHelloWorld │ │ ├── App.config │ │ ├── Main.csproj │ │ ├── Program.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── PortsAndAdaptersScaledUpStructure.sln │ │ └── View.Ports │ │ ├── IAppLogic.cs │ │ └── View.Ports.csproj ├── ReturningResultsFromCommands │ ├── ReturningResultsFromCommands.sln │ ├── ReturningResultsFromCommands │ │ ├── AddTodoError.cs │ │ ├── AddTodoSuccess.cs │ │ ├── ApiException.cs │ │ ├── AspNetCoreAddTodoResponseInProgress.cs │ │ ├── AspNetCoreResponseFactory.cs │ │ ├── ErrorCode.cs │ │ ├── FakeApi.cs │ │ ├── FakeValidation.cs │ │ ├── IAddTodoResponse.cs │ │ ├── IResponseFactory.cs │ │ ├── IResponseInProgress.cs │ │ ├── IValidation.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── ReturningResultsFromCommands.csproj │ │ ├── Todo.cs │ │ ├── TodoServiceAcceptingPolymorphicObject.cs │ │ ├── TodoServiceReturningData.cs │ │ ├── TodoServiceReturningPolymorphicObject.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── ReturningResultsFromCommandsSpecification │ │ ├── ReturningResultsFromCommandsSpecification.csproj │ │ └── UnitTest1.cs ├── SpecFlowExample │ ├── README.md │ ├── SpecFlowExample.sln │ └── SpecFlowExample │ │ ├── AutomationLayer │ │ ├── Actors │ │ │ ├── ChatRoom.cs │ │ │ └── User.cs │ │ ├── Data │ │ │ └── DisplayedMessage.cs │ │ └── Infrastructure │ │ │ ├── ChatScenarioContext.cs │ │ │ └── ScenarioSetupAndTeardown.cs │ │ ├── Features │ │ ├── ChatRoomMessaging.feature │ │ ├── ChatRoomMessaging.feature.cs │ │ ├── OneToOneMessaging.feature │ │ └── OneToOneMessaging.feature.cs │ │ ├── SpecFlowExample.csproj │ │ └── StepDefinitions │ │ ├── GroupMessagingSteps.cs │ │ ├── ProvisioningSteps.cs │ │ └── SimpleMessagingSteps.cs ├── SubscriptionApi │ ├── SubscriptionApi.sln │ └── SubscriptionApi │ │ ├── Api.cs │ │ ├── App.config │ │ ├── Authorization │ │ ├── AssetQueryResolution.cs │ │ └── AuthorizationStructure.cs │ │ ├── Commands │ │ ├── AdapterFromSubscriptionCommandToCommand.cs │ │ ├── AssetAccessAuthorization.cs │ │ ├── AssetQueriesFactory.cs │ │ ├── CommandFactory.cs │ │ ├── ExceptionLoggedCommand.cs │ │ ├── SubscriptionCommand.cs │ │ ├── SubscriptionStartCommandFromApi.cs │ │ ├── SubscriptionStopCommandFromApi.cs │ │ └── UserAuthorization.cs │ │ ├── Dto │ │ ├── AssetKind.cs │ │ ├── AssetRequestDto.cs │ │ ├── NewSubscriptionParametersDto.cs │ │ ├── StartSubscriptionResponseDto.cs │ │ ├── StopSubscriptionResponseDto.cs │ │ └── StoppedSubscriptionParametersDto.cs │ │ ├── DummyLog.cs │ │ ├── Exceptions │ │ ├── FatalErrorOccuredDuringAuthorizationException.cs │ │ ├── FatalErrorOccuredDuringQueryResolutionException.cs │ │ └── FatalErrorOccuredDuringValidationsException.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── Queries │ │ ├── AssetQuery.cs │ │ ├── HardwareQuery.cs │ │ ├── OrganizationalUnitQuery.cs │ │ ├── QueryResolutionEvents.cs │ │ └── UserQuery.cs │ │ ├── ResponseBuilderFactory.cs │ │ ├── ResponseBuilders │ │ ├── AssetAuthorizationEvents.cs │ │ ├── SubscriptionResponseBuilder.cs │ │ ├── SubscriptionStartResponseBuilder.cs │ │ ├── SubscriptionStopEvents.cs │ │ ├── SubscriptionStopResponseBuilder.cs │ │ ├── SubscriptionValidationResults.cs │ │ └── UserAuthorizationEvents.cs │ │ ├── SubscriptionApi.csproj │ │ └── Subscriptions │ │ ├── Subscription.cs │ │ ├── SubscriptionDataCorrectnessCriteria.cs │ │ ├── SubscriptionFactory.cs │ │ └── Subscriptions.cs ├── TellDontAsk │ ├── AlarmsObjectOriented │ │ ├── Adapters │ │ │ ├── SirensService.cs │ │ │ └── TelephoneService.cs │ │ ├── Alarms │ │ │ ├── CompositeAlarm.cs │ │ │ ├── LoudAlarmService.cs │ │ │ ├── SilentAlarmService.cs │ │ │ └── TimedAlarmService.cs │ │ ├── AlarmsObjectOriented.csproj │ │ ├── Building.cs │ │ ├── CompositionRoot.cs │ │ ├── Criteria │ │ │ ├── DayCriterion.cs │ │ │ ├── NightCriterion.cs │ │ │ ├── OutsideWeekendCriterion.cs │ │ │ └── WeekendCriterion.cs │ │ ├── Interfaces │ │ │ ├── Alarm.cs │ │ │ └── TimeCriterion.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ ├── AlarmsProcedural │ │ ├── Adapters │ │ │ ├── SirensService.cs │ │ │ ├── TelephoneService.cs │ │ │ └── TimeService.cs │ │ ├── Alarm.cs │ │ ├── AlarmServices │ │ │ ├── AlarmService.cs │ │ │ ├── CompositeAlarmService.cs │ │ │ ├── LoudAlarmService.cs │ │ │ ├── SilentAlarmService.cs │ │ │ └── TimedAlarmService.cs │ │ ├── AlarmsProcedural.csproj │ │ ├── Building.cs │ │ ├── CompositionRoot.cs │ │ ├── Enums │ │ │ ├── AlarmTypes.cs │ │ │ └── TimeCriteria.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ ├── InterfacesAndProtocols │ │ ├── InterfacesAndProtocols.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── _1_ClassesAreBadForComposability.cs │ │ ├── _2_ProtocolsExist.cs │ │ └── _3_SingleResponsibilityPrinciple.cs │ ├── PayrollSystem │ │ ├── CompanyPolicies.cs │ │ ├── Employee.cs │ │ ├── Main.cs │ │ ├── PayGrade.cs │ │ ├── PayrollSystem.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── SqlRepository.cs │ ├── Sessions │ │ ├── Main.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Session.cs │ │ ├── SessionInformationMessage.cs │ │ ├── Sessions.cs │ │ └── Sessions.csproj │ ├── SessionsRefactored │ │ ├── Destinations │ │ │ ├── ConsoleDestination.cs │ │ │ ├── DevNull.cs │ │ │ ├── FileStorageFormat1.cs │ │ │ ├── FileStorageFormat2.cs │ │ │ ├── GuiOwnersList.cs │ │ │ ├── NetworkConnection.cs │ │ │ ├── NetworkPacketBuilder.cs │ │ │ └── PopulationOfOwnersListOnGui.cs │ │ ├── DumpDestination.cs │ │ ├── GUI │ │ │ └── WpfBasedOwnersList.cs │ │ ├── Main.cs │ │ ├── Network │ │ │ ├── BogusNetworkConnection.cs │ │ │ └── SessionInformationMessage.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Session.cs │ │ ├── SessionCollections │ │ │ ├── BasicSessions.cs │ │ │ └── SynchronizedSessions.cs │ │ ├── SessionData.cs │ │ ├── Sessions.cs │ │ ├── SessionsRefactored.csproj │ │ └── SessionsTypes │ │ │ ├── BasicSession.cs │ │ │ ├── ExpirableSession.cs │ │ │ └── HiddenSession.cs │ ├── TDDWithMocks │ │ ├── Class1.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── TDDWithMocks.csproj │ │ └── packages.config │ ├── TellDontAsk.sln │ ├── TellDontAsk.userprefs │ └── Validations │ │ ├── BasicRequestValidation.cs │ │ ├── Config.cs │ │ ├── InMemoryConfig.cs │ │ ├── Main.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── RequestProcessing.cs │ │ ├── RequestValidation.cs │ │ ├── RequestValidationException.cs │ │ ├── ThirdParty │ │ └── SubscriptionStartRequest.cs │ │ └── Validations.csproj ├── TipsBook │ ├── SynthesizerTipsApp.sln │ └── SynthesizerTipsApp │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Program.cs │ │ ├── SynthesizerTipsApp.csproj │ │ └── TipForm.cs ├── UnitTestRunnerPackageExercise │ ├── ExampleTests │ │ ├── CalculatorTests.cs │ │ ├── Class1.cs │ │ ├── Class2.cs │ │ ├── ExampleTests.csproj │ │ ├── ICalculator.cs │ │ ├── JsonTests.cs │ │ ├── LanguageExtCollectionAssertionTests.cs │ │ └── UserTests.cs │ ├── ProgramRunningTheTests │ │ ├── Program.cs │ │ └── ProgramRunningTheTests.csproj │ ├── UnitTestRunnerPackageExercise.sln │ ├── UnitTestRunnerPackageExercise │ │ ├── AssemblyForType.cs │ │ ├── Assert.cs │ │ ├── AssertionException.cs │ │ ├── ConsoleDestination.cs │ │ ├── EnglishConsoleMessages.cs │ │ ├── ExampleTestAssemblySource.cs │ │ ├── FlatFileDestination.cs │ │ ├── FrenchConsoleMessages.cs │ │ ├── FullyQualifiedTestName.cs │ │ ├── IConsoleReportMessages.cs │ │ ├── IResultsTextFormat.cs │ │ ├── ITestAssemblySource.cs │ │ ├── ITestResults.cs │ │ ├── ITestResultsDestination.cs │ │ ├── ItalianConsoleMessages.cs │ │ ├── JsonAssert.cs │ │ ├── KoreanConsoleMessages.cs │ │ ├── LanguageExtCollectionAssertions.cs │ │ ├── LatinConsoleMessages.cs │ │ ├── LiteDbDestination.cs │ │ ├── NewtonsoftJsonResultsTextFormat.cs │ │ ├── PolishConsoleMessages.cs │ │ ├── SimpleStubGenerator.cs │ │ ├── SqLiteResultsDestination.cs │ │ ├── StructuredReport.cs │ │ ├── SystemTextJsonResultsTextFormat.cs │ │ ├── TestAssemblyPath.cs │ │ ├── TestCase.cs │ │ ├── TestCaseFactory.cs │ │ ├── TestDataGenerator.cs │ │ ├── TestReportDto.cs │ │ ├── TestRunner.cs │ │ ├── TestSet.cs │ │ ├── TestSetDto.cs │ │ ├── TestSetDtoBuilder.cs │ │ ├── TestSetFactory.cs │ │ ├── TestStatus.cs │ │ ├── TestSuite.cs │ │ ├── TestSuiteDto.cs │ │ ├── TestSuiteDtoBuilder.cs │ │ ├── TestSuiteFactory.cs │ │ ├── TextBasedResultsReport.cs │ │ ├── ThisAssemblySource.cs │ │ └── UnitTestRunnerPackageExercise.csproj │ └── task.txt ├── UsingFactories │ ├── UsingFactories.sln │ └── UsingFactories │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ └── UsingFactories.csproj ├── ValueObjects │ ├── .cr │ │ └── Settings.xml │ ├── ProductNameProblem │ │ ├── ProductNameProblem.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── _01_StringBasedVersion │ │ │ ├── Api.cs │ │ │ ├── ForbiddenProductNames.cs │ │ │ └── Main.cs │ │ ├── _02_CaseInsensitive │ │ │ ├── Api.cs │ │ │ ├── ForbiddenProductNames.cs │ │ │ └── Main.cs │ │ ├── _03_NameInTwoComponents │ │ │ ├── Api.cs │ │ │ ├── ForbiddenProductNames.cs │ │ │ └── Main.cs │ │ └── _04_HelperAttempt │ │ │ ├── Api.cs │ │ │ ├── ForbiddenProductNames.cs │ │ │ ├── Main.cs │ │ │ └── ProductNameHelper.cs │ ├── ValueObjects.sln │ └── ValueObjects │ │ ├── Class1.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ └── ValueObjects.csproj ├── WeatherAppLogicSeparation │ ├── Application │ │ ├── Application.csproj │ │ ├── ApplicationLogic.cs │ │ ├── BadResolutionException.cs │ │ ├── DeviceId.cs │ │ ├── GroupId.cs │ │ ├── IDeviceApi.cs │ │ ├── IDeviceQuery.cs │ │ ├── IDeviceSubscriptionApi.cs │ │ ├── IMetrics.cs │ │ ├── ISubscribeCommandResponse.cs │ │ ├── IWeatherAppCommand.cs │ │ ├── InvalidQuery.cs │ │ ├── LoggingCommand.cs │ │ ├── NetworkName.cs │ │ ├── NetworkParametersDto.cs │ │ ├── NetworkType.cs │ │ ├── QueryByDeviceIds.cs │ │ ├── QueryByGroupId.cs │ │ ├── QueryByNetworkParameters.cs │ │ ├── QueryTypes.cs │ │ ├── RoutingTable.cs │ │ ├── SubscribeCommand.cs │ │ ├── SubscriptionAlreadyExistsException.cs │ │ ├── SubscriptionCreatedDto.cs │ │ └── SubscriptionRequestDto.cs │ ├── WeatherAppLogicSeparation.sln │ ├── WeatherAppLogicSeparation │ │ ├── Controllers │ │ │ └── WeatherForecastController.cs │ │ ├── DeviceSubscriptionHttpApi.cs │ │ ├── FakeMetrics.cs │ │ ├── HttpDeviceApi.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── ServiceLogic.cs │ │ ├── WeatherAppLogicSeparation.csproj │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── WeatherAppLogicSeparationSpecification │ │ ├── Automation │ │ ├── Driver.cs │ │ ├── SubscriptionApiTestResponse.cs │ │ └── WebApp.cs │ │ ├── ServiceBehaviors.cs │ │ ├── SideContent │ │ └── HttpClientBehaviors.cs │ │ └── WeatherAppLogicSeparationSpecification.csproj ├── XUnitFixtures │ ├── .vs │ │ └── XUnitFixtures │ │ │ └── DesignTimeBuild │ │ │ └── .dtbcache │ ├── XUnitFixtures.sln │ └── XUnitFixtures │ │ ├── FreshVsShared │ │ ├── PersistentSharedFixture.cs │ │ └── TransientFreshFixture.cs │ │ ├── MinimalVsStandard │ │ ├── FreshStandardFixture.cs │ │ └── PersistentStandardImmutableFixture.cs │ │ ├── TransientVsPersistent │ │ ├── PersistentFreshFixture_NoSetupTeardown.cs │ │ ├── PersistentFreshFixture_SetupTeardown.cs │ │ └── TransientFreshFixture.cs │ │ └── XUnitFixtures.csproj └── XUnitTestPatterns │ ├── .editorconfig │ ├── XUnitTestPatterns.sln │ └── XUnitTestPatterns │ ├── UnitTest1.cs │ ├── XUnitTestPatterns.csproj │ ├── _01_SetupTeardownDataLife │ └── _01_SetupsAndTeardowns.cs │ ├── _02_Basics │ ├── BufferSizeRule.cs │ ├── DistinctFilter.cs │ ├── _01_FourPhaseTest.cs │ └── _02_SingleLogicalAssertion.cs │ ├── _03_ParameterizedTests │ ├── Person.cs │ └── _01_ParameterizedTests.cs │ ├── _04_CustomAssertions │ ├── _01_NoTrueFalseAssertions.cs │ ├── _03_SolutionWithPurelyCustomAssertions.cs │ ├── _04_SolutionWithCustomAndSoftAssertions.cs │ ├── _05_SolutionWithEqualityObject.cs │ └── _06_SolutionWithGraphAssertions.cs │ ├── _05_AssertionObject │ ├── NumberAssertion.cs │ ├── _01_TypeSpecificAssertions.cs │ ├── _02_LinkedAssertions.cs │ ├── _03_FailureMessagesAndDescriptions.cs │ └── _04_ExceptionAssertions.cs │ ├── _06_OtherAssertionPatterns │ └── _01_DeltaAssertion_TODO.cs │ ├── _07_PickingTestValues │ ├── BackupFileNamePattern.cs │ ├── UserNameCheck.cs │ ├── _01_ConstrainedNonDeterminism.cs │ ├── _02_BoundaryValuesAndConstantTests.cs │ ├── _03_ExampleValues.cs │ └── _04_DerivedValues.cs │ └── _08_FixtureManagement │ ├── AddressStatus.cs │ ├── InMemoryLog.cs │ ├── Invoice.cs │ ├── InvoiceAddress.cs │ ├── InvoiceLine.cs │ ├── InvoiceMother.cs │ ├── InvoiceStatus.cs │ ├── InvoiceToInvoiceLine.cs │ ├── Money.cs │ ├── User.cs │ ├── _01_MutableSharedFixture.cs │ ├── _02_StandardFixture.cs │ ├── _03_MinimalFixtureWithInlineSetup_TODO.cs │ ├── _04_CreationMethods_TODO.cs │ └── _05_TestDataBuilders.cs ├── Cpp ├── 01 - Multiple.cc └── Cpp11 │ ├── Cpp11.sdf │ ├── Cpp11.sln │ ├── InitializerLists │ ├── InitializerLists.vcxproj │ ├── InitializerLists.vcxproj.filters │ ├── _01_NewConstructorNotation.cc │ ├── _02_SequenceConstructor.cc │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ └── unittest1.cpp │ ├── _01_SmallImprovements │ ├── ClassDiagram.cd │ ├── MetaPow.hh │ ├── MetaPowersOf2.hh │ ├── Pow.hh │ ├── PowersOf2.hh │ ├── SmallImprovements.cc │ ├── _01_SmallImprovements.vcxproj │ ├── _01_SmallImprovements.vcxproj.filters │ ├── constexpr.h │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h │ ├── _03_DefaultingDeletingAndExplicitConversion │ ├── DefaultsAndDeletesAndExplicitConversions.cpp │ ├── _03_DefaultingDeletingAndExplicitConversion.vcxproj │ ├── _03_DefaultingDeletingAndExplicitConversion.vcxproj.filters │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h │ ├── _04_StaticAssertions │ ├── 01_SimpleSizeOfs.cc │ ├── 02_CheckingSizeOfTemplateArguments.cc │ ├── 03_CheckingSizeOfStructs.cc │ ├── 04_TestingConstexprs.cc │ ├── 05_CheckingEnumSize.cc │ ├── _04_StaticAssertions.vcxproj │ ├── _04_StaticAssertions.vcxproj.filters │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h │ ├── _05_ConstructorDelegation │ ├── ConstructorDelegation.cc │ ├── _05_ConstructorDelegation.vcxproj │ ├── _05_ConstructorDelegation.vcxproj.filters │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ └── unittest1.cpp │ ├── _06_Lambdas │ ├── 01_Lambdas.cc │ ├── 02_Closures.cc │ ├── 03_Futures.cc │ ├── _06_Lambdas.vcxproj │ ├── _06_Lambdas.vcxproj.filters │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h │ ├── _07_VariadicTemplates │ ├── 10 - VariadicTemplates - printf.cc │ ├── 11 - VariadicTemplates - Memoization.cc │ ├── _07_VariadicTemplates.vcxproj │ ├── _07_VariadicTemplates.vcxproj.filters │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h │ ├── _08_IteratorsAndAlgorithms │ ├── IteratorsAndAlgorithms.cc │ ├── _08_IteratorsAndAlgorithms.vcxproj │ ├── _08_IteratorsAndAlgorithms.vcxproj.filters │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h │ ├── ___CppTest11 │ ├── CppTest11.vcxproj │ ├── CppTest11.vcxproj.filters │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ └── unittest1.cpp │ └── ____Cpp11 │ ├── Cpp11.cpp │ ├── Cpp11.vcxproj │ ├── Cpp11.vcxproj.filters │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h ├── Java ├── AlarmsObjectOriented │ ├── AlarmsObjectOriented.iml │ ├── build.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── Building.java │ │ │ ├── CompositionRoot.java │ │ │ ├── adapters │ │ │ ├── SirensService.java │ │ │ └── TelephoneService.java │ │ │ ├── alarms │ │ │ ├── CompositeAlarm.java │ │ │ ├── LoudAlarm.java │ │ │ ├── SilentAlarm.java │ │ │ └── TimedAlarm.java │ │ │ ├── criterias │ │ │ ├── DayCriteria.java │ │ │ ├── NightCriteria.java │ │ │ ├── OutsideWeekendCriteria.java │ │ │ └── WeekendCriteria.java │ │ │ └── interfaces │ │ │ ├── Alarm.java │ │ │ └── TimeCriteria.java │ │ └── test │ │ └── java │ │ └── Spec.java ├── AlarmsProcedural │ ├── .gradle │ │ ├── 7.0 │ │ │ ├── dependencies-accessors │ │ │ │ └── gc.properties │ │ │ └── gc.properties │ │ ├── buildOutputCleanup │ │ │ └── cache.properties │ │ ├── configuration-cache │ │ │ └── gc.properties │ │ └── vcs-1 │ │ │ └── gc.properties │ ├── .idea │ │ ├── .gitignore │ │ └── modules │ │ │ ├── AlarmsProcedural.iml │ │ │ ├── AlarmsProcedural.main.iml │ │ │ └── AlarmsProcedural.test.iml │ ├── build.gradle │ ├── build │ │ ├── reports │ │ │ └── tests │ │ │ │ └── test │ │ │ │ ├── classes │ │ │ │ └── CharacterizationTests.html │ │ │ │ └── index.html │ │ └── tmp │ │ │ ├── compileJava │ │ │ └── source-classes-mapping.txt │ │ │ └── compileTestJava │ │ │ └── source-classes-mapping.txt │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ ├── src │ │ ├── main │ │ │ └── java │ │ │ │ ├── Adapters │ │ │ │ ├── SirensService.java │ │ │ │ ├── TelephoneService.java │ │ │ │ └── TimeService.java │ │ │ │ ├── AlarmServices │ │ │ │ ├── AlarmService.java │ │ │ │ ├── CompositeAlarmService.java │ │ │ │ ├── LoudAlarmService.java │ │ │ │ ├── SilentAlarmService.java │ │ │ │ └── TimedAlarmService.java │ │ │ │ ├── Enums │ │ │ │ ├── AlarmTypes.java │ │ │ │ └── TimeCriteria.java │ │ │ │ └── Main │ │ │ │ ├── Alarm.java │ │ │ │ ├── Building.java │ │ │ │ └── CompositionRoot.java │ │ └── test │ │ │ └── java │ │ │ └── CharacterizationTests.java │ └── test │ │ └── Spec.java ├── Migration │ ├── unit-tests-csharp │ │ ├── GCop.json │ │ ├── unit-tests-csharp.sln │ │ ├── unit-tests-csharp.v2.ncrunchsolution │ │ └── unit-tests-csharp │ │ │ ├── P01CoreRunner │ │ │ ├── Ex01RememberingDataBetweenTests.cs │ │ │ ├── Ex02CategoriesGroups.cs │ │ │ ├── Ex03ParameterizedTests.cs │ │ │ └── Ex04RepeatedTests.cs │ │ │ ├── P02Assertions │ │ │ ├── Ex01AssertThat.cs │ │ │ ├── Ex02SoftAssertions.cs │ │ │ └── Ex03ExceptionAssertions.cs │ │ │ ├── P03Any │ │ │ ├── Ex01PrimitiveTypesAndCollections.cs │ │ │ ├── Ex02GenericAny.cs │ │ │ └── MyClass.cs │ │ │ ├── P04NSubstitute │ │ │ ├── Ex010203ProductionCode │ │ │ │ ├── CopyOperation.cs │ │ │ │ ├── Data.cs │ │ │ │ ├── IDataDestination.cs │ │ │ │ └── IDataSource.cs │ │ │ ├── Ex01BasicStubbingAndMocking.cs │ │ │ ├── Ex02MultipleReturnsAndOrderVerification.cs │ │ │ ├── Ex03ThrowingExceptionsFromMocks.cs │ │ │ ├── Ex04NoMoreInteractions.cs │ │ │ ├── Ex04ProductionCode │ │ │ │ ├── CommandInterpreter.cs │ │ │ │ └── IExecutionEngine.cs │ │ │ ├── Ex05ProductionCode │ │ │ │ ├── ICommand.cs │ │ │ │ ├── ISharedCore.cs │ │ │ │ └── NullCommand.cs │ │ │ ├── Ex05ZeroInteractions.cs │ │ │ └── Ex06MockingRealClasses.cs │ │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ │ ├── app.config │ │ │ ├── packages.config │ │ │ └── unit-tests-csharp.csproj │ └── unit-tests-java │ │ ├── build.gradle │ │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ ├── main │ │ └── java │ │ │ ├── p02_assertions │ │ │ └── Person.java │ │ │ ├── p03_any │ │ │ └── MyClass.java │ │ │ └── p04_mockito │ │ │ ├── Command.java │ │ │ ├── CommandInterpreter.java │ │ │ ├── CopyOperation.java │ │ │ ├── Data.java │ │ │ ├── DataDestination.java │ │ │ ├── DataSource.java │ │ │ ├── ExecutionEngine.java │ │ │ ├── NullCommand.java │ │ │ └── SharedCore.java │ │ └── test │ │ └── java │ │ ├── p01_core_runner │ │ ├── Ex01RememberingDataBetweenTests.java │ │ ├── Ex02CategoriesGroups.java │ │ ├── Ex03ParameterizedTests.java │ │ └── Ex04RepeatedTests.java │ │ ├── p02_assertions │ │ ├── Ex01AssertThat.java │ │ ├── Ex02SoftAssertions.java │ │ ├── Ex03ExceptionAssertions.java │ │ └── custom_conditions │ │ │ └── AdultPersonCondition.java │ │ ├── p03_any │ │ ├── Ex01PrimitiveTypesAndCollections.java │ │ └── Ex02GenericAny.java │ │ └── p04_mocks │ │ ├── Ex01BasicStubbingAndMocking.java │ │ ├── Ex02MultipleReturnsAndOrderVerification.java │ │ ├── Ex03ThrowingExceptionsFromMocks.java │ │ ├── Ex04NoMoreInteractions.java │ │ ├── Ex05ZeroInteractions.java │ │ └── Ex06MockingRealClasses.java ├── PayrollSystem │ ├── PayrollSystem.iml │ ├── build.gradle │ └── src │ │ └── main │ │ └── java │ │ ├── CompanyPolicies.java │ │ ├── Employee.java │ │ ├── PayGrade.java │ │ └── SqlRepository.java ├── PortsAdapters │ ├── ports-adapters-modules │ │ ├── .gradle │ │ │ └── buildOutputCleanup │ │ │ │ └── cache.properties │ │ ├── .idea │ │ │ └── modules │ │ │ │ ├── application │ │ │ │ ├── application.iml │ │ │ │ ├── application_main.iml │ │ │ │ └── application_test.iml │ │ │ │ ├── inbound │ │ │ │ ├── inbound.iml │ │ │ │ ├── inboundAdapters │ │ │ │ │ ├── inbound-inboundAdapters.iml │ │ │ │ │ ├── inbound-inboundAdapters_main.iml │ │ │ │ │ └── inbound-inboundAdapters_test.iml │ │ │ │ └── inboundPorts │ │ │ │ │ ├── inbound-ports.iml │ │ │ │ │ ├── inbound-ports_main.iml │ │ │ │ │ ├── inbound-ports_test.iml │ │ │ │ │ ├── inboundPorts.iml │ │ │ │ │ ├── inboundPorts_main.iml │ │ │ │ │ └── inboundPorts_test.iml │ │ │ │ ├── inboundAdapters │ │ │ │ └── ports-adapters-modules-inboundAdapters.iml │ │ │ │ ├── outbound │ │ │ │ ├── outbound.iml │ │ │ │ ├── outboundAdapters │ │ │ │ │ ├── outboundAdapters.iml │ │ │ │ │ ├── outboundAdapters_main.iml │ │ │ │ │ └── outboundAdapters_test.iml │ │ │ │ ├── outboundPorts │ │ │ │ │ ├── outboundPorts.iml │ │ │ │ │ ├── outboundPorts_main.iml │ │ │ │ │ └── outboundPorts_test.iml │ │ │ │ └── ports │ │ │ │ │ └── outbound-ports.iml │ │ │ │ ├── ports-adapters-modules_main.iml │ │ │ │ ├── ports-adapters-modules_test.iml │ │ │ │ └── storage │ │ │ │ ├── storage.iml │ │ │ │ ├── storageAdapters │ │ │ │ ├── storageAdapters.iml │ │ │ │ ├── storageAdapters_main.iml │ │ │ │ └── storageAdapters_test.iml │ │ │ │ └── storagePorts │ │ │ │ ├── storagePorts.iml │ │ │ │ ├── storagePorts_main.iml │ │ │ │ └── storagePorts_test.iml │ │ ├── application │ │ │ └── build.gradle │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── inbound │ │ │ ├── inboundAdapters │ │ │ │ └── build.gradle │ │ │ └── inboundPorts │ │ │ │ └── build.gradle │ │ ├── outbound │ │ │ ├── outboundAdapters │ │ │ │ └── build.gradle │ │ │ └── outboundPorts │ │ │ │ └── build.gradle │ │ ├── ports-adapters-modules.iml │ │ ├── settings.gradle │ │ └── storage │ │ │ ├── storageAdapters │ │ │ └── build.gradle │ │ │ └── storagePorts │ │ │ └── build.gradle │ ├── ports-adapters-packages │ │ ├── .gradle │ │ │ └── buildOutputCleanup │ │ │ │ └── cache.properties │ │ ├── .idea │ │ │ └── modules │ │ │ │ ├── ports-adapters-packages_main.iml │ │ │ │ └── ports-adapters-packages_test.iml │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── ports-adapters-packages.iml │ │ ├── settings.gradle │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── examples │ │ │ │ ├── application │ │ │ │ └── ApplicationLogic.java │ │ │ │ ├── bootstrap │ │ │ │ └── Main.java │ │ │ │ ├── inbound │ │ │ │ ├── adapters │ │ │ │ │ └── RestController.java │ │ │ │ └── ports │ │ │ │ │ └── InboundMessageHandler.java │ │ │ │ ├── outbound │ │ │ │ ├── adapters │ │ │ │ │ └── KafkaChannel.java │ │ │ │ └── ports │ │ │ │ │ └── OutputChannel.java │ │ │ │ └── storage │ │ │ │ ├── adapters │ │ │ │ └── RedisRepository.java │ │ │ │ └── ports │ │ │ │ └── MessageRepository.java │ │ │ └── test │ │ │ └── resources │ │ │ └── classycle-main.txt │ ├── ports-adapters-sourcesets │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── ports-adapters-sourcesets.iml │ │ ├── settings.gradle │ │ └── src │ │ │ ├── application │ │ │ └── java │ │ │ │ └── processing │ │ │ │ └── ApplicationLogic.java │ │ │ ├── inbound │ │ │ ├── inboundAdapters │ │ │ │ └── java │ │ │ │ │ └── controllers │ │ │ │ │ └── RestController.java │ │ │ └── inboundPorts │ │ │ │ └── java │ │ │ │ └── handlers │ │ │ │ └── InboundMessageHandler.java │ │ │ ├── main │ │ │ └── java │ │ │ │ └── main │ │ │ │ └── Main.java │ │ │ ├── outbound │ │ │ ├── outboundAdapters │ │ │ │ └── java │ │ │ │ │ └── channels │ │ │ │ │ └── KafkaChannel.java │ │ │ └── outboundPorts │ │ │ │ └── java │ │ │ │ └── channels │ │ │ │ └── OutputChannel.java │ │ │ └── storage │ │ │ ├── storageAdapters │ │ │ └── java │ │ │ │ └── repositories │ │ │ │ └── RedisRepository.java │ │ │ └── storagePorts │ │ │ └── java │ │ │ └── repositories │ │ │ └── MessageRepository.java │ ├── ports-and-adapters-after │ │ ├── .gradle │ │ │ └── buildOutputCleanup │ │ │ │ └── cache.properties │ │ ├── .idea │ │ │ └── modules │ │ │ │ ├── ports-and-adapters-after.iml │ │ │ │ ├── ports-and-adapters-after_main.iml │ │ │ │ └── ports-and-adapters-after_test.iml │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── application │ │ │ │ └── ApplicationLogic.java │ │ │ │ ├── bootstrap │ │ │ │ └── Main.java │ │ │ │ ├── database │ │ │ │ └── DatabaseObject.java │ │ │ │ ├── gui │ │ │ │ └── Window.java │ │ │ │ └── ports │ │ │ │ ├── dataaccess │ │ │ │ └── Repository.java │ │ │ │ └── views │ │ │ │ └── Application.java │ │ │ └── test │ │ │ └── java │ │ │ └── component │ │ │ └── SavingSpecification.java │ └── ports-and-adapters-before │ │ ├── .gradle │ │ └── buildOutputCleanup │ │ │ └── cache.properties │ │ ├── .idea │ │ └── modules │ │ │ ├── ports-and-adapters-before_main.iml │ │ │ └── ports-and-adapters-before_test.iml │ │ ├── build.gradle │ │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── ports-and-adapters-before.iml │ │ ├── settings.gradle │ │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ ├── application │ │ └── ApplicationLogic.java │ │ ├── bootstrap │ │ └── Main.java │ │ ├── database │ │ └── DatabaseObject.java │ │ └── gui │ │ └── Window.java ├── alarms-randori │ ├── alarms-randori.iml │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── Adapters │ │ │ ├── SirensService.java │ │ │ ├── TelephoneService.java │ │ │ └── TimeService.java │ │ │ ├── AlarmServices │ │ │ ├── AlarmService.java │ │ │ ├── CompositeAlarmService.java │ │ │ ├── LoudAlarmService.java │ │ │ ├── SilentAlarmService.java │ │ │ └── TimedAlarmService.java │ │ │ ├── Enums │ │ │ ├── AlarmTypes.java │ │ │ └── TimeCriteria.java │ │ │ └── Main │ │ │ ├── Alarm.java │ │ │ ├── Building.java │ │ │ └── CompositionRoot.java │ │ └── test │ │ └── java │ │ └── CharacterizationTests.java ├── atma-paths │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ └── settings.gradle ├── automated-refactorings │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ └── main │ │ └── java │ │ ├── _01_Basic │ │ └── BasicRefactorings.java │ │ ├── _02_MethodsAndParameters │ │ ├── ConsoleDestination.java │ │ ├── FriendlyMessage.java │ │ ├── MessageDestination.java │ │ └── MethodsAndParameters.java │ │ ├── _03_LessUsed │ │ ├── CompositionRoot.java │ │ ├── ExampleSystem.java │ │ ├── MyMessage.java │ │ ├── MySystem.java │ │ ├── Object1.java │ │ ├── Object2.java │ │ └── Object3.java │ │ ├── _04_DealingWithSingleton │ │ └── CompositionRoot.java │ │ └── _05_WrapReturn_MakeStatic_ConvertToInstance │ │ ├── Database.java │ │ ├── EmployeeDto.java │ │ └── EmployeeReportCommand.java ├── book-metadata-parser │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── donotmodify │ │ │ ├── BookMetadata.java │ │ │ ├── Dimensions.java │ │ │ ├── Examples │ │ │ ├── Publisher.java │ │ │ └── Weight.java │ │ └── test │ │ └── java │ │ └── Lol.java ├── day_night_randori │ ├── build.gradle │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── production │ │ │ └── MutablePartOfDay.java │ │ │ └── thirdparty │ │ │ ├── PartOfDayValue.java │ │ │ └── WeatherServer.java │ │ └── test │ │ └── java │ │ └── MutablePartOfDaySpecification.java ├── dependency-injection │ ├── README.txt │ ├── _00_why-composition │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── Building.java │ │ │ ├── LoudAlarm.java │ │ │ ├── README.txt │ │ │ └── Sirens.java │ ├── _01_changing-behavior-through-composition │ │ ├── .gradle │ │ │ └── 2.5 │ │ │ │ └── taskArtifacts │ │ │ │ ├── cache.properties │ │ │ │ └── cache.properties.lock │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── github │ │ │ └── grzesiek_galezowski │ │ │ └── ChangingBehaviorThroughComposition │ │ │ ├── Alarm.java │ │ │ ├── Alarms │ │ │ ├── CompoundAlarm.java │ │ │ ├── LoudAlarm.java │ │ │ ├── NoAlarm.java │ │ │ ├── ParallelCompoundAlarm.java │ │ │ ├── SilentAlarm.java │ │ │ └── SwitchableAlarm.java │ │ │ ├── Building.java │ │ │ ├── CompositionRoot.java │ │ │ ├── SwitchCriteria.java │ │ │ └── SwitchCriterias │ │ │ ├── CompoundSwitchCriteria.java │ │ │ ├── MetDuringTheDayCriteria.java │ │ │ └── MetOnWorkDayCriteria.java │ ├── _02_control-freak │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── github │ │ │ └── grzesiek_galezowski │ │ │ └── DependencyInjection │ │ │ └── _1_ControlFreak │ │ │ ├── ApplicationRoot.java │ │ │ ├── Core │ │ │ ├── AcmeProcessingWorkflow.java │ │ │ └── TeleComSystem.java │ │ │ ├── InMessages │ │ │ ├── NullMessage.java │ │ │ ├── StartMessage.java │ │ │ └── StopMessage.java │ │ │ ├── Inbound │ │ │ ├── BinaryParsing.java │ │ │ ├── BinaryUdpInbound.java │ │ │ └── UdpSocket.java │ │ │ ├── Interfaces │ │ │ ├── AcmeMessage.java │ │ │ └── DataDestination.java │ │ │ ├── Outbound │ │ │ ├── TcpSocket.java │ │ │ ├── XmlMarshalling.java │ │ │ ├── XmlOutboundMessage.java │ │ │ └── XmlTcpOutbound.java │ │ │ └── Services │ │ │ ├── ActiveDirectoryBasedAuthorization.java │ │ │ ├── MsSqlBasedRepository.java │ │ │ └── SqlDataDestination.java │ ├── _03_control-freak-refactored │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── github │ │ │ └── grzesiek_galezowski │ │ │ └── DependencyInjectionAfter │ │ │ ├── ApplicationRoot.java │ │ │ ├── Core │ │ │ ├── AcmeProcessingWorkflow.java │ │ │ ├── ProcessingWorkflow.java │ │ │ └── TeleComSystem.java │ │ │ ├── InMessages │ │ │ ├── NullMessage.java │ │ │ ├── StartMessage.java │ │ │ └── StopMessage.java │ │ │ ├── Inbound │ │ │ ├── BinaryParsing.java │ │ │ ├── Inbound.java │ │ │ ├── InboundSocket.java │ │ │ ├── MessageInbound.java │ │ │ ├── Parsing.java │ │ │ └── UdpSocket.java │ │ │ ├── Interfaces │ │ │ ├── AcmeMessage.java │ │ │ └── DataDestination.java │ │ │ ├── Outbound │ │ │ ├── Marshalling.java │ │ │ ├── MessageOutbound.java │ │ │ ├── Outbound.java │ │ │ ├── OutboundMessage.java │ │ │ ├── OutboundMessageFactory.java │ │ │ ├── Socket.java │ │ │ ├── TcpSocket.java │ │ │ ├── XmlMarshalling.java │ │ │ ├── XmlOutboundMessage.java │ │ │ └── XmlOutboundMessageFactory.java │ │ │ └── Services │ │ │ ├── ActiveDirectoryBasedAuthorization.java │ │ │ ├── Authorization.java │ │ │ ├── MsSqlBasedRepository.java │ │ │ ├── Repository.java │ │ │ └── SqlDataDestination.java │ ├── _04_bastard-injection │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── github │ │ │ └── grzesiek_galezowski │ │ │ └── BastardInjection │ │ │ ├── ApplicationRoot.java │ │ │ ├── Core │ │ │ ├── AcmeProcessingWorkflow.java │ │ │ ├── ProcessingWorkflow.java │ │ │ └── TeleComSystem.java │ │ │ ├── InMessages │ │ │ ├── NullMessage.java │ │ │ ├── StartMessage.java │ │ │ └── StopMessage.java │ │ │ ├── Inbound │ │ │ ├── BinaryParsing.java │ │ │ ├── BinaryUdpInbound.java │ │ │ ├── Inbound.java │ │ │ ├── InputSocket.java │ │ │ ├── PacketParsing.java │ │ │ └── UdpSocket.java │ │ │ ├── Interfaces │ │ │ ├── DataDestination.java │ │ │ └── Message.java │ │ │ ├── Outbound │ │ │ ├── Marshalling.java │ │ │ ├── Outbound.java │ │ │ ├── OutboundMessage.java │ │ │ ├── OutputSocket.java │ │ │ ├── TcpSocket.java │ │ │ ├── XmlMarshalling.java │ │ │ ├── XmlOutbound.java │ │ │ └── XmlOutboundMessage.java │ │ │ └── Services │ │ │ ├── ActiveDirectoryBasedAuthorization.java │ │ │ ├── Authorization.java │ │ │ ├── MsSqlBasedRepository.java │ │ │ ├── Repository.java │ │ │ └── SqlDataDestination.java │ ├── _05_service-locator │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── ServiceLocatorAntipattern │ │ │ ├── ApplicationRoot.java │ │ │ ├── Core │ │ │ ├── AcmeProcessingWorkflow.java │ │ │ ├── ProcessingWorkflow.java │ │ │ └── TeleComSystem.java │ │ │ ├── InMessages │ │ │ ├── NullMessage.java │ │ │ ├── StartMessage.java │ │ │ └── StopMessage.java │ │ │ ├── Inbound │ │ │ ├── BinaryParsing.java │ │ │ ├── BinaryUdpInbound.java │ │ │ ├── Inbound.java │ │ │ ├── InputSocket.java │ │ │ ├── PacketParsing.java │ │ │ └── UdpSocket.java │ │ │ ├── Interfaces │ │ │ ├── DataDestination.java │ │ │ └── Message.java │ │ │ ├── Outbound │ │ │ ├── Marshalling.java │ │ │ ├── MessageOutbound.java │ │ │ ├── Outbound.java │ │ │ ├── OutboundMessage.java │ │ │ ├── OutputSocket.java │ │ │ ├── TcpSocket.java │ │ │ ├── XmlMarshalling.java │ │ │ └── XmlOutboundMessage.java │ │ │ └── Services │ │ │ ├── ActiveDirectoryBasedAuthorization.java │ │ │ ├── Authorization.java │ │ │ ├── MsSqlBasedRepository.java │ │ │ ├── Repository.java │ │ │ └── SqlDataDestination.java │ ├── _06_conforming-container-antipattern │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── github │ │ │ └── grzesiek_galezowski │ │ │ └── ConformingContainerAntipattern │ │ │ ├── ApplicationRoot.java │ │ │ ├── As.java │ │ │ ├── ConformingContainer.java │ │ │ ├── Core │ │ │ ├── AcmeProcessingWorkflow.java │ │ │ ├── ProcessingWorkflow.java │ │ │ └── TeleComSystem.java │ │ │ ├── InMessages │ │ │ ├── NullMessage.java │ │ │ ├── StartMessage.java │ │ │ └── StopMessage.java │ │ │ ├── Inbound │ │ │ ├── BinaryParsing.java │ │ │ ├── BinaryUdpInbound.java │ │ │ ├── Inbound.java │ │ │ ├── InputSocket.java │ │ │ ├── PacketParsing.java │ │ │ └── UdpSocket.java │ │ │ ├── Interfaces │ │ │ ├── DataDestination.java │ │ │ └── InboundMessage.java │ │ │ ├── Outbound │ │ │ ├── Marshalling.java │ │ │ ├── MessageOutbound.java │ │ │ ├── Outbound.java │ │ │ ├── OutboundMessage.java │ │ │ ├── OutputSocket.java │ │ │ ├── TcpSocket.java │ │ │ ├── XmlMarshalling.java │ │ │ └── XmlOutboundMessage.java │ │ │ └── Services │ │ │ ├── ActiveDirectoryBasedAuthorization.java │ │ │ ├── Authorization.java │ │ │ ├── MsSqlBasedRepository.java │ │ │ ├── Repository.java │ │ │ └── SqlDataDestination.java │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── digits-randori │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── src │ │ ├── main │ │ └── java │ │ │ ├── DigitalDisplayDriver.java │ │ │ └── thirdparty │ │ │ └── DigitalDisplay.java │ │ └── test │ │ └── java │ │ └── HelloWorld.java ├── dropwizard-hello │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── helloworld │ │ │ ├── HelloWorldConfiguration.java │ │ │ ├── HelloWorldResource.java │ │ │ ├── HelloWorldService.java │ │ │ ├── MessageTemplateHealthCheck.java │ │ │ └── Saying.java │ │ └── resources │ │ └── hello-world.yml ├── empty-pacman-randori2 │ ├── .gradle │ │ ├── buildOutputCleanup │ │ │ └── cache.properties │ │ └── vcsWorkingDirs │ │ │ └── gc.properties │ ├── .idea │ │ └── modules │ │ │ └── pacman-randori2_test.iml │ ├── build.gradle │ ├── build │ │ └── test-results │ │ │ └── test │ │ │ └── TEST-Specification.xml │ ├── gradlew │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── Main.java │ │ │ ├── main │ │ │ └── Ghost.java │ │ │ ├── thirdparty │ │ │ ├── GhostAppearance.java │ │ │ ├── InGameTimer.java │ │ │ ├── Location.java │ │ │ └── Pacman.java │ │ │ └── thirdpartyimpl │ │ │ ├── AnimatedPacman.java │ │ │ ├── OnStageRestorePoint.java │ │ │ ├── RealAppearance.java │ │ │ └── RestoreTimer.java │ │ └── test │ │ └── java │ │ └── Specification.java ├── factories │ ├── README.txt │ ├── _00_playground │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── main │ │ │ └── Main.java │ ├── _01_encapsulation_of_global_context │ │ ├── .idea │ │ │ ├── checkstyleidea-libs │ │ │ │ └── readme.txt │ │ │ └── modules │ │ │ │ ├── _01_no_factories_main.iml │ │ │ │ └── _01_no_factories_test.iml │ │ ├── README.txt │ │ ├── _01_no_factories.iml │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── authorization │ │ │ ├── AssetQueryResolution.java │ │ │ └── AuthorizationStructure.java │ │ │ ├── com │ │ │ └── github │ │ │ │ └── TrainingExamples │ │ │ │ └── grzesiek_galezowski │ │ │ │ └── commands │ │ │ │ ├── AdapterFromSubscriptionCommandToCommand.java │ │ │ │ ├── AssetAccessAuthorization.java │ │ │ │ ├── AssetQueriesFactory.java │ │ │ │ ├── Command.java │ │ │ │ ├── CommandFactory.java │ │ │ │ ├── CommandProcessing.java │ │ │ │ ├── ExceptionLoggedCommand.java │ │ │ │ ├── IAssetQueriesFactory.java │ │ │ │ ├── ICommandFactory.java │ │ │ │ ├── SubscriptionCommand.java │ │ │ │ ├── SubscriptionStartCommandFromApi.java │ │ │ │ ├── SubscriptionStopCommandFromApi.java │ │ │ │ └── UserAuthorization.java │ │ │ ├── dto │ │ │ ├── AssetKind.java │ │ │ ├── AssetRequestDto.java │ │ │ ├── NewSubscriptionParametersDto.java │ │ │ ├── StartSubscriptionResponseDto.java │ │ │ ├── StopSubscriptionResponseDto.java │ │ │ └── StoppedSubscriptionParametersDto.java │ │ │ ├── exceptions │ │ │ ├── FatalErrorOccuredDuringAuthorizationException.java │ │ │ ├── FatalErrorOccuredDuringQueryResolutionException.java │ │ │ └── FatalErrorOccuredDuringValidationsException.java │ │ │ ├── other │ │ │ ├── Api.java │ │ │ ├── DefaultResponseBuilderFactory.java │ │ │ ├── DummyLog.java │ │ │ ├── Log.java │ │ │ ├── Program.java │ │ │ └── ResponseBuilderFactory.java │ │ │ ├── queries │ │ │ ├── AssetQuery.java │ │ │ ├── HardwareQuery.java │ │ │ ├── OrganizationalUnitQuery.java │ │ │ ├── QueryResolutionEvents.java │ │ │ └── UserQuery.java │ │ │ ├── responseBuilders │ │ │ ├── AssetAuthorizationEvents.java │ │ │ ├── SubscriptionResponseBuilder.java │ │ │ ├── SubscriptionStartResponseBuilder.java │ │ │ ├── SubscriptionStopEvents.java │ │ │ ├── SubscriptionStopResponseBuilder.java │ │ │ ├── SubscriptionValidationResults.java │ │ │ └── UserAuthorizationEvents.java │ │ │ └── subscriptions │ │ │ ├── DataCorrectnessCriteria.java │ │ │ ├── ISubscriptionFactory.java │ │ │ ├── Subscription.java │ │ │ ├── SubscriptionDataCorrectnessCriteria.java │ │ │ ├── SubscriptionFactory.java │ │ │ ├── Subscriptions.java │ │ │ └── SubscriptionsModifyOperations.java │ ├── _01_no_factories │ │ └── gradlew.bat │ ├── _02_encapsulation_of_type │ │ ├── .idea │ │ │ └── modules │ │ │ │ ├── encapsulation_of_type_main.iml │ │ │ │ └── encapsulation_of_type_test.iml │ │ ├── build.gradle │ │ ├── encapsulation_of_type.iml │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── github │ │ │ └── TrainingExamples │ │ │ └── grzesiek_galezowski │ │ │ ├── Commands │ │ │ ├── SessionEnd.java │ │ │ ├── SessionInit.java │ │ │ └── SessionPayload.java │ │ │ ├── Main.java │ │ │ ├── Message.java │ │ │ ├── MessageDispatch.java │ │ │ ├── MessageDto.java │ │ │ ├── MessageFactory.java │ │ │ ├── UnknownMessageException.java │ │ │ └── V1MessageFactory.java │ ├── _03_encapsulation_of_rule │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── github │ │ │ └── TrainingExamples │ │ │ └── grzesiek_galezowski │ │ │ ├── Main.java │ │ │ ├── Message.java │ │ │ ├── MessageDispatch.java │ │ │ ├── MessageDto.java │ │ │ ├── MessageFactory.java │ │ │ ├── MessageTypes.java │ │ │ ├── MySystem.java │ │ │ ├── UnknownMessageException.java │ │ │ ├── V1ProtocolMessageFactory.java │ │ │ ├── V2ProtocolMessageFactory.java │ │ │ └── commands │ │ │ ├── SessionEnd.java │ │ │ ├── SessionInit.java │ │ │ └── SessionPayload.java │ ├── _04_encapsulation_of_terminology │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── github │ │ │ └── TrainingExamples │ │ │ └── grzesiek_galezowski │ │ │ ├── fizzbuzz1 │ │ │ └── FizzBuzzAlgorithm1.java │ │ │ └── fizzbuzz2 │ │ │ ├── Buzz.java │ │ │ ├── Fizz.java │ │ │ ├── Join.java │ │ │ ├── Rule.java │ │ │ ├── RuleBasedTransformationChain.java │ │ │ ├── TransformationChain.java │ │ │ └── TransformationChainsFactory.java │ ├── _05_static_creation_methods │ │ └── build.gradle │ ├── build.gradle │ ├── factories.iml │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── fizz-buzz-randori │ ├── build.gradle │ ├── build │ │ └── classes │ │ │ └── java │ │ │ └── main │ │ │ └── META-INF │ │ │ └── fizz-buzz-randori.main.kotlin_module │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ └── test │ │ └── java │ │ └── logic │ │ └── TestFizzBuzz.java ├── functional-fundamentals │ ├── build.gradle │ ├── build │ │ └── resources │ │ │ └── main │ │ │ └── amazon.txt │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── lib │ │ └── javac8-oo-plugin-0.5.jar │ ├── out │ │ └── production │ │ │ └── classes │ │ │ └── amazon.txt │ ├── settings.gradle │ └── src │ │ ├── main │ │ ├── java │ │ │ ├── _01_immutability │ │ │ │ ├── _00_PureImpure.java │ │ │ │ ├── _01_ImmutableReferences.java │ │ │ │ └── _02_ImmutableObjects.java │ │ │ ├── _02_tailrecursion │ │ │ │ ├── _01_RecursiveLoop.java │ │ │ │ ├── _02_RecursiveLoopTailCallOptimizable.java │ │ │ │ └── _03_SimpleFunctionalLoop.java │ │ │ ├── _03_analysis │ │ │ │ ├── _01_TypicalFunctions.java │ │ │ │ ├── _02_Streams.java │ │ │ │ ├── _03_AnalysingCodeWithNestedLambdas.java │ │ │ │ ├── _04_Memoization.java │ │ │ │ └── data │ │ │ │ │ ├── BookInfo.java │ │ │ │ │ ├── Dimensions.java │ │ │ │ │ ├── PublishInfo.java │ │ │ │ │ └── Weight.java │ │ │ ├── _04_composition │ │ │ │ ├── _01_DeclarativeProgramming.java │ │ │ │ ├── _02_HomeGrownComposition.java │ │ │ │ ├── _03_LibraryBuiltInComposition.java │ │ │ │ ├── _04_BasicPartialApplication.java │ │ │ │ ├── _05_FunctionCompositionWithPartialApplication.java │ │ │ │ ├── _06_StreamsAsAWayToComposeFunctions.java │ │ │ │ └── wrappers │ │ │ │ │ ├── Arithmetics.java │ │ │ │ │ ├── Compose.java │ │ │ │ │ ├── Functions.java │ │ │ │ │ ├── MyStringFunction.java │ │ │ │ │ └── Text.java │ │ │ └── _05_ImmutableGotchas │ │ │ │ ├── FinalEmptyObject.java │ │ │ │ ├── NonFinalEmptyObject.java │ │ │ │ ├── ObjectWithPrivateFinalAbstractField.java │ │ │ │ ├── ObjectWithPrivateFinalArrayField.java │ │ │ │ ├── ObjectWithPrivateFinalDateField.java │ │ │ │ ├── ObjectWithPrivateFinalDateWithZoneField.java │ │ │ │ ├── ObjectWithPrivateFinalGenericField.java │ │ │ │ ├── ObjectWithPrivateFinalListFieldAndGetter.java │ │ │ │ ├── ObjectWithPrivateFinalListPassedViaConstructor.java │ │ │ │ ├── ObjectWithPrivateNonFinalDateWithZoneField.java │ │ │ │ ├── ObjectWithSingleFinalProtectedField.java │ │ │ │ ├── ObjectWithSinglePrivateField.java │ │ │ │ └── ObjectWithSinglePrivateFinalField.java │ │ └── resources │ │ │ └── amazon.txt │ │ └── test │ │ └── java │ │ ├── _05_ImmutableGotchas │ │ └── RealImmutable.java │ │ └── _06_PropertyBasedTesting │ │ ├── EvenIntegers.java │ │ ├── MyRectangle.java │ │ ├── MyRectangleGen.java │ │ ├── OddIntegers.java │ │ ├── QuickTheoriesExamples.java │ │ ├── Widget.java │ │ └── Widgets.java ├── mars-rover-functional │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── github │ │ └── galezowski │ │ └── grzegorz │ │ └── code │ │ ├── Direction.java │ │ ├── Main.java │ │ ├── Point.java │ │ ├── Rover.java │ │ └── RoverCommands.java ├── medicine-clash-kata │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── api │ │ │ ├── Medicine.java │ │ │ ├── Patient.java │ │ │ └── Prescription.java │ │ │ └── dto │ │ │ ├── MedicineDto.java │ │ │ └── PrescriptionDto.java │ │ └── test │ │ └── java │ │ └── component │ │ ├── MedicineBuilder.java │ │ ├── PrescriptionBuilder.java │ │ └── SimpleBehaviorsSpecification.java ├── messaging-patterns │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── message_routing │ │ │ └── ContentBasedRouter.java │ │ │ └── messaging_channels │ │ │ ├── DataTypeChannel.java │ │ │ ├── InvalidMessageChannel.java │ │ │ ├── MessagingBridge.java │ │ │ ├── PointToPointChannel.java │ │ │ ├── PubSubChannel.java │ │ │ ├── Splitter.java │ │ │ └── events │ │ │ ├── ItemDelivered.java │ │ │ └── PurchaseMade.java │ │ └── test │ │ └── java │ │ └── messaging_channels │ │ ├── DataTypeChannelSpecification.java │ │ ├── InvalidMessageChannelSpecification.java │ │ ├── PointToPointChannelSpecification.java │ │ └── PubSubChannelSpecification.java ├── pacman-randori │ ├── build.gradle │ ├── build │ │ ├── libs │ │ │ └── pacman-randori-1.0-SNAPSHOT.jar │ │ ├── reports │ │ │ └── tests │ │ │ │ ├── classes │ │ │ │ ├── GhostStateMachineSpecification.html │ │ │ │ └── Specification.html │ │ │ │ ├── css │ │ │ │ ├── base-style.css │ │ │ │ └── style.css │ │ │ │ ├── index.html │ │ │ │ └── js │ │ │ │ └── report.js │ │ ├── test-results │ │ │ ├── TEST-GhostStateMachineSpecification.xml │ │ │ ├── TEST-Specification.xml │ │ │ └── binary │ │ │ │ └── test │ │ │ │ ├── output.bin │ │ │ │ ├── output.bin.idx │ │ │ │ └── results.bin │ │ └── tmp │ │ │ └── jar │ │ │ └── MANIFEST.MF │ ├── class-diagram.png │ ├── class-diagram.uxf │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── lib │ │ ├── autofixturegenerator-0.6.7.jar │ │ ├── guava-17.0.jar │ │ └── mockito-all-1.10.19.jar │ ├── pacman-randori.iml │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── Main.java │ │ │ ├── interfaces │ │ │ ├── GhostContext.java │ │ │ ├── GhostState.java │ │ │ └── GhostStates.java │ │ │ ├── main │ │ │ ├── Ghost.java │ │ │ └── GhostFactory.java │ │ │ ├── other │ │ │ └── AnimatedGhost.java │ │ │ ├── states │ │ │ ├── AnimatedGhostStates.java │ │ │ ├── Chasing.java │ │ │ ├── Restoring.java │ │ │ ├── RunningAway.java │ │ │ └── SeekingRestore.java │ │ │ ├── thirdparty │ │ │ ├── GhostAppearance.java │ │ │ ├── InGameTimer.java │ │ │ ├── Location.java │ │ │ └── Pacman.java │ │ │ └── thirdpartyimpl │ │ │ ├── AnimatedPacman.java │ │ │ ├── OnStageRestorePoint.java │ │ │ ├── RealAppearance.java │ │ │ └── RestoreTimer.java │ │ └── test │ │ └── java │ │ ├── GhostStateMachineSpecification.java │ │ └── Specification.java ├── path-randori │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── path-randori.iml │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── FileExtension.java │ │ │ └── FileName.java │ │ └── test │ │ └── java │ │ ├── FileExtensionTest.java │ │ └── FileNameTest.java ├── path-values │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── logic │ │ │ ├── AbsoluteDirectoryPath.java │ │ │ ├── AbsoluteFilePath.java │ │ │ ├── DirectoryName.java │ │ │ ├── FileName.java │ │ │ ├── RelativeDirectoryPath.java │ │ │ └── RelativeFilePath.java │ │ └── test │ │ └── java │ │ └── logic │ │ ├── AbsoluteDirectoryPathSpecification.java │ │ ├── AbsoluteFilePathSpecification.java │ │ ├── DirectoryNameSpecification.java │ │ ├── FileNameSpecification.java │ │ ├── InlineGenerators.java │ │ ├── IntegrationSpecification.java │ │ ├── RelativeDirectoryPathSpecification.java │ │ └── RelativeFilePathSpecification.java ├── readonly-collections │ ├── .gradle │ │ └── buildOutputCleanup │ │ │ └── cache.properties │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ └── main │ │ └── java │ │ └── readonly │ │ ├── factory │ │ └── ReadOnlyCollections.java │ │ ├── implementation │ │ ├── ReadOnlyCollectionWrapper.java │ │ ├── ReadOnlyDequeWrapper.java │ │ ├── ReadOnlyListWrapper.java │ │ ├── ReadOnlyMapWrapper.java │ │ ├── ReadOnlyNavigableMapWrapper.java │ │ ├── ReadOnlyNavigableSetWrapper.java │ │ ├── ReadOnlyQueueWrapper.java │ │ ├── ReadOnlySetWrapper.java │ │ ├── ReadOnlySortedMapWrapper.java │ │ ├── ReadOnlySortedSetWrapper.java │ │ └── iterator │ │ │ ├── ReadOnlyCollectionIteratorWrapper.java │ │ │ └── ReadOnlyListIteratorWrapper.java │ │ └── interfaces │ │ ├── ReadOnlyCollection.java │ │ ├── ReadOnlyCollectionIterator.java │ │ ├── ReadOnlyDeque.java │ │ ├── ReadOnlyList.java │ │ ├── ReadOnlyListIterator.java │ │ ├── ReadOnlyMap.java │ │ ├── ReadOnlyNavigableMap.java │ │ ├── ReadOnlyNavigableSet.java │ │ ├── ReadOnlyQueue.java │ │ ├── ReadOnlySet.java │ │ ├── ReadOnlySortedMap.java │ │ └── ReadOnlySortedSet.java ├── serenity-ioc │ ├── build.gradle │ ├── build │ │ └── resources │ │ │ └── test │ │ │ ├── cucumber.properties │ │ │ └── features │ │ │ └── Calculator.feature │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ ├── src │ │ └── test │ │ │ ├── java │ │ │ └── com │ │ │ │ └── github │ │ │ │ └── grzesiekgalezowski │ │ │ │ └── main │ │ │ │ ├── AcceptanceTests.java │ │ │ │ ├── CustomPicoFactory.java │ │ │ │ ├── MyDependency.java │ │ │ │ ├── OtherSteps.java │ │ │ │ └── SearchByKeywordStepDefinitions.java │ │ │ └── resources │ │ │ ├── cucumber.properties │ │ │ └── features │ │ │ └── Calculator.feature │ └── target │ │ └── site │ │ ├── serenity │ │ ├── SERENITY-JUNIT-ca5ed472e196880de080d0af1edeaa6ea6658aeccc8a72dc6ade438c33d85fec.xml │ │ ├── bootstrap │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ └── bootstrap.css.map │ │ │ └── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ ├── ca5ed472e196880de080d0af1edeaa6ea6658aeccc8a72dc6ade438c33d85fec.html │ │ ├── ca5ed472e196880de080d0af1edeaa6ea6658aeccc8a72dc6ade438c33d85fec.json │ │ ├── datatables │ │ │ └── 1.10.4 │ │ │ │ └── media │ │ │ │ ├── images │ │ │ │ ├── Sorting icons.psd │ │ │ │ ├── back_disabled.png │ │ │ │ ├── back_enabled.png │ │ │ │ ├── back_enabled_hover.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── forward_disabled.png │ │ │ │ ├── forward_enabled.png │ │ │ │ ├── forward_enabled_hover.png │ │ │ │ ├── sort_asc.png │ │ │ │ ├── sort_asc_disabled.png │ │ │ │ ├── sort_both.png │ │ │ │ ├── sort_desc.png │ │ │ │ └── sort_desc_disabled.png │ │ │ │ └── jqueryui │ │ │ │ ├── dataTables.jqueryui.scss │ │ │ │ └── index.html │ │ ├── favicon.ico │ │ ├── font-awesome │ │ │ ├── font │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ └── fontawesome-webfont.woff │ │ │ ├── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ └── fontawesome-webfont.woff │ │ │ ├── less │ │ │ │ ├── bootstrap.less │ │ │ │ ├── bordered-pulled.less │ │ │ │ ├── core.less │ │ │ │ ├── extras.less │ │ │ │ ├── fixed-width.less │ │ │ │ ├── font-awesome-ie7.less │ │ │ │ ├── font-awesome.less │ │ │ │ ├── icons.less │ │ │ │ ├── larger.less │ │ │ │ ├── list.less │ │ │ │ ├── mixins.less │ │ │ │ ├── path.less │ │ │ │ ├── rotated-flipped.less │ │ │ │ ├── spinning.less │ │ │ │ ├── stacked.less │ │ │ │ └── variables.less │ │ │ └── scss │ │ │ │ ├── _bootstrap.scss │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ ├── _core.scss │ │ │ │ ├── _extras.scss │ │ │ │ ├── _fixed-width.scss │ │ │ │ ├── _icons.scss │ │ │ │ ├── _larger.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _path.scss │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ ├── _spinning.scss │ │ │ │ ├── _stacked.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── font-awesome-ie7.scss │ │ │ │ └── font-awesome.scss │ │ ├── images │ │ │ ├── bg_01.jpg │ │ │ ├── bg_04.jpg │ │ │ ├── bottomm.jpg │ │ │ ├── cross.png │ │ │ ├── driver-appium.png │ │ │ ├── driver-chrome.png │ │ │ ├── driver-firefox.png │ │ │ ├── driver-htmlunit.png │ │ │ ├── driver-iexplorer.png │ │ │ ├── driver-opera.png │ │ │ ├── driver-phantomjs.png │ │ │ ├── driver-provided.png │ │ │ ├── driver-remote.png │ │ │ ├── driver-safari.png │ │ │ ├── fail.png │ │ │ ├── greenline.jpg │ │ │ ├── ico-q.png │ │ │ ├── icon-1.jpg │ │ │ ├── ignor.png │ │ │ ├── links_menu.png │ │ │ ├── logo.jpg │ │ │ ├── menu_f.png │ │ │ ├── menu_h.png │ │ │ ├── menu_s.png │ │ │ ├── middle-left.jpg │ │ │ ├── middle-right.jpg │ │ │ ├── middle.jpg │ │ │ ├── minus.png │ │ │ ├── pending.png │ │ │ ├── plus.png │ │ │ ├── screen.png │ │ │ ├── serenity-bdd-logo.png │ │ │ ├── skip.png │ │ │ ├── small-middle-left.jpg │ │ │ ├── small-middle-right.png │ │ │ ├── small-middle.png │ │ │ ├── success.png │ │ │ ├── tablebg.jpg │ │ │ ├── tick.png │ │ │ ├── top-left.jpg │ │ │ ├── top-right.jpg │ │ │ ├── top.jpg │ │ │ ├── topm.jpg │ │ │ ├── traffic-green.gif │ │ │ ├── traffic-in-progress.gif │ │ │ ├── traffic-orange.gif │ │ │ ├── traffic-red.gif │ │ │ ├── traffic-yellow.gif │ │ │ ├── video.png │ │ │ └── worker.png │ │ ├── jit │ │ │ └── css │ │ │ │ ├── col1.png │ │ │ │ ├── col2.png │ │ │ │ └── gradient.png │ │ ├── jqtree │ │ │ └── 0.22 │ │ │ │ └── jqtree-circle.png │ │ ├── jqueryui │ │ │ └── 1.11.2-start │ │ │ │ ├── images │ │ │ │ ├── ui-bg_flat_55_999999_40x100.png │ │ │ │ ├── ui-bg_flat_75_aaaaaa_40x100.png │ │ │ │ ├── ui-bg_glass_45_0078ae_1x400.png │ │ │ │ ├── ui-bg_glass_55_f8da4e_1x400.png │ │ │ │ ├── ui-bg_glass_75_79c9ec_1x400.png │ │ │ │ ├── ui-bg_gloss-wave_45_e14f1c_500x100.png │ │ │ │ ├── ui-bg_gloss-wave_50_6eac2c_500x100.png │ │ │ │ ├── ui-bg_gloss-wave_75_2191c0_500x100.png │ │ │ │ ├── ui-bg_inset-hard_100_fcfdfd_1x100.png │ │ │ │ ├── ui-icons_0078ae_256x240.png │ │ │ │ ├── ui-icons_056b93_256x240.png │ │ │ │ ├── ui-icons_d8e7f3_256x240.png │ │ │ │ ├── ui-icons_e0fdff_256x240.png │ │ │ │ ├── ui-icons_f5e175_256x240.png │ │ │ │ ├── ui-icons_f7a50d_256x240.png │ │ │ │ └── ui-icons_fcd113_256x240.png │ │ │ │ └── index.html │ │ ├── nivo-slider │ │ │ └── 3.2 │ │ │ │ ├── README.md │ │ │ │ ├── demo │ │ │ │ ├── demo.html │ │ │ │ └── images │ │ │ │ │ ├── dev7logo.png │ │ │ │ │ ├── nemo.jpg │ │ │ │ │ ├── toystory.jpg │ │ │ │ │ ├── up.jpg │ │ │ │ │ └── walle.jpg │ │ │ │ ├── nivoslider.jquery.json │ │ │ │ └── themes │ │ │ │ ├── bar │ │ │ │ ├── arrows.png │ │ │ │ ├── bullets.png │ │ │ │ └── loading.gif │ │ │ │ ├── dark │ │ │ │ ├── arrows.png │ │ │ │ ├── bullets.png │ │ │ │ └── loading.gif │ │ │ │ ├── default │ │ │ │ ├── arrows.png │ │ │ │ ├── bullets.png │ │ │ │ └── loading.gif │ │ │ │ └── light │ │ │ │ ├── arrows.png │ │ │ │ ├── bullets.png │ │ │ │ └── loading.gif │ │ └── serenity-resources │ │ └── thucydides │ │ ├── ae63e9d810efbb4b4cd14761f06da4ae436107321291fa071531095e8b5fe046.html │ │ ├── ae63e9d810efbb4b4cd14761f06da4ae436107321291fa071531095e8b5fe046.json │ │ ├── ae63e9d810efbb4b4cd14761f06da4ae436107321291fa071531095e8b5fe046.xml │ │ ├── bootstrap │ │ ├── css │ │ │ ├── bootstrap-theme.css.map │ │ │ └── bootstrap.css.map │ │ └── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ ├── datatables │ │ └── media │ │ │ └── images │ │ │ ├── Sorting icons.psd │ │ │ ├── back_disabled.png │ │ │ ├── back_enabled.png │ │ │ ├── back_enabled_hover.png │ │ │ ├── favicon.ico │ │ │ ├── forward_disabled.png │ │ │ ├── forward_enabled.png │ │ │ ├── forward_enabled_hover.png │ │ │ ├── sort_asc.png │ │ │ ├── sort_asc_disabled.png │ │ │ ├── sort_both.png │ │ │ ├── sort_desc.png │ │ │ └── sort_desc_disabled.png │ │ ├── favicon.ico │ │ ├── font-awesome │ │ ├── font │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── less │ │ │ ├── bootstrap.less │ │ │ ├── bordered-pulled.less │ │ │ ├── core.less │ │ │ ├── extras.less │ │ │ ├── fixed-width.less │ │ │ ├── font-awesome-ie7.less │ │ │ ├── font-awesome.less │ │ │ ├── icons.less │ │ │ ├── larger.less │ │ │ ├── list.less │ │ │ ├── mixins.less │ │ │ ├── path.less │ │ │ ├── rotated-flipped.less │ │ │ ├── spinning.less │ │ │ ├── stacked.less │ │ │ └── variables.less │ │ └── scss │ │ │ ├── _bootstrap.scss │ │ │ ├── _bordered-pulled.scss │ │ │ ├── _core.scss │ │ │ ├── _extras.scss │ │ │ ├── _fixed-width.scss │ │ │ ├── _icons.scss │ │ │ ├── _larger.scss │ │ │ ├── _list.scss │ │ │ ├── _mixins.scss │ │ │ ├── _path.scss │ │ │ ├── _rotated-flipped.scss │ │ │ ├── _spinning.scss │ │ │ ├── _stacked.scss │ │ │ ├── _variables.scss │ │ │ ├── font-awesome-ie7.scss │ │ │ └── font-awesome.scss │ │ ├── images │ │ ├── bg_01.jpg │ │ ├── bg_04.jpg │ │ ├── bottomm.jpg │ │ ├── cross.png │ │ ├── fail.png │ │ ├── greenline.jpg │ │ ├── ico-q.png │ │ ├── icon-1.jpg │ │ ├── ignor.png │ │ ├── links_menu.png │ │ ├── logo.jpg │ │ ├── menu_f.png │ │ ├── menu_h.png │ │ ├── menu_s.png │ │ ├── middle-left.jpg │ │ ├── middle-right.jpg │ │ ├── middle.jpg │ │ ├── minus.png │ │ ├── pending.png │ │ ├── plus.png │ │ ├── screen.png │ │ ├── serenity-bdd-logo.png │ │ ├── skip.png │ │ ├── small-middle-left.jpg │ │ ├── small-middle-right.png │ │ ├── small-middle.png │ │ ├── success.png │ │ ├── tablebg.jpg │ │ ├── tick.png │ │ ├── top-left.jpg │ │ ├── top-right.jpg │ │ ├── top.jpg │ │ ├── topm.jpg │ │ ├── traffic-green.gif │ │ ├── traffic-in-progress.gif │ │ ├── traffic-orange.gif │ │ ├── traffic-red.gif │ │ ├── traffic-yellow.gif │ │ ├── video.png │ │ └── worker.png │ │ ├── jit │ │ └── css │ │ │ ├── col1.png │ │ │ ├── col2.png │ │ │ └── gradient.png │ │ ├── jqtree │ │ └── jqtree-circle.png │ │ ├── jqueryui │ │ └── css │ │ │ └── start │ │ │ └── images │ │ │ ├── ui-bg_flat_55_999999_40x100.png │ │ │ ├── ui-bg_flat_75_aaaaaa_40x100.png │ │ │ ├── ui-bg_glass_45_0078ae_1x400.png │ │ │ ├── ui-bg_glass_55_f8da4e_1x400.png │ │ │ ├── ui-bg_glass_75_79c9ec_1x400.png │ │ │ ├── ui-bg_gloss-wave_45_e14f1c_500x100.png │ │ │ ├── ui-bg_gloss-wave_50_6eac2c_500x100.png │ │ │ ├── ui-bg_gloss-wave_75_2191c0_500x100.png │ │ │ ├── ui-bg_inset-hard_100_fcfdfd_1x100.png │ │ │ ├── ui-icons_0078ae_256x240.png │ │ │ ├── ui-icons_056b93_256x240.png │ │ │ ├── ui-icons_d8e7f3_256x240.png │ │ │ ├── ui-icons_e0fdff_256x240.png │ │ │ ├── ui-icons_f5e175_256x240.png │ │ │ ├── ui-icons_f7a50d_256x240.png │ │ │ └── ui-icons_fcd113_256x240.png │ │ └── nivo-slider │ │ ├── README │ │ └── themes │ │ └── default │ │ ├── arrows.png │ │ ├── bullets.png │ │ ├── loading.gif │ │ └── roundarrows.png ├── spring-boot-example │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ └── gradlew.bat ├── spring-boot-manual-composition-root │ ├── .gitignore │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── out │ │ └── production │ │ │ └── resources │ │ │ └── application.properties │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── springbootmanualcompositionroot │ │ │ │ ├── Service.java │ │ │ │ ├── adapters │ │ │ │ ├── ApplicationDependencies.java │ │ │ │ ├── BooksController.java │ │ │ │ ├── PlainCommandsFactory.java │ │ │ │ ├── ServiceLogicRoot.java │ │ │ │ └── SimpleBookRepository.java │ │ │ │ └── application │ │ │ │ ├── ApplicationLogicRoot.java │ │ │ │ ├── Book.java │ │ │ │ ├── BookQuery.java │ │ │ │ ├── BookRepository.java │ │ │ │ ├── CommandsFactory.java │ │ │ │ └── PlainBookQuery.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── springbootmanualcompositionroot │ │ └── ServiceTests.java ├── spring-ioc-example │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ ├── spring-ioc-example.iml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── github │ │ │ └── grzesiekgalezowski │ │ │ └── examples │ │ │ ├── Main.java │ │ │ ├── config │ │ │ ├── Cache.java │ │ │ ├── MainConfiguration.java │ │ │ └── PureDiCompositionRoot.java │ │ │ └── domain │ │ │ ├── BusinessEntitlement.java │ │ │ ├── Destination.java │ │ │ ├── Entitlement.java │ │ │ ├── EntitlementDecorator.java │ │ │ ├── InMemoryCache.java │ │ │ ├── Output.java │ │ │ ├── PersistentCache.java │ │ │ └── Source.java │ │ └── test │ │ └── java │ │ └── MainSpecification.java ├── tdd-java-17 │ ├── .gradle │ │ ├── 7.5.1 │ │ │ ├── dependencies-accessors │ │ │ │ └── gc.properties │ │ │ └── gc.properties │ │ ├── buildOutputCleanup │ │ │ └── cache.properties │ │ └── vcs-1 │ │ │ └── gc.properties │ ├── .idea │ │ ├── .gitignore │ │ └── fileTemplates │ │ │ └── code │ │ │ ├── JUnit5 Test Method.java │ │ │ ├── New Method Body.java │ │ │ └── Overridden Method Body.java │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── example │ │ │ ├── Command.java │ │ │ ├── GoogleTranslationApi.java │ │ │ ├── HttpResponseBuilder.java │ │ │ ├── Main.java │ │ │ ├── MyApplication.java │ │ │ ├── TranslateCommand.java │ │ │ ├── TranslateRequestData.java │ │ │ ├── TranslateResponseBuilder.java │ │ │ ├── TranslationApi.java │ │ │ ├── TranslationRequest.java │ │ │ └── TranslationRequestFromData.java │ │ └── test │ │ └── java │ │ └── org │ │ └── example │ │ └── TranslateCommandSpecification.java ├── test-automation-layer-example │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ ├── application │ │ │ └── MusicStreamingService.java │ │ │ ├── bootstrap │ │ │ └── Main.java │ │ │ ├── inbound │ │ │ ├── adapters │ │ │ │ └── ConsoleInput.java │ │ │ └── ports │ │ │ │ ├── Api.java │ │ │ │ ├── RecordDto.java │ │ │ │ └── RecordsListDto.java │ │ │ └── outbound │ │ │ ├── adapters │ │ │ └── Screen.java │ │ │ └── ports │ │ │ └── Destination.java │ │ └── test │ │ └── java │ │ └── BehaviorsSpecification.java ├── test-setup-gotchas │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── whatever │ │ │ ├── HandRadio.java │ │ │ └── UserRegistration.java │ │ └── test │ │ └── java │ │ ├── problems │ │ ├── _01_JointFixtures.java │ │ ├── _02_LocallyCorrectedFixture.java │ │ ├── _03_OverloadedFixtures.java │ │ └── _04_EvadingAlreadyUsedValues.java │ │ └── solutions │ │ ├── _01_JointFixtures_01.java │ │ ├── _02_LocallyCorrectedFixture.java │ │ ├── _03_OverloadedFixtures.java │ │ └── _04_EvadingAlreadyUsedValues.java ├── validations-kata │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── randori │ │ │ └── inbound │ │ │ ├── logic │ │ │ ├── CommandFactory.java │ │ │ ├── Errors.java │ │ │ ├── MainModule.java │ │ │ ├── SubscriptionCommand.java │ │ │ ├── SubscriptionCommandFactory.java │ │ │ ├── SubscriptionStartCommand.java │ │ │ ├── SubscriptionValidationRules.java │ │ │ ├── ValidationRules.java │ │ │ └── ValidationRulesImpl.java │ │ │ └── thirdparty │ │ │ └── SubscriptionRequestData.java │ │ └── test │ │ └── java │ │ └── com │ │ └── randori │ │ └── inbound │ │ └── logic │ │ ├── MainModuleTests.java │ │ ├── SubscriptionCommandFactoryTest.java │ │ ├── SubscriptionStartCommandTest.java │ │ └── SubscriptionValidationRulesTest.java ├── value-objects │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src │ │ └── main │ │ └── java │ │ ├── withValueObjects │ │ ├── Product.java │ │ ├── ProductName.java │ │ └── Products.java │ │ └── withoutValueObjects │ │ ├── Product.java │ │ └── Products.java └── xunit-test-patterns │ ├── .idea │ ├── modules │ │ ├── xunit-test-patterns.main.iml │ │ └── xunit-test-patterns.test.iml │ └── xunit-test-patterns.iml │ ├── build.gradle │ ├── build │ └── reports │ │ └── tests │ │ └── test │ │ └── index.html │ ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ ├── src │ ├── main │ │ └── java │ │ │ ├── _00_test_organization │ │ │ └── MySut.java │ │ │ ├── _02_basics │ │ │ ├── BufferSizeRule.java │ │ │ ├── DistinctFilter.java │ │ │ └── User.java │ │ │ ├── _03_parameterized_tests │ │ │ └── Person.java │ │ │ ├── _05_assertj │ │ │ └── NumberAssertion.java │ │ │ ├── _07_picking_test_values │ │ │ ├── BackupFileNamePattern.java │ │ │ └── UserNameCheck.java │ │ │ ├── _08_fixture_management │ │ │ ├── AddressStatus.java │ │ │ ├── InMemoryLog.java │ │ │ ├── Invoice.java │ │ │ ├── InvoiceAddress.java │ │ │ ├── InvoiceLine.java │ │ │ ├── InvoiceStatus.java │ │ │ ├── InvoiceToInvoiceLine.java │ │ │ ├── Money.java │ │ │ └── User.java │ │ │ └── _09_mock_objects │ │ │ ├── Command.java │ │ │ ├── CommandInterpreter.java │ │ │ ├── CopyOperation.java │ │ │ ├── Data.java │ │ │ ├── DataDestination.java │ │ │ ├── DataSource.java │ │ │ ├── ExecutionEngine.java │ │ │ ├── NullCommand.java │ │ │ └── SharedCore.java │ └── test │ │ └── java │ │ ├── _01_forget_about_before_and_after │ │ └── ExampleSpecification.java │ │ ├── _02_basics │ │ ├── Ex01FourPhaseTest.java │ │ └── Ex02SingleLogicalAssertion.java │ │ ├── _03_parameterized_tests │ │ └── Ex04ParameterizedTest_PersonSpecification.java │ │ ├── _04_custom_assertions │ │ ├── Ex01NoTrueFalseAssertions.java │ │ ├── Ex02SolutionWithLombok.java │ │ ├── Ex03SolutionWithPurelyCustomAssertions.java │ │ ├── Ex04SolutionWithCustomAndSoftAssertions.java │ │ ├── Ex05SolutionWithCustomConditions.java │ │ └── Ex06SolutionWithGraphAssertions.java │ │ ├── _05_assertj │ │ ├── Ex01TypeSpecificAssertions.java │ │ ├── Ex02LinkedAssertions.java │ │ ├── Ex03FailureMessagesAndDescriptions.java │ │ └── Ex04ExceptionAssertions.java │ │ ├── _06_other_assertion_patterns │ │ └── Ex01DeltaAssertion_TODO.java │ │ ├── _07_picking_test_values │ │ ├── MyClass.java │ │ ├── _01_ConstrainedNonDeterminism.java │ │ ├── _02_BoundaryValuesAndConstantTests.java │ │ ├── _03_ExampleValues.java │ │ └── _04_DerivedValues.java │ │ ├── _08_fixture_management │ │ ├── _00_MutableSharedFixture.java │ │ ├── _01_StandardFixture.java │ │ ├── _02_MinimalFixtureWithInlineSetup_TODO.java │ │ ├── _03_CreationMethods_TODO.java │ │ └── _04_TestDataBuilders.java │ │ └── _09_mock_objects │ │ ├── Ex01BasicStubbingAndMocking.java │ │ ├── Ex02MultipleReturnsAndOrderVerification.java │ │ ├── Ex03ThrowingExceptionsFromMocks.java │ │ ├── Ex04NoMoreInteractions.java │ │ ├── Ex05ZeroInteractions.java │ │ └── Ex06MockingRealClasses.java │ └── xunit-test-patterns.iml ├── Sandbox └── CSharp │ ├── ActiveObjects │ ├── ActiveObjects.sln │ └── ActiveObjects │ │ ├── ActiveObject.cs │ │ ├── ActiveObjects.csproj │ │ ├── MessageService.cs │ │ ├── Program.cs │ │ ├── SendTo.cs │ │ └── SendToConsole.cs │ ├── CostCalculation │ ├── CostCalculation.sln │ └── CostCalculation │ │ ├── CostCalculation.csproj │ │ └── Program.cs │ ├── EnvVars │ ├── EnvVars.sln │ ├── EnvVars │ │ ├── DefinedVariable.cs │ │ ├── EnvVars.csproj │ │ ├── InvalidVariableStateException.cs │ │ ├── OperationVerb.cs │ │ ├── UndefinedVariable.cs │ │ ├── UndefinedVariableException.cs │ │ ├── UnknownVariable.cs │ │ ├── VariableContainer.cs │ │ ├── VariableOperation.cs │ │ └── VariableStates.cs │ └── EnvVarsSpecification │ │ ├── DefinedVariableSpecification.cs │ │ ├── EnvVarsSpecification.csproj │ │ ├── Examples.cs │ │ ├── Globals.cs │ │ ├── TestVariableContainers.cs │ │ ├── UndefinedVariableSpecification.cs │ │ └── UnknownVariableSpecification.cs │ ├── FlowSimulation │ ├── FlowSimulation.sln │ └── FlowSimulation │ │ ├── FlowSimulation.csproj │ │ ├── ProductionCode │ │ ├── AssignedState.cs │ │ ├── Assignment.cs │ │ ├── Backlog.cs │ │ ├── CompoundEvents.cs │ │ ├── GlobalUsings.cs │ │ ├── IAssignmentState.cs │ │ ├── IEventsDestination.cs │ │ ├── ItemGroup.cs │ │ ├── ItemId.cs │ │ ├── RoleId.cs │ │ ├── Simulation.cs │ │ ├── Tasks.cs │ │ ├── Team.cs │ │ ├── TeamMemberId.cs │ │ ├── TeamMemberProperties.cs │ │ ├── TextLog.cs │ │ ├── UnassignedState.cs │ │ ├── WorkItem.cs │ │ ├── WorkItemProperties.cs │ │ └── WorkItemsRepository.cs │ │ └── Specification │ │ ├── Automation │ │ ├── Developers.cs │ │ ├── Roles.cs │ │ ├── SimulationDriver.cs │ │ ├── TeamMember.cs │ │ └── WorkItemPropertiesMother.cs │ │ ├── ExpectedEvent.cs │ │ ├── ExpectedEvents.cs │ │ └── SimulationSpecification.cs │ ├── MoveSubArrayElements │ ├── MoveSubArrayElements.sln │ └── Tests │ │ ├── Tests.csproj │ │ └── UnitTest1.cs │ ├── RadicalCqsWebApp │ ├── RadicalCqsWebApp.sln │ └── RadicalCqsWebApp │ │ ├── AddTodoItemCommand.cs │ │ ├── AddTodoItemDto.cs │ │ ├── AddTodoResponseDto.cs │ │ ├── AnalyticsApi.cs │ │ ├── IResultConsumer.cs │ │ ├── ISetReminderCallback.cs │ │ ├── ITodoItemsDaoOperationCallback.cs │ │ ├── Police.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── RadicalCqsWebApp.csproj │ │ ├── RadicalCqsWebApp.http │ │ ├── ReminderApi.cs │ │ ├── ResponseInProgress.cs │ │ ├── TodoItemDto.cs │ │ ├── TodoItemsDao.cs │ │ ├── TranslatedDto.cs │ │ ├── TranslationService.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── StrictSubstitute │ ├── GCop.json │ ├── StrictSubstitute.sln │ ├── StrictSubstitute │ │ ├── Class1.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── StrictNSubstitute.csproj │ │ └── packages.config │ └── StrictSubstituteSpecification │ │ ├── MethodReturnValue.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── StrictNSubstituteSpecification.csproj │ │ ├── StrictSubstitute.cs │ │ ├── StrictSubstituteSpecification.cs │ │ ├── app.config │ │ └── packages.config │ └── Tb03Gui │ ├── Application │ ├── AppLogic.cs │ ├── AppLogicRoot.cs │ ├── Application.csproj │ ├── BroadcastingOctaveObserver.cs │ ├── CheckGroupsAndPatternsAndTracksCount.cs │ ├── CheckThatFolderContainsOnlyPrmFilesStep.cs │ ├── ISelectedTb03BackupFolderProcessingStep.cs │ ├── NoActivePatternsFolder.cs │ ├── NoActiveTracksFolder.cs │ ├── Patterns.cs │ ├── PopulateInfoStep.cs │ ├── Ports │ │ ├── IActiveTracksFolderFactory.cs │ │ ├── IAppLogic.cs │ │ ├── IOctaveObserver.cs │ │ ├── IParameterToggleObserver.cs │ │ ├── IPatternLoadingObserver.cs │ │ ├── IPatternNavigationObserver.cs │ │ ├── IPatternsFolderFactory.cs │ │ ├── ISequencerPositionObserver.cs │ │ ├── ISynthesizer.cs │ │ ├── ITb03FolderProcessingObserver.cs │ │ ├── ITb03PatternsFolder.cs │ │ ├── ITb03TracksFolder.cs │ │ ├── ITrackPatternsObserver.cs │ │ ├── PatternNavigationConstants.cs │ │ ├── PatternNumber.cs │ │ ├── SequenceDto.cs │ │ ├── SequenceStepDto.cs │ │ ├── Tb03Note.cs │ │ ├── Tb03Octave.cs │ │ ├── TrackDto.cs │ │ └── TrackEntryDto.cs │ ├── Sequencer.cs │ ├── Tb03NoteParams.cs │ ├── Tb03PatternFileName.cs │ ├── Tb03TrackFileName.cs │ ├── TrackNavigationConstants.cs │ └── Tracks.cs │ ├── MidiPlayground │ └── MidiPlayground.csproj │ ├── Playground │ ├── Playground.csproj │ └── Program.cs │ ├── Tb03Gui.sln │ ├── Tb03Gui │ ├── App.xaml │ ├── App.xaml.cs │ ├── AssemblyInfo.cs │ ├── Midi │ │ ├── Synthesizer.cs │ │ ├── Tb03PatternGroupNumber.cs │ │ └── Tb03PatternNumberInGroup.cs │ ├── Prm │ │ ├── ActivePatternsFolder.cs │ │ ├── ActiveTracksFolder.cs │ │ ├── ActiveTracksFolderFactory.cs │ │ ├── PatternsFolderFactory.cs │ │ └── PrmConvert.cs │ ├── Tb03Gui.csproj │ └── View │ │ ├── FolderManagementTab │ │ ├── FolderManagement.xaml │ │ └── FolderManagement.xaml.cs │ │ ├── KeyboardView.xaml │ │ ├── KeyboardView.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── OctavePanel │ │ ├── OctavePad.xaml │ │ ├── OctavePad.xaml.cs │ │ ├── OctavePanelView.xaml │ │ └── OctavePanelView.xaml.cs │ │ ├── PatternNavigation │ │ ├── PatternGroupPad.xaml │ │ ├── PatternGroupPad.xaml.cs │ │ ├── PatternNavigationView.xaml │ │ ├── PatternNavigationView.xaml.cs │ │ ├── PatternPad.xaml │ │ └── PatternPad.xaml.cs │ │ ├── Sequencer │ │ ├── SequenceView.xaml │ │ ├── SequenceView.xaml.cs │ │ ├── SequencerPad.xaml │ │ └── SequencerPad.xaml.cs │ │ ├── Tb03Key.cs │ │ ├── Track │ │ ├── TrackBarView.xaml │ │ └── TrackBarView.xaml.cs │ │ └── TrackNavigation │ │ ├── TrackNavigationView.xaml │ │ ├── TrackNavigationView.xaml.cs │ │ ├── TrackPad.xaml │ │ └── TrackPad.xaml.cs │ └── Tb03GuiSpecification │ ├── PatternNumberSpecification.cs │ ├── Tb03GuiSpecification.csproj │ └── Usings.cs └── Tests.txt /CSharp/AdapterTests/AdapterTests/Usings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; -------------------------------------------------------------------------------- /CSharp/AdapterTests/GreetingService/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/IRecipient.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock; 2 | 3 | public interface IRecipient 4 | { 5 | void Handle(Work work); 6 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/IUserApi.cs: -------------------------------------------------------------------------------- 1 | using MockNoMock.UsersApp.Adapter.UserApi; 2 | 3 | namespace MockNoMock; 4 | 5 | public interface IUserApi 6 | { 7 | Task CreateNewUser(UserDto userDto); 8 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/MarsRide/Directions.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.MarsRide; 2 | 3 | public enum Directions 4 | { 5 | North, 6 | South, 7 | //sorry, only two directions :) 8 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/MarsRide/IBoard.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.MarsRide; 2 | 3 | public interface IBoard 4 | { 5 | void GoToPosition(Position position); 6 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/Twitter/IAddingOperationStatus.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.Twitter; 2 | 3 | public interface IAddingOperationStatus : INotifyingFollowersStatus, IAddingToExistingTweetsStatus 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/Twitter/IAddingToExistingTweetsStatus.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.Twitter; 2 | 3 | public interface IAddingToExistingTweetsStatus 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/Twitter/IFollowers.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.Twitter; 2 | 3 | public interface IFollowers 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/Twitter/INotifyingFollowersStatus.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.Twitter; 2 | 3 | public interface INotifyingFollowersStatus 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/Twitter/IPostedTweets.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.Twitter; 2 | 3 | public interface IPostedTweets 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/Twitter/ITweetCommand.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.Twitter; 2 | 3 | public interface ITweetCommand 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/Urls.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock; 2 | 3 | public class Urls 4 | { 5 | public string Url1 { get; set; } = default!; 6 | public string Url2 { get; set; } = default!; 7 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/UsersApp/Adapter.UserApi/UserDto.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.UsersApp.Adapter.UserApi; 2 | 3 | public readonly record struct UserDto(string Name, string Surname); -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/UsersApp/AppLogic/CommandFactory.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.UsersApp.AppLogic; 2 | 3 | public class CommandFactory : ICommandFactory 4 | { 5 | public CommandFactory(IUserApi userApi) 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/UsersApp/AppLogic/ICommandFactory.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.UsersApp.AppLogic; 2 | 3 | public interface ICommandFactory 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/UsersApp/MyProgram.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock.UsersApp; 2 | 3 | public class MyProgram 4 | { 5 | public MyProgram() 6 | { 7 | new CompositionRoot("http://something.com").NewUserController().Handle(); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/Work.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMock; 2 | 3 | public record Work; -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMock/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMockSpecification/_01_ChangeDetectors/IFirstPart.cs: -------------------------------------------------------------------------------- 1 | using MockNoMock; 2 | 3 | namespace MockNoMockSpecification._01_ChangeDetectors; 4 | 5 | public interface IFirstPart 6 | { 7 | void Process(Work work); 8 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMockSpecification/_01_ChangeDetectors/ISecondPart.cs: -------------------------------------------------------------------------------- 1 | using MockNoMock; 2 | 3 | namespace MockNoMockSpecification._01_ChangeDetectors; 4 | 5 | public interface ISecondPart 6 | { 7 | void Process(Work work); 8 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMockSpecification/_02_ImplementationDetails/ManagedWork.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMockSpecification._02_ImplementationDetails; 2 | 3 | public record ManagedWork(string Id); -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMockSpecification/_08_PeersInternals/IMyEvent.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMockSpecification._08_PeersInternals; 2 | 3 | public interface IMyEvent 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/AntiAntiMock/AntiAntiMockSpecification/_08_PeersInternals/IMyObserver.cs: -------------------------------------------------------------------------------- 1 | namespace MockNoMockSpecification._08_PeersInternals; 2 | 3 | public interface IMyObserver 4 | { 5 | void Send(params IMyEvent[] events); 6 | } -------------------------------------------------------------------------------- /CSharp/AutomatedRefactorings/AutomatedRefactorings/2_MethodsAndParameters/MessageDestination.cs: -------------------------------------------------------------------------------- 1 | namespace AutomatedRefactorings._2_MethodsAndParameters 2 | { 3 | public interface MessageDestination 4 | { 5 | void Send(string s); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/AutomatedRefactorings/TestProject/UnitTest1.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | 3 | namespace TestProject 4 | { 5 | public class Tests 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/AvoidAutoMockingContainers/AvoidAutoMockingContainers/AvoidAutoMockingContainers/IDestination.cs: -------------------------------------------------------------------------------- 1 | namespace AvoidAutoMockingContainers 2 | { 3 | public interface IDestination 4 | { 5 | void Save(int i); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/AvoidAutoMockingContainers/AvoidAutoMockingContainers/AvoidAutoMockingContainers/IService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace AvoidAutoMockingContainers 4 | { 5 | public interface IService 6 | { 7 | void Restart(TimeSpan timeout); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/AvoidAutoMockingContainers/AvoidAutoMockingContainers/AvoidAutoMockingContainers/ISource.cs: -------------------------------------------------------------------------------- 1 | namespace AvoidAutoMockingContainers 2 | { 3 | public interface ISource 4 | { 5 | int Read(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/BotsLecture/Lib/LicensePlateQueryData.cs: -------------------------------------------------------------------------------- 1 | namespace Lib; 2 | 3 | public record LicensePlateQueryData(string? Number, string? State); -------------------------------------------------------------------------------- /CSharp/BotsLecture/Lib/User.cs: -------------------------------------------------------------------------------- 1 | namespace Lib; 2 | 3 | public static class User 4 | { 5 | public static async Task RespondWith(string response) 6 | { 7 | Console.WriteLine(response); 8 | await SpeechService.SynthesizeAndRead(response); 9 | } 10 | } -------------------------------------------------------------------------------- /CSharp/CSharpTricks/TestProject1/Lol.cs: -------------------------------------------------------------------------------- 1 | namespace TestProject1; 2 | 3 | static class Lol 4 | { 5 | public static void Lol2(int a) 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparison/ICommandFactory.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonFactory 2 | { 3 | public interface ICommandFactory 4 | { 5 | AddUserCommand CreateAddUserCommand(UserDto userDto, ResultInProgress resultInProgress); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparison/IResultInProgressFactory.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonFactory 2 | { 3 | public interface IResultInProgressFactory 4 | { 5 | ResultInProgress CreateResultInProgress(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparison/IUserCommandDispatcher.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonFactory 2 | { 3 | public interface IUserCommandDispatcher 4 | { 5 | void Execute(T command); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparison/Result.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonFactory 2 | { 3 | public class Result 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparison/UserDto.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonFactory 2 | { 3 | public class UserDto 4 | { 5 | public string Name { get; set; } 6 | public string Surname { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparisonDispatcher/ICommandFactory.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonDispatcher 2 | { 3 | public interface ICommandFactory 4 | { 5 | IUserCommand CreateAddUserCommand(UserDto userDto, ResultInProgress resultInProgress); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparisonDispatcher/IResultInProgressFactory.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonDispatcher 2 | { 3 | public interface IResultInProgressFactory 4 | { 5 | ResultInProgress CreateResultInProgress(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparisonDispatcher/IUserCommand.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonDispatcher 2 | { 3 | public interface IUserCommand 4 | { 5 | void Execute(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparisonDispatcher/Result.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonDispatcher 2 | { 3 | public class Result 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/CommandComparisonDispatcher/UserDto.cs: -------------------------------------------------------------------------------- 1 | namespace CommandComparisonDispatcher 2 | { 3 | public class UserDto 4 | { 5 | public string Name { get; set; } 6 | public string Surname { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKata/Address.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKata 2 | { 3 | public class Address 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKata/DotNetJunkieKata.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp2.2 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKata/ICommandHandler.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKata 2 | { 3 | public interface ICommandHandler 4 | { 5 | void Handle(TCommand command); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKata/MoveCustomerCommand.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKata 2 | { 3 | public class MoveCustomerCommand 4 | { 5 | public int CustomerId { get; set; } 6 | public Address NewAddress { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKata/OtherDependencies.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKata 2 | { 3 | public class OtherDependencies 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKata/UnitOfWork.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKata 2 | { 3 | public interface UnitOfWork 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKataWithCommandFactory/Address.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKataWithCommandFactory 2 | { 3 | public class Address 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKataWithCommandFactory/ICommand.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKataWithCommandFactory 2 | { 3 | public interface ICommand 4 | { 5 | void Handle(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKataWithCommandFactory/ICommandFactory.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKataWithCommandFactory 2 | { 3 | public interface ICommandFactory 4 | { 5 | ICommand CreateCommand(int customerId, Address newAddress); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKataWithCommandFactory/OtherDependencies.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKataWithCommandFactory 2 | { 3 | public class OtherDependencies 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/CommandComparison/DotNetJunkieKataWithCommandFactory/UnitOfWork.cs: -------------------------------------------------------------------------------- 1 | namespace DotNetJunkieKataWithCommandFactory 2 | { 3 | public interface UnitOfWork 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/ControllerImplementations/ControllerImplementations/Controllers/PostCreatedDto.cs: -------------------------------------------------------------------------------- 1 | namespace ControllerImplementations.Controllers; 2 | 3 | public class PostCreatedDto 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/ControllerImplementations/ControllerImplementations/Controllers/PostDto.cs: -------------------------------------------------------------------------------- 1 | namespace ControllerImplementations.Controllers; 2 | 3 | public class PostDto 4 | { 5 | public string Content { get; set; } 6 | public string Author { get; set; } 7 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Command/Command/DummyCode/Dep2.cs: -------------------------------------------------------------------------------- 1 | namespace Command.DummyCode 2 | { 3 | public interface Dep2 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Command/Command/DummyCode/Dep3.cs: -------------------------------------------------------------------------------- 1 | namespace Command.DummyCode 2 | { 3 | public interface Dep3 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Command/Command/DummyCode/Dep4.cs: -------------------------------------------------------------------------------- 1 | namespace Command.DummyCode 2 | { 3 | public interface Dep4 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Command/Command/DummyCode/Dep5.cs: -------------------------------------------------------------------------------- 1 | namespace Command.DummyCode 2 | { 3 | public interface Dep5 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Command/Command/DummyCode/DummyDep.cs: -------------------------------------------------------------------------------- 1 | namespace Command.DummyCode 2 | { 3 | public class DummyDep : Dep1, Dep2, Dep3, Dep4, Dep5 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Command/Command/Results/ConcreteResult.cs: -------------------------------------------------------------------------------- 1 | namespace Command.Results 2 | { 3 | //can be a builder 4 | public class ConcreteResult : Result 5 | { 6 | public T Value { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Common/ICleanUpProcedure.cs: -------------------------------------------------------------------------------- 1 | namespace Observer.Common; 2 | 3 | public interface ICleanUpProcedure 4 | { 5 | void RunOn(IReadOnlyCollection files); 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Common/ICleanedUpDir.cs: -------------------------------------------------------------------------------- 1 | namespace Observer.Common; 2 | 3 | public interface ICleanedUpDir 4 | { 5 | IReadOnlyCollection GetFilesToCleanup(); 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Common/ICleanedUpFile.cs: -------------------------------------------------------------------------------- 1 | namespace Observer.Common; 2 | 3 | public interface ICleanedUpFile 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Common/ICleanupObserver.cs: -------------------------------------------------------------------------------- 1 | namespace Observer.Common; 2 | 3 | public interface ICleanupObserver 4 | { 5 | void OnCleanupSuccessful(int filesCount); 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Common/ISupport.cs: -------------------------------------------------------------------------------- 1 | namespace Observer.Common; 2 | 3 | public interface ISupport 4 | { 5 | void NotifyingObserverFailed(Exception exception, Type observerType, int filesCount); 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Common/NullCleanupObserver.cs: -------------------------------------------------------------------------------- 1 | namespace Observer.Common; 2 | 3 | public class NullCleanupObserver : ICleanupObserver 4 | { 5 | public void OnCleanupSuccessful(int filesCount) 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Common/Telemetry.cs: -------------------------------------------------------------------------------- 1 | namespace Observer.Common; 2 | 3 | internal class Telemetry : ICleanupObserver 4 | { 5 | public void OnCleanupSuccessful(int filesCount) 6 | { 7 | throw new NotImplementedException(); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Tests.cs: -------------------------------------------------------------------------------- 1 | namespace Observer; 2 | 3 | public class Tests 4 | { 5 | [Test] 6 | public void Test1() 7 | { 8 | Assert.Pass(); 9 | } 10 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/Usings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; 2 | global using TddXt.AnyRoot.Collections; 3 | global using static TddXt.AnyRoot.Root; -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/_05_NotUsingObserverAtAll/ICleanupHistory.cs: -------------------------------------------------------------------------------- 1 | namespace Observer._05_NotUsingObserverAtAll; 2 | 3 | internal interface ICleanupHistory 4 | { 5 | void Save(int filesCount); 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/_05_NotUsingObserverAtAll/IDiagnosticSubsystem.cs: -------------------------------------------------------------------------------- 1 | namespace Observer._05_NotUsingObserverAtAll; 2 | 3 | public interface IDiagnosticSubsystem 4 | { 5 | void HandleFilesCleanupSuccessful(int filesCount); 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/_05_NotUsingObserverAtAll/ITelemetry.cs: -------------------------------------------------------------------------------- 1 | namespace Observer._05_NotUsingObserverAtAll; 2 | 3 | internal interface ITelemetry 4 | { 5 | void Report(int filesCount); 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/Observer/Observer/_05_NotUsingObserverAtAll/IThresholdAlertDetection.cs: -------------------------------------------------------------------------------- 1 | namespace Observer._05_NotUsingObserverAtAll; 2 | 3 | internal interface IThresholdAlertDetection 4 | { 5 | void Check(int filesCount); 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/FunctionalState/LightSwitchState.cs: -------------------------------------------------------------------------------- 1 | namespace FunctionalState 2 | { 3 | public enum LightSwitchState 4 | { 5 | SwitchedOn, 6 | SwitchedOff 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/FunctionalState/OtherServices/Light.cs: -------------------------------------------------------------------------------- 1 | namespace FunctionalState.OtherServices 2 | { 3 | public interface Light 4 | { 5 | void PowerDown(); 6 | void PowerUp(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/FunctionalState/OtherServices/Output.cs: -------------------------------------------------------------------------------- 1 | namespace FunctionalState.OtherServices 2 | { 3 | public interface Output 4 | { 5 | void Show(int numSwitches); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/ProceduralStateMachine/LightSwitchState.cs: -------------------------------------------------------------------------------- 1 | namespace ProceduralStateMachine 2 | { 3 | public enum LightSwitchState 4 | { 5 | Off, 6 | On 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/ProceduralStateMachine/OtherServices/Light.cs: -------------------------------------------------------------------------------- 1 | namespace ProceduralStateMachine.OtherServices 2 | { 3 | public interface Light 4 | { 5 | void PowerDown(); 6 | void PowerUp(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/ProceduralStateMachine/OtherServices/Output.cs: -------------------------------------------------------------------------------- 1 | namespace ProceduralStateMachine.OtherServices 2 | { 3 | public interface Output 4 | { 5 | void Show(int numSwitches); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/State/Interfaces/LightSwitchContext.cs: -------------------------------------------------------------------------------- 1 | namespace State.Interfaces 2 | { 3 | public interface ILightSwitchContext 4 | { 5 | void MoveTo(ILightSwitchState nextState); 6 | void RegisterSwitchOn(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/State/Interfaces/LightSwitchStates.cs: -------------------------------------------------------------------------------- 1 | namespace State.Interfaces 2 | { 3 | public interface ILightSwitchStates 4 | { 5 | ILightSwitchState SwitchedOff(); 6 | ILightSwitchState SwitchedOn(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/State/InterfacesAndRoles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/CSharp/DesignPatterns/State/State/InterfacesAndRoles.png -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/State/OtherServices/Light.cs: -------------------------------------------------------------------------------- 1 | namespace State.OtherServices 2 | { 3 | public interface Light 4 | { 5 | void PowerDown(); 6 | void PowerUp(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/State/OtherServices/Output.cs: -------------------------------------------------------------------------------- 1 | namespace State.OtherServices 2 | { 3 | public interface Output 4 | { 5 | void Show(int numSwitches); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/StateWithImplicitContextPassing/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/StateWithImplicitContextPassing/OtherServices/Light.cs: -------------------------------------------------------------------------------- 1 | namespace StateWithImplicitContextPassing.OtherServices 2 | { 3 | public interface Light 4 | { 5 | void PowerDown(); 6 | void PowerUp(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/StateWithImplicitContextPassing/OtherServices/Output.cs: -------------------------------------------------------------------------------- 1 | namespace StateWithImplicitContextPassing.OtherServices 2 | { 3 | public interface Output 4 | { 5 | void Show(int numSwitches); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/StateWithReturnedNextState/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/StateWithReturnedNextState/Interfaces/LightSwitchContext.cs: -------------------------------------------------------------------------------- 1 | namespace StateWithReturnedNextState.Interfaces 2 | { 3 | public interface LightSwitchContext 4 | { 5 | void RegisterSwitchOn(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/StateWithReturnedNextState/OtherServices/Light.cs: -------------------------------------------------------------------------------- 1 | namespace StateWithReturnedNextState.OtherServices 2 | { 3 | public interface Light 4 | { 5 | void PowerDown(); 6 | void PowerUp(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/State/StateWithReturnedNextState/OtherServices/Output.cs: -------------------------------------------------------------------------------- 1 | namespace StateWithReturnedNextState.OtherServices 2 | { 3 | public interface Output 4 | { 5 | void Show(int numSwitches); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/VisitorPattern/AuthorizationStructure/AuthorizationStructureExample/ProductionCode/NodeType.cs: -------------------------------------------------------------------------------- 1 | namespace AuthorizationStructureExample.ProductionCode; 2 | 3 | public enum NodeType 4 | { 5 | Device, Group, User 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/VisitorPattern/AuthorizationStructure/AuthorizationStructureExampleWithVisitor/ProductionCode/NodeType.cs: -------------------------------------------------------------------------------- 1 | namespace AuthorizationStructureExampleWithVisitor.ProductionCode; 2 | 3 | public enum NodeType 4 | { 5 | Device, Group, User 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/VisitorPattern/CourtesyImplementation/_1_Downcasting/Elephant.cs: -------------------------------------------------------------------------------- 1 | namespace CourtesyImplementation._1_Downcasting 2 | { 3 | public class Elephant : Node 4 | { 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /CSharp/DesignPatterns/VisitorPattern/CourtesyImplementation/_1_Downcasting/Node.cs: -------------------------------------------------------------------------------- 1 | namespace CourtesyImplementation._1_Downcasting 2 | { 3 | public interface Node 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/VisitorPattern/CourtesyImplementation/_3_TellDontAsk/Node.cs: -------------------------------------------------------------------------------- 1 | namespace CourtesyImplementation._3_TellDontAsk 2 | { 3 | public interface Node 4 | { 5 | void AddTo(ElephantCounter counter); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DesignPatterns/VisitorPattern/CourtesyImplementation/_4_Visitor/Node.cs: -------------------------------------------------------------------------------- 1 | namespace CourtesyImplementation._4_Visitor 2 | { 3 | public interface Node 4 | { 5 | void Accept(NodeVisitor visitor); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/AlarmsNestedFunctions/Class1.cs: -------------------------------------------------------------------------------- 1 | namespace TelecomSystemNestedFunctions 2 | { 3 | public class Class1 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/AlarmsNestedFunctions/Interfaces/DataDestination.cs: -------------------------------------------------------------------------------- 1 | namespace TelecomSystemNestedFunctions.Interfaces 2 | { 3 | public interface DataDestination 4 | { 5 | void Add(string s); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/AlarmsWithNestedFunctions/Alarm.cs: -------------------------------------------------------------------------------- 1 | namespace AlarmsWithNestedFunctions 2 | { 3 | public interface Alarm 4 | { 5 | void Trigger(); 6 | void Disable(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/AlarmsWithNestedFunctions/SwitchCriteria.cs: -------------------------------------------------------------------------------- 1 | namespace AlarmsWithNestedFunctions 2 | { 3 | public interface SwitchCriteria 4 | { 5 | bool IsNotMet(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/CombosDynamicParsingOfNonExistentMethod/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/CommandQuerySeparation/01_ReturningPlainTypes/FileListDestination.cs: -------------------------------------------------------------------------------- 1 | namespace CommandQuerySeparation._01_ReturningPlainTypes 2 | { 3 | public interface FileListDestination 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/CommandQuerySeparation/01_ReturningPlainTypes/FileListWidget.cs: -------------------------------------------------------------------------------- 1 | namespace CommandQuerySeparation._01_ReturningPlainTypes 2 | { 3 | public class FileListWidget : FileListDestination 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/CommandQuerySeparation/02_ReturningAbstraction/FileListDestination.cs: -------------------------------------------------------------------------------- 1 | namespace CommandQuerySeparation._02_ReturningAbstraction 2 | { 3 | public interface FileListDestination 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/CommandQuerySeparation/02_ReturningAbstraction/FileListWidget.cs: -------------------------------------------------------------------------------- 1 | namespace CommandQuerySeparation._02_ReturningAbstraction 2 | { 3 | public class FileListWidget : FileListDestination 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/CommandQuerySeparation/03_PassAbstraction/FileListDestination.cs: -------------------------------------------------------------------------------- 1 | namespace CommandQuerySeparation._03_PassAbstraction 2 | { 3 | public interface FileListDestination 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/CommandQuerySeparation/04_QueryFirst/FileListDestination.cs: -------------------------------------------------------------------------------- 1 | namespace CommandQuerySeparation._04_QueryFirst 2 | { 3 | public interface FileListDestination 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/CommandQuerySeparation/04_QueryFirst/FileListWidget.cs: -------------------------------------------------------------------------------- 1 | namespace CommandQuerySeparation._04_QueryFirst 2 | { 3 | public class FileListWidget : FileListDestination 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/DomainSpecificLanguages/DomainSpecificLanguages/DomainSpecificLanguages/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /CSharp/EventAnomalies/EventAnomalies/ErrorHandling.cs: -------------------------------------------------------------------------------- 1 | namespace EventAnomalies 2 | { 3 | public delegate void ErrorHandling(string message); 4 | } -------------------------------------------------------------------------------- /CSharp/EventAnomalies/EventAnomalies/Example1/ExampleUsage.cs: -------------------------------------------------------------------------------- 1 | namespace EventAnomalies.Example1 2 | { 3 | public class ExampleUsage 4 | { 5 | public void Main() 6 | { 7 | new Nonsense1().Process(123); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /CSharp/EventAnomalies/EventAnomalies/Example2/IErrorService.cs: -------------------------------------------------------------------------------- 1 | namespace EventAnomalies.Example2 2 | { 3 | public interface IErrorService 4 | { 5 | void LogError(string message); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/EventAnomalies/PrivateMethodsAsEventHandlers/RemoveEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace PrivateMethodsAsEventHandlers 2 | { 3 | public class RemoveEventArgs 4 | { 5 | public string Key { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/EventAnomalies/PrivateMethodsAsEventHandlersRegisteredInMethod/RemoveEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace PrivateMethodsAsEventHandlersRegisteredInMethod 2 | { 3 | public class RemoveEventArgs 4 | { 5 | public string Key { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/FakeItTillYouMakeIt/FakeItTillYouMakeIt/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/FakeItTillYouMakeIt/FakeItTillYouMakeIt/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/FrodoEntersTheRoom/FrodoEntersTheRoom/DialogState.cs: -------------------------------------------------------------------------------- 1 | namespace FrodoEntersTheRoom; 2 | 3 | public enum DialogState 4 | { 5 | EnteredTheRoom, 6 | GameOver 7 | } -------------------------------------------------------------------------------- /CSharp/FrodoEntersTheRoom/FrodoEntersTheRoom/IDialog.cs: -------------------------------------------------------------------------------- 1 | namespace FrodoEntersTheRoom; 2 | 3 | public interface IDialog 4 | { 5 | Task OnAttemptToKill(string characterName, IResponse response); 6 | } -------------------------------------------------------------------------------- /CSharp/FrodoEntersTheRoom/FrodoEntersTheRoom/IIntent.cs: -------------------------------------------------------------------------------- 1 | namespace FrodoEntersTheRoom; 2 | 3 | public interface IIntent 4 | { 5 | Task Apply(); 6 | } -------------------------------------------------------------------------------- /CSharp/FrodoEntersTheRoom/FrodoEntersTheRoom/IResponse.cs: -------------------------------------------------------------------------------- 1 | namespace FrodoEntersTheRoom; 2 | 3 | public interface IResponse 4 | { 5 | Task Respond(string text, DialogState dialogState); 6 | } -------------------------------------------------------------------------------- /CSharp/Generics/Generics/Usings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; -------------------------------------------------------------------------------- /CSharp/Http2StreamingExample/Http2Server/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/Http2StreamingExample/Http2Server/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/Kata/DigitsRandori/DigitsRandori/Cell.cs: -------------------------------------------------------------------------------- 1 | namespace DigitsRandori 2 | { 3 | public interface Cell 4 | { 5 | string LightAccordingTo(int[] ints); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/DigitsRandori/DigitsRandori/Display.cs: -------------------------------------------------------------------------------- 1 | namespace DigitsRandori 2 | { 3 | public interface Display 4 | { 5 | void Put(params string[] rows); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/FizzBuzz/FizzBuzz/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CSharp/Kata/FizzBuzz/FizzBuzz/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /CSharp/Kata/FizzBuzzCore/AspectsOfImmutability/AspectsOfImmutability.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CSharp/Kata/FizzBuzzCore/FizzBuzzCore/IRule.cs: -------------------------------------------------------------------------------- 1 | namespace FizzBuzzCore 2 | { 3 | public interface IRule 4 | { 5 | string Translate(int input); 6 | bool AppliesTo(int input); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/Kata/FizzBuzzCore/SOLID.DIP.Persistence/SOLID.DIP.Persistence.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CSharp/Kata/ImageArchivistKata/ImageArchivistKata/IFileSystem.cs: -------------------------------------------------------------------------------- 1 | using AtmaFileSystem; 2 | 3 | namespace ImageArchivistKata 4 | { 5 | public interface IFileSystem 6 | { 7 | void Copy(AbsoluteFilePath source, AbsoluteFilePath destination); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Kata/ImageArchivistKata/ImageArchivistKata/IFileSystemNode.cs: -------------------------------------------------------------------------------- 1 | namespace ImageArchivistKata 2 | { 3 | public interface IFileSystemNode 4 | { 5 | void Accept(IVisitor visitor); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/ImageArchivistKata/ImageArchivistKata/IFolder.cs: -------------------------------------------------------------------------------- 1 | namespace ImageArchivistKata 2 | { 3 | public interface IFolder 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/ImageArchivistKata/ImageArchivistKata/IUnidentifiedFile.cs: -------------------------------------------------------------------------------- 1 | namespace ImageArchivistKata 2 | { 3 | public interface IUnidentifiedFile 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook/KataTrainReservationTddEbook/IBookingProcess.cs: -------------------------------------------------------------------------------- 1 | namespace KataTrainReservationTddEbook; 2 | 3 | public interface IBookingProcess 4 | { 5 | void ApplyTo(ITrain train, IReservationInProgress reservationInProgress); 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook/KataTrainReservationTddEbook/IBookingStep.cs: -------------------------------------------------------------------------------- 1 | namespace KataTrainReservationTddEbook; 2 | 3 | public interface IBookingStep 4 | { 5 | void Invoke(ITrain train, IReservationInProgress reservationInProgress); 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook/KataTrainReservationTddEbook/Percentage.cs: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook/KataTrainReservationTddEbook/ReservationCommand.cs: -------------------------------------------------------------------------------- 1 | namespace KataTrainReservationTddEbook; 2 | 3 | public interface IReservationCommand 4 | { 5 | void Execute(); 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook/KataTrainReservationTddEbook/Response/TicketDto.cs: -------------------------------------------------------------------------------- 1 | namespace KataTrainReservationTddEbook.Response; 2 | 3 | public sealed record TicketDto(string Coach, int SeatNumber); -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook/KataTrainReservationTddEbook/Trains.cs: -------------------------------------------------------------------------------- 1 | namespace KataTrainReservationTddEbook; 2 | 3 | public interface IFleet 4 | { 5 | ITrain RetrieveBy(TrainId trainId); 6 | void Update(ITrain train); 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook/TrainReservationService/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook/TrainReservationServiceSpecification/Usings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook_MoreTellDontAsk/KataTrainReservationTddEbook/Percentage.cs: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook_MoreTellDontAsk/KataTrainReservationTddEbook/ReservationCommand.cs: -------------------------------------------------------------------------------- 1 | namespace KataTrainReservationTddEbook; 2 | 3 | public interface IReservationCommand 4 | { 5 | void Execute(); 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook_MoreTellDontAsk/KataTrainReservationTddEbook/Response/TicketDto.cs: -------------------------------------------------------------------------------- 1 | namespace KataTrainReservationTddEbook.Response; 2 | 3 | public sealed record TicketDto(string Coach, int SeatNumber); -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook_MoreTellDontAsk/KataTrainReservationTddEbook/Trains.cs: -------------------------------------------------------------------------------- 1 | namespace KataTrainReservationTddEbook; 2 | 3 | public interface IFleet 4 | { 5 | ITrain RetrieveBy(TrainId trainId); 6 | void Update(ITrain train); 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook_MoreTellDontAsk/KataTrainReservationTddEbook/Usings.cs: -------------------------------------------------------------------------------- 1 | // Global using directives 2 | 3 | global using FluentAssertions; 4 | global using NSubstitute; 5 | global using Xunit; 6 | global using static TddXt.AnyRoot.Root; -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook_MoreTellDontAsk/TrainReservationService/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/Kata/KataTrainReservationTddEbook_MoreTellDontAsk/TrainReservationServiceSpecification/Usings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; -------------------------------------------------------------------------------- /CSharp/Kata/LedDisplayKata/LED1/BlankSpace.cs: -------------------------------------------------------------------------------- 1 | namespace LED1 2 | { 3 | public class BlankSpace : Displayable 4 | { 5 | public string Evaluate(char[] inputTriggers) 6 | { 7 | return "."; 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /CSharp/Kata/LedDisplayKata/LED1/Displayable.cs: -------------------------------------------------------------------------------- 1 | namespace LED1 2 | { 3 | public interface Displayable 4 | { 5 | string Evaluate(char[] inputTriggers); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd/OutsideInTdd/App/ITodoCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | 3 | namespace OutsideInTdd.App 4 | { 5 | public interface ITodoCommand 6 | { 7 | Task Execute(); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd/OutsideInTdd/App/TodoNoteDto.cs: -------------------------------------------------------------------------------- 1 | namespace OutsideInTdd.App 2 | { 3 | public record TodoNoteDto(string Title, string Content){ } 4 | } -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/ApplicationLogic/Ports/ITodoAppCommand.cs: -------------------------------------------------------------------------------- 1 | namespace ApplicationLogic.Ports; 2 | 3 | public interface ITodoAppCommand 4 | { 5 | Task Execute(CancellationToken cancellationToken); 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/ApplicationLogic/Ports/NewTodoNoteDefinitionDto.cs: -------------------------------------------------------------------------------- 1 | namespace ApplicationLogic.Ports; 2 | 3 | public record NewTodoNoteDefinitionDto(string Title, string Content); -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/ApplicationLogic/Ports/TodoNoteDto.cs: -------------------------------------------------------------------------------- 1 | namespace ApplicationLogic.Ports; 2 | 3 | public record TodoNoteDto(string Title, string Content, Guid Id); -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/ApplicationLogic/Ports/TodoNoteMetadataDto.cs: -------------------------------------------------------------------------------- 1 | namespace ApplicationLogic.Ports; 2 | 3 | public record TodoNoteMetadataDto(Guid Id); 4 | -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/ApplicationLogicTests/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; 2 | global using static TddXt.AnyRoot.Root; -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/TodoApp1/Database/DatabaseOptions.cs: -------------------------------------------------------------------------------- 1 | namespace TodoApp1.Database; 2 | 3 | public class DatabaseOptions 4 | { 5 | public string Path { get; set; } //bug some validation here 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/TodoApp1/Endpoints/IEndpoint.cs: -------------------------------------------------------------------------------- 1 | namespace TodoApp1.Endpoints; 2 | 3 | public interface IEndpoint 4 | { 5 | Task Handle(HttpContext context); 6 | } -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/TodoApp1/Endpoints/IEndpointsRoot.cs: -------------------------------------------------------------------------------- 1 | namespace TodoApp1.Endpoints; 2 | 3 | public interface IEndpointsRoot 4 | { 5 | IEndpoint AddTodoEndpoint { get; } 6 | IEndpoint RetrieveTodoNoteEndpoint { get; } 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/TodoApp1/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/TodoApp1Tests/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; 2 | global using static TddXt.AnyRoot.Root; -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/TodoApp1Tests/TestDtos/NewTodoNoteDefinitionTestDto.cs: -------------------------------------------------------------------------------- 1 | namespace TodoApp1Tests.TestDtos; 2 | 3 | public record NewTodoNoteDefinitionTestDto(string Title, string Content); -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/TodoApp1Tests/TestDtos/TodoNoteMetadataTestDto.cs: -------------------------------------------------------------------------------- 1 | namespace TodoApp1Tests.TestDtos; 2 | 3 | public record TodoNoteMetadataTestDto(Guid Id); -------------------------------------------------------------------------------- /CSharp/Kata/OutsideInTdd2/TodoApp1/TodoApp1Tests/TestDtos/TodoNoteTestDto.cs: -------------------------------------------------------------------------------- 1 | namespace TodoApp1Tests.TestDtos; 2 | 3 | public record TodoNoteTestDto(string Title, string Content, Guid Id); -------------------------------------------------------------------------------- /CSharp/Kata/PloehKata/PloehKata/Adapters/IConnectionInProgressFactory.cs: -------------------------------------------------------------------------------- 1 | namespace PloehKata.Adapters 2 | { 3 | public interface IConnectionInProgressFactory 4 | { 5 | IActionResultBasedConnectionInProgress CreateConnectionInProgress(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/PloehKata/PloehKata/Adapters/NoResultException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace PloehKata.Adapters 4 | { 5 | public class NoResultException : Exception 6 | {} 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/PloehKata/PloehKata/Logic/IConnectorDestination.cs: -------------------------------------------------------------------------------- 1 | using PloehKata.Ports; 2 | 3 | namespace PloehKata.Logic 4 | { 5 | public interface IConnectorDestination 6 | { 7 | void Save(UserDto userDto); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Kata/PloehKata/PloehKata/Logic/IExistingConnector.cs: -------------------------------------------------------------------------------- 1 | using PloehKata.Ports; 2 | 3 | namespace PloehKata.Logic 4 | { 5 | public interface IExistingConnector 6 | { 7 | void AddConnection(UserDto connecteeDto); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Kata/PloehKata/PloehKata/Logic/IUserLookup.cs: -------------------------------------------------------------------------------- 1 | namespace PloehKata.Logic 2 | { 3 | public interface IUserLookup 4 | { 5 | IConnector LookupConnector(string connectorId); 6 | IConnectee LookupConnectee(string connecteeId); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/Kata/PloehKata/PloehKata/Ports/IUserUseCase.cs: -------------------------------------------------------------------------------- 1 | namespace PloehKata.Ports 2 | { 3 | public interface IUserUseCase 4 | { 5 | void Execute(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/PloehKata/PloehKata/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/Kata/PloehKata/PloehKata/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*" 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/Kata/ValidationsKata/ProductionCode/ProductionCode.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CSharp/Kata/ValidationsKata/ProductionCode/ThirdParty/CrazyStuffAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ProductionCode.ThirdParty 4 | { 5 | public class CrazyStuffAttribute : Attribute 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/Kata/ValidationsKata/ProductionCode/ThirdParty/WeirdRoutingInfoAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ProductionCode.ThirdParty 4 | { 5 | public class WeirdRoutingInfoAttribute : Attribute 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/Kata/VotingSystem/Empty/ApplicationLogic/ApplicationLogic.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CSharp/Kata/VotingSystem/Empty/Bootstrap/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/Kata/VotingSystem/Empty/Bootstrap/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*" 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/Kata/VotingSystem/Solved/ApplicationLogic/ApplicationLogic.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CSharp/Kata/VotingSystem/Solved/ApplicationLogic/Ports/IRegisterUserCommand.cs: -------------------------------------------------------------------------------- 1 | namespace ApplicationLogic.Ports 2 | { 3 | public interface IRegisterUserCommand 4 | { 5 | void Execute(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Kata/VotingSystem/Solved/ApplicationLogic/Ports/IResultBuilder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ApplicationLogic.Ports 4 | { 5 | public interface IResultBuilder 6 | { 7 | void UserAddedSuccessfully(UserDto userDto); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Kata/VotingSystem/Solved/Bootstrap/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/Kata/VotingSystem/Solved/Bootstrap/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*" 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/KeycloakDemo/SecureApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/KeycloakDemo/SecureApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/LanguageExtExamples/LanguageExtExamples/Usings.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/CSharp/LanguageExtExamples/LanguageExtExamples/Usings.cs -------------------------------------------------------------------------------- /CSharp/ModularMonolith/ShopModule/AppLogic/ProductDto.cs: -------------------------------------------------------------------------------- 1 | namespace ShopModule.AppLogic 2 | { 3 | public record ProductDto(int Quantity); 4 | } -------------------------------------------------------------------------------- /CSharp/ModularMonolith/ShopModule/AppLogic/ProductId.cs: -------------------------------------------------------------------------------- 1 | namespace ShopModule.AppLogic 2 | { 3 | public record ProductId(string Value); 4 | } -------------------------------------------------------------------------------- /CSharp/ModularMonolith/WarehouseModule/AppLogic/ICustomerNotifications.cs: -------------------------------------------------------------------------------- 1 | namespace WarehouseModule.AppLogic 2 | { 3 | public interface ICustomerNotifications 4 | { 5 | void NotifyCustomerOfOrderState(OrderDto orderDto); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/ModularMonolith/WarehouseModule/AppLogic/OrderStates.cs: -------------------------------------------------------------------------------- 1 | namespace WarehouseModule.AppLogic 2 | { 3 | public enum OrderStates 4 | { 5 | New 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/ModularMonolith/WarehouseModule/AppLogic/ProductId.cs: -------------------------------------------------------------------------------- 1 | namespace WarehouseModule.AppLogic 2 | { 3 | public record ProductId(string Value); 4 | public record DeliveryAddress(string Value); 5 | public record RecipientEmailAddress(string Value); 6 | } -------------------------------------------------------------------------------- /CSharp/MyBot/BotLogic/EntityDto.cs: -------------------------------------------------------------------------------- 1 | namespace BotLogic 2 | { 3 | public class EntityDto 4 | { 5 | public string Entity { get; set; } 6 | public string Type { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/MyBot/BotLogic/EntityTypes.cs: -------------------------------------------------------------------------------- 1 | namespace BotLogic 2 | { 3 | public static class EntityTypes 4 | { 5 | public const string Word = "Word"; 6 | public const string CharacterName = "CharacterName"; 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/MyBot/BotLogic/IStatesFactory.cs: -------------------------------------------------------------------------------- 1 | using BotLogic.States; 2 | 3 | namespace BotLogic 4 | { 5 | public interface IStatesFactory 6 | { 7 | IState GetState(StateNames stateName); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/MyBot/BotLogic/Roles.cs: -------------------------------------------------------------------------------- 1 | namespace BotLogic 2 | { 3 | public class Roles 4 | { 5 | public const string Narrator = nameof(Narrator); 6 | public const string Aragorn = nameof(Aragorn); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/MyBot/BotLogic/States/StateNames.cs: -------------------------------------------------------------------------------- 1 | namespace BotLogic.States 2 | { 3 | public enum StateNames 4 | { 5 | BeforeGameStarts, 6 | EnterBrightRoomState, 7 | AragornAsksAboutFrodosFianceeName 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/MyBot/MyBot/GameBot/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "botFilePath": "BotConfiguration.bot", 3 | "botFileSecret": "" 4 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothing/EntityTypes.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing; 2 | 3 | internal enum EntityTypes 4 | { 5 | User, 6 | Radio, 7 | Group 8 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothing/GroupCache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing; 2 | 3 | internal class GroupCache : ICache 4 | { 5 | public QueryResult GetBy(string entityId) 6 | { 7 | return new QueryResult(); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothing/ICache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing; 2 | 3 | internal interface ICache 4 | { 5 | QueryResult GetBy(string entityId); 6 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothing/QueryResult.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing; 2 | 3 | internal class QueryResult 4 | { 5 | public void SendToUser() 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothing/RadioCache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing; 2 | 3 | internal class RadioCache : ICache 4 | { 5 | public QueryResult GetBy(string entityId) 6 | { 7 | return null; 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothing/UsersCache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing; 2 | 3 | internal class UsersCache : ICache 4 | { 5 | public QueryResult GetBy(string entityId) 6 | { 7 | return new QueryResult(); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored/EntityTypes.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothingRefactored; 2 | 3 | internal enum EntityTypes 4 | { 5 | User, 6 | Radio, 7 | Group 8 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored/ICache.cs: -------------------------------------------------------------------------------- 1 | using Core.Maybe; 2 | 3 | namespace NullAsNothingRefactored; 4 | 5 | internal interface ICache 6 | { 7 | Maybe GetBy(string entityId); 8 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored/QueryResult.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothingRefactored; 2 | 3 | public class QueryResult 4 | { 5 | public void SendToUser() 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored_NRT/EntityTypes.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothingRefactored_NRT; 2 | 3 | internal enum EntityTypes 4 | { 5 | User, 6 | Radio, 7 | Group 8 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored_NRT/GroupCache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothingRefactored_NRT; 2 | 3 | internal class GroupCache : ICache 4 | { 5 | public QueryResult? GetBy(string entityId) 6 | { 7 | return new QueryResult(); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored_NRT/ICache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothingRefactored_NRT; 2 | 3 | internal interface ICache 4 | { 5 | QueryResult? GetBy(string entityId); 6 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored_NRT/QueryResult.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothingRefactored_NRT; 2 | 3 | public class QueryResult 4 | { 5 | public void SendToUser() 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored_NRT/RadioCache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothingRefactored_NRT; 2 | 3 | internal class RadioCache : ICache 4 | { 5 | public QueryResult? GetBy(string entityId) 6 | { 7 | return null; 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/NullIssues/NullAsNothingRefactored_NRT/UsersCache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothingRefactored_NRT; 2 | 3 | public class UsersCache : ICache 4 | { 5 | public QueryResult? GetBy(string entityId) 6 | { 7 | return new QueryResult(); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_DealingWithNull/DealingWithNull/Exceptions/Connection.cs: -------------------------------------------------------------------------------- 1 | namespace DealingWithNull.Exceptions 2 | { 3 | interface Connection 4 | { 5 | void Send(string helloWorld); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_DealingWithNull/DealingWithNull/NullObject/AuthorizationChange.cs: -------------------------------------------------------------------------------- 1 | namespace DealingWithNull.NullObject 2 | { 3 | public interface AuthorizationChange 4 | { 5 | void MakeTo(AuthorizationStructure authorizationStructure); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_DealingWithNull/DealingWithNull/NullObject/AuthorizationStructure.cs: -------------------------------------------------------------------------------- 1 | namespace DealingWithNull.NullObject 2 | { 3 | public interface AuthorizationStructure 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_DealingWithNull/DealingWithNull/NullObject/ChangeFactory.cs: -------------------------------------------------------------------------------- 1 | namespace DealingWithNull.NullObject 2 | { 3 | public interface ChangeFactory 4 | { 5 | AuthorizationChange CreateOneDescribedBy(ChangeData changeData); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_DealingWithNull/DealingWithNull/NullObject/MyApplicationAuthorizationStructure.cs: -------------------------------------------------------------------------------- 1 | namespace DealingWithNull.NullObject 2 | { 3 | public class MyApplicationAuthorizationStructure : AuthorizationStructure 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_DealingWithNull/DealingWithNull/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_WksNull/NullAsError/NullAsError.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp2.1 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_WksNull/NullAsFlag/NullAsFlag.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp2.1 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_WksNull/NullAsNothing/EntityTypes.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing 2 | { 3 | internal enum EntityTypes 4 | { 5 | User, 6 | Radio, 7 | Group 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_WksNull/NullAsNothing/ICache.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing 2 | { 3 | internal interface ICache 4 | { 5 | QueryResult GetBy(string entityId); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_WksNull/NullAsNothing/NullAsNothing.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp2.1 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CSharp/Null/_deprecated_WksNull/NullAsNothing/QueryResult.cs: -------------------------------------------------------------------------------- 1 | namespace NullAsNothing 2 | { 3 | internal class QueryResult 4 | { 5 | public void SendToUser() 6 | { 7 | 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /CSharp/ParseDoNotValidate/.vs/ParseDoNotValidate/DesignTimeBuild/.dtbcache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/CSharp/ParseDoNotValidate/.vs/ParseDoNotValidate/DesignTimeBuild/.dtbcache -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersHelloWorld - After - WithTests/DataAccess.Ports/IAppLogic.cs: -------------------------------------------------------------------------------- 1 | namespace DataAccess.Ports 2 | { 3 | public interface IAppLogic 4 | { 5 | void HandleAddEmployeeRequest(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersHelloWorld - After - WithTests/DataAccess.Ports/IPersistentStorage.cs: -------------------------------------------------------------------------------- 1 | namespace DataAccess.Ports 2 | { 3 | public interface IPersistentStorage 4 | { 5 | void SaveEmployee(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersHelloWorld - After/DataAccess.Ports/Primary/IAppLogic.cs: -------------------------------------------------------------------------------- 1 | namespace DataAccess.Ports.Primary 2 | { 3 | public interface IAppLogic 4 | { 5 | void HandleAddEmployeeRequest(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersHelloWorld - Before/Database/DatabaseObject.cs: -------------------------------------------------------------------------------- 1 | namespace Database 2 | { 3 | public class DatabaseObject 4 | { 5 | public void SaveEmployee() 6 | { 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersStructure - Minimal/Domain/IAppLogic.cs: -------------------------------------------------------------------------------- 1 | namespace ApplicationLogic 2 | { 3 | public interface IAppLogic 4 | { 5 | void HandleAddEmployeeRequest(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersStructure - Minimal/Domain/IPersistentStorage.cs: -------------------------------------------------------------------------------- 1 | namespace ApplicationLogic 2 | { 3 | public interface IPersistentStorage 4 | { 5 | void SaveEmployee(); 6 | } 7 | 8 | } -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersStructure - Scaled Up/Persistence.Ports/IPersistentStorage.cs: -------------------------------------------------------------------------------- 1 | namespace Persistence.Ports 2 | { 3 | public interface IPersistentStorage 4 | { 5 | void SaveEmployee(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersStructure - Scaled Up/View.Ports/IAppLogic.cs: -------------------------------------------------------------------------------- 1 | namespace View.Ports 2 | { 3 | public interface IAppLogic 4 | { 5 | void HandleAddEmployeeRequest(); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/PortsAndAdapters/PortsAndAdaptersStructure - Scaled Up/View.Ports/View.Ports.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CSharp/ReturningResultsFromCommands/ReturningResultsFromCommands/AddTodoError.cs: -------------------------------------------------------------------------------- 1 | namespace ReturningResultsFromCommands; 2 | 3 | public record AddTodoError(ErrorCode ErrorCode, string Message); -------------------------------------------------------------------------------- /CSharp/ReturningResultsFromCommands/ReturningResultsFromCommands/AddTodoSuccess.cs: -------------------------------------------------------------------------------- 1 | namespace ReturningResultsFromCommands; 2 | 3 | public record AddTodoSuccess(int Id); -------------------------------------------------------------------------------- /CSharp/ReturningResultsFromCommands/ReturningResultsFromCommands/ApiException.cs: -------------------------------------------------------------------------------- 1 | namespace ReturningResultsFromCommands; 2 | 3 | public class ApiException : Exception 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/ReturningResultsFromCommands/ReturningResultsFromCommands/ErrorCode.cs: -------------------------------------------------------------------------------- 1 | namespace ReturningResultsFromCommands; 2 | 3 | public enum ErrorCode 4 | { 5 | ApiCallFailed, 6 | ValidationFailed 7 | } -------------------------------------------------------------------------------- /CSharp/ReturningResultsFromCommands/ReturningResultsFromCommands/IValidation.cs: -------------------------------------------------------------------------------- 1 | namespace ReturningResultsFromCommands; 2 | 3 | public interface IValidation 4 | { 5 | bool IsSuccessfulFor(Todo todo); 6 | } -------------------------------------------------------------------------------- /CSharp/ReturningResultsFromCommands/ReturningResultsFromCommands/Todo.cs: -------------------------------------------------------------------------------- 1 | namespace ReturningResultsFromCommands; 2 | 3 | public readonly record struct Todo(string Text); -------------------------------------------------------------------------------- /CSharp/ReturningResultsFromCommands/ReturningResultsFromCommands/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/Dto/AssetKind.cs: -------------------------------------------------------------------------------- 1 | namespace SubscriptionApi.Dto 2 | { 3 | public enum AssetKind 4 | { 5 | User, 6 | OrganizationalUnit, 7 | Hardware 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/Dto/AssetRequestDto.cs: -------------------------------------------------------------------------------- 1 | namespace SubscriptionApi.Dto 2 | { 3 | public class AssetRequestDto 4 | { 5 | public AssetKind Kind { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/Dto/StartSubscriptionResponseDto.cs: -------------------------------------------------------------------------------- 1 | namespace SubscriptionApi.Dto 2 | { 3 | public class StartSubscriptionResponseDto 4 | { 5 | public bool Failure { get; set; } 6 | public string[] Errors { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/Dto/StopSubscriptionResponseDto.cs: -------------------------------------------------------------------------------- 1 | namespace SubscriptionApi.Dto 2 | { 3 | public class StopSubscriptionResponseDto 4 | { 5 | public bool Failure { get; set; } 6 | public string[] Errors { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/Exceptions/FatalErrorOccuredDuringAuthorizationException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SubscriptionApi.Exceptions 4 | { 5 | public class FatalErrorOccuredDuringAuthorizationException : Exception 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/Exceptions/FatalErrorOccuredDuringQueryResolutionException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SubscriptionApi.Exceptions 4 | { 5 | public class FatalErrorOccuredDuringQueryResolutionException : Exception 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/Exceptions/FatalErrorOccuredDuringValidationsException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SubscriptionApi.Exceptions 4 | { 5 | public class FatalErrorOccuredDuringValidationsException : Exception 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/Queries/QueryResolutionEvents.cs: -------------------------------------------------------------------------------- 1 | namespace SubscriptionApi.Queries 2 | { 3 | public interface QueryResolutionEvents 4 | { 5 | void NoResolutionResultsFor(string name); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/ResponseBuilders/SubscriptionStopEvents.cs: -------------------------------------------------------------------------------- 1 | namespace SubscriptionApi.ResponseBuilders 2 | { 3 | public interface SubscriptionStopEvents 4 | { 5 | void NoSubscriptionToStopWithId(string subscriptionId); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/ResponseBuilders/SubscriptionValidationResults.cs: -------------------------------------------------------------------------------- 1 | namespace SubscriptionApi.ResponseBuilders 2 | { 3 | public interface SubscriptionValidationResults 4 | { 5 | void NotValid(string dataName); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/SubscriptionApi/SubscriptionApi/ResponseBuilders/UserAuthorizationEvents.cs: -------------------------------------------------------------------------------- 1 | namespace SubscriptionApi.ResponseBuilders 2 | { 3 | public interface UserAuthorizationEvents 4 | { 5 | void UserNotAuthorized(string userName); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/AlarmsObjectOriented/Interfaces/Alarm.cs: -------------------------------------------------------------------------------- 1 | namespace AlarmsObjectOriented.Interfaces 2 | { 3 | public interface Alarm 4 | { 5 | void Trigger(); 6 | void Disable(); 7 | void Dump(); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/AlarmsObjectOriented/Interfaces/TimeCriterion.cs: -------------------------------------------------------------------------------- 1 | namespace AlarmsObjectOriented.Interfaces 2 | { 3 | public interface TimeCriterion 4 | { 5 | bool IsSatisfied(); 6 | void Output(); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/AlarmsProcedural/Enums/AlarmTypes.cs: -------------------------------------------------------------------------------- 1 | namespace AlarmsProcedural.Enums 2 | { 3 | public enum AlarmTypes 4 | { 5 | Loud, 6 | Silent, 7 | Composite, 8 | Timed 9 | } 10 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/AlarmsProcedural/Enums/TimeCriteria.cs: -------------------------------------------------------------------------------- 1 | namespace AlarmsProcedural.Enums 2 | { 3 | public enum TimeCriteria 4 | { 5 | OnWeekend, 6 | OutsideWeekend, 7 | AtNight, 8 | DuringDay 9 | } 10 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/PayrollSystem/PayGrade.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace PayrollSystem 3 | { 4 | public class PayGrade 5 | { 6 | 7 | public decimal Maximum 8 | { 9 | get { return new decimal(33.33); } 10 | } 11 | } 12 | 13 | 14 | 15 | } 16 | 17 | -------------------------------------------------------------------------------- /CSharp/TellDontAsk/SessionsRefactored/Destinations/GuiOwnersList.cs: -------------------------------------------------------------------------------- 1 | namespace SessionsRefactored.Destinations 2 | { 3 | public interface GuiOwnersList 4 | { 5 | void AddVisible(string owner); 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/SessionsRefactored/Session.cs: -------------------------------------------------------------------------------- 1 | namespace SessionsRefactored 2 | { 3 | public interface Session 4 | { 5 | void DumpTo(DumpDestination destination); 6 | void DoSomething(); //this is just any other logic 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/SessionsRefactored/Sessions.cs: -------------------------------------------------------------------------------- 1 | namespace SessionsRefactored 2 | { 3 | public interface Sessions 4 | { 5 | void Add(Session session); 6 | void DumpTo(DumpDestination destination); 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/Validations/Config.cs: -------------------------------------------------------------------------------- 1 | namespace Validations 2 | { 3 | public interface Config 4 | { 5 | decimal MaxDuration { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/Validations/InMemoryConfig.cs: -------------------------------------------------------------------------------- 1 | namespace Validations 2 | { 3 | public class InMemoryConfig : Config 4 | { 5 | public decimal MaxDuration { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/Validations/RequestValidation.cs: -------------------------------------------------------------------------------- 1 | using Validations.ThirdParty; 2 | 3 | namespace Validations 4 | { 5 | interface RequestValidation 6 | { 7 | void PerformFor(SubscriptionStartRequest request); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/TellDontAsk/Validations/RequestValidationException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Validations 4 | { 5 | public class RequestValidationException : Exception 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /CSharp/UnitTestRunnerPackageExercise/ExampleTests/Class2.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleTests; 2 | 3 | public class Class2 4 | { 5 | public void Test3() 6 | { 7 | 8 | } 9 | 10 | public void Test4() 11 | { 12 | throw new Exception("lol"); 13 | } 14 | } -------------------------------------------------------------------------------- /CSharp/UnitTestRunnerPackageExercise/ExampleTests/ICalculator.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleTests; 2 | 3 | public interface ICalculator 4 | { 5 | int Add(int x, int y); 6 | } -------------------------------------------------------------------------------- /CSharp/UnitTestRunnerPackageExercise/UnitTestRunnerPackageExercise/IResultsTextFormat.cs: -------------------------------------------------------------------------------- 1 | namespace UnitTestRunnerPackageExercise; 2 | 3 | public interface IResultsTextFormat 4 | { 5 | string ApplyTo(TestSetDto dto); 6 | } -------------------------------------------------------------------------------- /CSharp/UnitTestRunnerPackageExercise/UnitTestRunnerPackageExercise/ITestAssemblySource.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace UnitTestRunnerPackageExercise; 4 | 5 | public interface ITestAssemblySource 6 | { 7 | Assembly GetDll(); 8 | } -------------------------------------------------------------------------------- /CSharp/UnitTestRunnerPackageExercise/UnitTestRunnerPackageExercise/ITestResultsDestination.cs: -------------------------------------------------------------------------------- 1 | namespace UnitTestRunnerPackageExercise; 2 | 3 | public interface ITestResultsDestination 4 | { 5 | void Send(string entries); 6 | } -------------------------------------------------------------------------------- /CSharp/UnitTestRunnerPackageExercise/UnitTestRunnerPackageExercise/TestSetDto.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Immutable; 2 | 3 | namespace UnitTestRunnerPackageExercise; 4 | 5 | public record TestSetDto(ImmutableArray Suites); -------------------------------------------------------------------------------- /CSharp/UnitTestRunnerPackageExercise/UnitTestRunnerPackageExercise/TestStatus.cs: -------------------------------------------------------------------------------- 1 | namespace UnitTestRunnerPackageExercise; 2 | 3 | public enum TestStatus 4 | { 5 | Started, 6 | Passed, 7 | Failed 8 | } -------------------------------------------------------------------------------- /CSharp/UnitTestRunnerPackageExercise/UnitTestRunnerPackageExercise/TestSuiteDto.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Immutable; 2 | 3 | namespace UnitTestRunnerPackageExercise; 4 | 5 | public record TestSuiteDto(string SuiteName, ImmutableArray Tests); -------------------------------------------------------------------------------- /CSharp/ValueObjects/ValueObjects/Class1.cs: -------------------------------------------------------------------------------- 1 | namespace ValueObjects 2 | { 3 | public class Class1 4 | { 5 | 6 | } 7 | 8 | public interface IReport 9 | { 10 | void Error(string name, decimal price); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/BadResolutionException.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public class BadResolutionException(QueryTypes queryType) : Exception 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/DeviceId.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public record DeviceId(string Value) 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/GroupId.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public record GroupId(string Value) 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/IMetrics.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public interface IMetrics 4 | { 5 | Task ReportException(Exception exception); 6 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/IWeatherAppCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public interface IWeatherAppCommand 4 | { 5 | Task Execute(CancellationToken token); 6 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/NetworkName.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public class NetworkName(string Value) 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/NetworkParametersDto.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public record NetworkParametersDto(string NetworkName, string NetworkType) 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/NetworkType.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public record NetworkType(string Value) 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/QueryTypes.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public enum QueryTypes 4 | { 5 | NetworkParameters, 6 | DeviceIds, 7 | GroupId 8 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/SubscriptionAlreadyExistsException.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public class SubscriptionAlreadyExistsException : Exception 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/Application/SubscriptionCreatedDto.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public record SubscriptionCreatedDto(Guid SubscriptionId) 4 | { 5 | } -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/WeatherAppLogicSeparation/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/WeatherAppLogicSeparation/WeatherAppLogicSeparation/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/XUnitFixtures/.vs/XUnitFixtures/DesignTimeBuild/.dtbcache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/CSharp/XUnitFixtures/.vs/XUnitFixtures/DesignTimeBuild/.dtbcache -------------------------------------------------------------------------------- /CSharp/XUnitTestPatterns/XUnitTestPatterns/_08_FixtureManagement/AddressStatus.cs: -------------------------------------------------------------------------------- 1 | namespace XUnitTestPatterns._08_FixtureManagement 2 | { 3 | public enum AddressStatus 4 | { 5 | Active, Inactive 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /CSharp/XUnitTestPatterns/XUnitTestPatterns/_08_FixtureManagement/InvoiceLine.cs: -------------------------------------------------------------------------------- 1 | namespace XUnitTestPatterns._08_FixtureManagement 2 | { 3 | public class InvoiceLine 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /CSharp/XUnitTestPatterns/XUnitTestPatterns/_08_FixtureManagement/InvoiceStatus.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace XUnitTestPatterns._08_FixtureManagement 3 | { 4 | public enum InvoiceStatus 5 | { 6 | New 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /CSharp/XUnitTestPatterns/XUnitTestPatterns/_08_FixtureManagement/Money.cs: -------------------------------------------------------------------------------- 1 | namespace XUnitTestPatterns._08_FixtureManagement 2 | { 3 | public class Money 4 | { 5 | public Money(string s, string usd) 6 | { 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Cpp/Cpp11/Cpp11.sdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Cpp/Cpp11/Cpp11.sdf -------------------------------------------------------------------------------- /Cpp/Cpp11/_01_SmallImprovements/ClassDiagram.cd: -------------------------------------------------------------------------------- 1 |  2 | -------------------------------------------------------------------------------- /Cpp/Cpp11/____Cpp11/Cpp11.cpp: -------------------------------------------------------------------------------- 1 | // Cpp11.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | 7 | int main() 8 | { 9 | return 0; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /Java/AlarmsObjectOriented/src/main/java/interfaces/Alarm.java: -------------------------------------------------------------------------------- 1 | package interfaces; 2 | 3 | public interface Alarm { 4 | void trigger(); 5 | 6 | void disable(); 7 | 8 | void dump(); 9 | } 10 | -------------------------------------------------------------------------------- /Java/AlarmsObjectOriented/src/main/java/interfaces/TimeCriteria.java: -------------------------------------------------------------------------------- 1 | package interfaces; 2 | 3 | public interface TimeCriteria 4 | { 5 | boolean isSatisfied(); 6 | void output(); 7 | } 8 | -------------------------------------------------------------------------------- /Java/AlarmsObjectOriented/src/test/java/Spec.java: -------------------------------------------------------------------------------- 1 | import org.junit.Test; 2 | 3 | public class Spec { 4 | @Test 5 | public void shouldXxxxxxxxxxxx() 6 | { 7 | CompositionRoot.main(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Java/AlarmsProcedural/.gradle/7.0/dependencies-accessors/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/AlarmsProcedural/.gradle/7.0/dependencies-accessors/gc.properties -------------------------------------------------------------------------------- /Java/AlarmsProcedural/.gradle/7.0/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/AlarmsProcedural/.gradle/7.0/gc.properties -------------------------------------------------------------------------------- /Java/AlarmsProcedural/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Tue Jun 22 16:02:11 CEST 2021 2 | gradle.version=7.0 3 | -------------------------------------------------------------------------------- /Java/AlarmsProcedural/.gradle/configuration-cache/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/AlarmsProcedural/.gradle/configuration-cache/gc.properties -------------------------------------------------------------------------------- /Java/AlarmsProcedural/.gradle/vcs-1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/AlarmsProcedural/.gradle/vcs-1/gc.properties -------------------------------------------------------------------------------- /Java/AlarmsProcedural/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /Java/AlarmsProcedural/build/tmp/compileTestJava/source-classes-mapping.txt: -------------------------------------------------------------------------------- 1 | CharacterizationTests.java 2 | CharacterizationTests 3 | -------------------------------------------------------------------------------- /Java/AlarmsProcedural/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'AlarmsProcedural' 2 | 3 | -------------------------------------------------------------------------------- /Java/AlarmsProcedural/src/main/java/Enums/AlarmTypes.java: -------------------------------------------------------------------------------- 1 | package Enums; 2 | 3 | public enum AlarmTypes { 4 | Loud, 5 | Silent, 6 | Composite, 7 | Timed 8 | } 9 | -------------------------------------------------------------------------------- /Java/AlarmsProcedural/src/main/java/Enums/TimeCriteria.java: -------------------------------------------------------------------------------- 1 | package Enums; 2 | 3 | public enum TimeCriteria { 4 | OnWeekend, 5 | OutsideWeekend, 6 | AtNight, 7 | DuringDay 8 | } 9 | -------------------------------------------------------------------------------- /Java/AlarmsProcedural/test/Spec.java: -------------------------------------------------------------------------------- 1 | import Main.CompositionRoot; 2 | import org.junit.Test; 3 | 4 | public class Spec { 5 | 6 | @Test 7 | public void shouldXXXXXXXXXXXX() { 8 | CompositionRoot.main(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Java/Migration/unit-tests-csharp/unit-tests-csharp/P04NSubstitute/Ex010203ProductionCode/Data.cs: -------------------------------------------------------------------------------- 1 | namespace unit_tests_csharp.P04NSubstitute.Ex010203ProductionCode 2 | { 3 | public class Data 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /Java/Migration/unit-tests-csharp/unit-tests-csharp/P04NSubstitute/Ex010203ProductionCode/IDataSource.cs: -------------------------------------------------------------------------------- 1 | namespace unit_tests_csharp.P04NSubstitute.Ex010203ProductionCode 2 | { 3 | public interface IDataSource 4 | { 5 | Data RetrieveData(); 6 | } 7 | } -------------------------------------------------------------------------------- /Java/Migration/unit-tests-csharp/unit-tests-csharp/P04NSubstitute/Ex05ProductionCode/ICommand.cs: -------------------------------------------------------------------------------- 1 | namespace unit_tests_csharp.P04NSubstitute.Ex05ProductionCode 2 | { 3 | public interface ICommand 4 | { 5 | void ExecuteOn(ISharedCore core); 6 | } 7 | } -------------------------------------------------------------------------------- /Java/Migration/unit-tests-java/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/Migration/unit-tests-java/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Java/Migration/unit-tests-java/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'unit-tests-java' 2 | 3 | -------------------------------------------------------------------------------- /Java/Migration/unit-tests-java/src/main/java/p03_any/MyClass.java: -------------------------------------------------------------------------------- 1 | package p03_any; 2 | 3 | public class MyClass { 4 | public T instance; 5 | 6 | public MyClass(T instance) { 7 | this.instance = instance; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Java/Migration/unit-tests-java/src/main/java/p04_mockito/Command.java: -------------------------------------------------------------------------------- 1 | package p04_mockito; 2 | 3 | public interface Command { 4 | void ExecuteOn(SharedCore core); 5 | } 6 | -------------------------------------------------------------------------------- /Java/Migration/unit-tests-java/src/main/java/p04_mockito/DataDestination.java: -------------------------------------------------------------------------------- 1 | package p04_mockito; 2 | 3 | public interface DataDestination { 4 | void save(Data data); 5 | } 6 | -------------------------------------------------------------------------------- /Java/Migration/unit-tests-java/src/main/java/p04_mockito/DataSource.java: -------------------------------------------------------------------------------- 1 | package p04_mockito; 2 | 3 | public interface DataSource { 4 | Data retrieveData(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/Migration/unit-tests-java/src/main/java/p04_mockito/NullCommand.java: -------------------------------------------------------------------------------- 1 | package p04_mockito; 2 | 3 | public class NullCommand implements Command { 4 | public void ExecuteOn(SharedCore core) { 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Java/Migration/unit-tests-java/src/main/java/p04_mockito/SharedCore.java: -------------------------------------------------------------------------------- 1 | package p04_mockito; 2 | 3 | public interface SharedCore { 4 | void addResource(int x); 5 | void deleteResource(int x); 6 | void updateResource(int x); 7 | } 8 | -------------------------------------------------------------------------------- /Java/PayrollSystem/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | 3 | version = '1.0' 4 | 5 | repositories { 6 | mavenCentral() 7 | } 8 | 9 | dependencies { 10 | testCompile group: 'junit', name: 'junit', version: '4.11' 11 | } -------------------------------------------------------------------------------- /Java/PayrollSystem/src/main/java/PayGrade.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by astral on 24.03.15. 3 | */ 4 | public class PayGrade { 5 | 6 | public int getMaximum() { 7 | return 45; 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-modules/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Nov 27 09:37:20 CET 2017 2 | gradle.version=3.5-rc-2 3 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-packages/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Nov 27 09:40:26 CET 2017 2 | gradle.version=3.5-rc-2 3 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-packages/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'ports-adapters-packages' 2 | 3 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-packages/src/main/java/com/examples/inbound/ports/InboundMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.examples.inbound.ports; 2 | 3 | public interface InboundMessageHandler { 4 | void newMessage(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-packages/src/main/java/com/examples/outbound/ports/OutputChannel.java: -------------------------------------------------------------------------------- 1 | package com.examples.outbound.ports; 2 | 3 | public interface OutputChannel { 4 | void sendNotification(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-packages/src/main/java/com/examples/storage/ports/MessageRepository.java: -------------------------------------------------------------------------------- 1 | package com.examples.storage.ports; 2 | 3 | public interface MessageRepository { 4 | public void store(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-sourcesets/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'ports-adapters-sourcesets' 2 | 3 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-sourcesets/src/inbound/inboundPorts/java/handlers/InboundMessageHandler.java: -------------------------------------------------------------------------------- 1 | package handlers; 2 | 3 | public interface InboundMessageHandler { 4 | void newMessage(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-sourcesets/src/outbound/outboundPorts/java/channels/OutputChannel.java: -------------------------------------------------------------------------------- 1 | package channels; 2 | 3 | public interface OutputChannel { 4 | void sendNotification(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-adapters-sourcesets/src/storage/storagePorts/java/repositories/MessageRepository.java: -------------------------------------------------------------------------------- 1 | package repositories; 2 | 3 | public interface MessageRepository { 4 | public void store(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-and-adapters-after/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Nov 27 09:56:52 CET 2017 2 | gradle.version=3.5-rc-2 3 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-and-adapters-after/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'com.example.ports-and-adapters-after' 2 | rootProject.name = 'ports-and-adapters-after' 3 | rootProject.name = 'ports-and-adapters-after' 4 | 5 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-and-adapters-after/src/main/java/com/example/ports/dataaccess/Repository.java: -------------------------------------------------------------------------------- 1 | package com.example.ports.dataaccess; 2 | 3 | public interface Repository { 4 | void saveEmployee(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-and-adapters-after/src/main/java/com/example/ports/views/Application.java: -------------------------------------------------------------------------------- 1 | package com.example.ports.views; 2 | 3 | public interface Application { 4 | void handleAddEmployeeRequest(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-and-adapters-before/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Nov 27 10:08:57 CET 2017 2 | gradle.version=3.5-rc-2 3 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-and-adapters-before/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'ports-and-adapters-before' 2 | 3 | -------------------------------------------------------------------------------- /Java/PortsAdapters/ports-and-adapters-before/src/main/java/com/example/database/DatabaseObject.java: -------------------------------------------------------------------------------- 1 | package com.example.database; 2 | 3 | public class DatabaseObject { 4 | public void saveEmployee() { 5 | 6 | } 7 | 8 | } 9 | -------------------------------------------------------------------------------- /Java/alarms-randori/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/alarms-randori/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Java/alarms-randori/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'alarms-randori' 2 | 3 | -------------------------------------------------------------------------------- /Java/alarms-randori/src/main/java/Enums/AlarmTypes.java: -------------------------------------------------------------------------------- 1 | package Enums; 2 | 3 | public enum AlarmTypes { 4 | Loud, 5 | Silent, 6 | Composite, 7 | Timed 8 | } 9 | -------------------------------------------------------------------------------- /Java/alarms-randori/src/main/java/Enums/TimeCriteria.java: -------------------------------------------------------------------------------- 1 | package Enums; 2 | 3 | public enum TimeCriteria { 4 | OnWeekend, 5 | OutsideWeekend, 6 | AtNight, 7 | DuringDay 8 | } 9 | -------------------------------------------------------------------------------- /Java/atma-paths/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'atma-paths' 2 | 3 | -------------------------------------------------------------------------------- /Java/automated-refactorings/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'automated-refactorings' 2 | 3 | -------------------------------------------------------------------------------- /Java/automated-refactorings/src/main/java/_02_MethodsAndParameters/FriendlyMessage.java: -------------------------------------------------------------------------------- 1 | package _02_MethodsAndParameters; 2 | 3 | public class FriendlyMessage { 4 | public String From; 5 | public String To; 6 | public String Content; 7 | } 8 | -------------------------------------------------------------------------------- /Java/automated-refactorings/src/main/java/_02_MethodsAndParameters/MessageDestination.java: -------------------------------------------------------------------------------- 1 | package _02_MethodsAndParameters; 2 | 3 | public interface MessageDestination { 4 | void send(String s); 5 | } 6 | -------------------------------------------------------------------------------- /Java/automated-refactorings/src/main/java/_03_LessUsed/MySystem.java: -------------------------------------------------------------------------------- 1 | package _03_LessUsed; 2 | 3 | public interface MySystem { 4 | } 5 | -------------------------------------------------------------------------------- /Java/automated-refactorings/src/main/java/_03_LessUsed/Object1.java: -------------------------------------------------------------------------------- 1 | package _03_LessUsed; 2 | 3 | public class Object1 { 4 | public void doSomething() { 5 | final var message = new MyMessage(1, 2); 6 | message.send(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Java/automated-refactorings/src/main/java/_03_LessUsed/Object2.java: -------------------------------------------------------------------------------- 1 | package _03_LessUsed; 2 | 3 | public class Object2 { 4 | public void doSomething() { 5 | final var message = new MyMessage(7, 8); 6 | message.send(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Java/automated-refactorings/src/main/java/_04_DealingWithSingleton/CompositionRoot.java: -------------------------------------------------------------------------------- 1 | package _04_DealingWithSingleton; 2 | 3 | public class CompositionRoot { 4 | public void Main() { 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Java/book-metadata-parser/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/book-metadata-parser/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Java/book-metadata-parser/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'book-metadata-parser' 2 | 3 | -------------------------------------------------------------------------------- /Java/book-metadata-parser/src/main/java/donotmodify/Weight.java: -------------------------------------------------------------------------------- 1 | package donotmodify; 2 | 3 | //ignore for now 4 | public class Weight { 5 | public double amount; 6 | public String unit; //e.g. ounces 7 | } 8 | -------------------------------------------------------------------------------- /Java/day_night_randori/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'day_night_randori' 2 | 3 | -------------------------------------------------------------------------------- /Java/dependency-injection/_00_why-composition/src/main/java/README.txt: -------------------------------------------------------------------------------- 1 | start refactoring from the LoudAlarm class. -------------------------------------------------------------------------------- /Java/dependency-injection/_00_why-composition/src/main/java/Sirens.java: -------------------------------------------------------------------------------- 1 | public class Sirens { 2 | public void play() { 3 | 4 | } 5 | 6 | public void stop() { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Java/dependency-injection/_01_changing-behavior-through-composition/.gradle/2.5/taskArtifacts/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Nov 28 20:43:47 CET 2016 2 | -------------------------------------------------------------------------------- /Java/dependency-injection/_01_changing-behavior-through-composition/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'changing-behavior-through-composition' 2 | 3 | -------------------------------------------------------------------------------- /Java/dependency-injection/_02_control-freak/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'control-freak' 2 | 3 | -------------------------------------------------------------------------------- /Java/dependency-injection/_03_control-freak-refactored/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'control-freak-refactored' 2 | 3 | -------------------------------------------------------------------------------- /Java/dependency-injection/_04_bastard-injection/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'bastard-injection' 2 | 3 | -------------------------------------------------------------------------------- /Java/dependency-injection/_05_service-locator/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'service-locator' 2 | 3 | -------------------------------------------------------------------------------- /Java/dependency-injection/_05_service-locator/src/main/java/ServiceLocatorAntipattern/Inbound/InputSocket.java: -------------------------------------------------------------------------------- 1 | package ServiceLocatorAntipattern.Inbound; 2 | 3 | public interface InputSocket { 4 | boolean receive(byte[] frameData); 5 | } 6 | -------------------------------------------------------------------------------- /Java/dependency-injection/_05_service-locator/src/main/java/ServiceLocatorAntipattern/Interfaces/DataDestination.java: -------------------------------------------------------------------------------- 1 | package ServiceLocatorAntipattern.Interfaces; 2 | 3 | public interface DataDestination { 4 | void add(String content); 5 | } 6 | -------------------------------------------------------------------------------- /Java/dependency-injection/_05_service-locator/src/main/java/ServiceLocatorAntipattern/Outbound/Marshalling.java: -------------------------------------------------------------------------------- 1 | package ServiceLocatorAntipattern.Outbound; 2 | 3 | public interface Marshalling { 4 | String of(String arg); 5 | } 6 | -------------------------------------------------------------------------------- /Java/dependency-injection/_05_service-locator/src/main/java/ServiceLocatorAntipattern/Services/Authorization.java: -------------------------------------------------------------------------------- 1 | package ServiceLocatorAntipattern.Services; 2 | 3 | public interface Authorization { 4 | } 5 | -------------------------------------------------------------------------------- /Java/dependency-injection/_06_conforming-container-antipattern/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'conforming-container-antipattern' 2 | 3 | -------------------------------------------------------------------------------- /Java/dependency-injection/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/dependency-injection/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Java/digits-randori/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/digits-randori/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Java/digits-randori/src/main/java/thirdparty/DigitalDisplay.java: -------------------------------------------------------------------------------- 1 | package thirdparty; 2 | 3 | public interface DigitalDisplay { 4 | void put(String... rows); 5 | } 6 | -------------------------------------------------------------------------------- /Java/dropwizard-hello/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dropwizard-hello' 2 | 3 | -------------------------------------------------------------------------------- /Java/dropwizard-hello/src/main/resources/hello-world.yml: -------------------------------------------------------------------------------- 1 | template: Hello, %s! 2 | defaultName: Stranger 3 | -------------------------------------------------------------------------------- /Java/empty-pacman-randori2/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Aug 06 22:38:03 CEST 2018 2 | gradle.version=4.8 3 | -------------------------------------------------------------------------------- /Java/empty-pacman-randori2/.gradle/vcsWorkingDirs/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/empty-pacman-randori2/.gradle/vcsWorkingDirs/gc.properties -------------------------------------------------------------------------------- /Java/empty-pacman-randori2/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'pacman-randori2' 2 | 3 | -------------------------------------------------------------------------------- /Java/empty-pacman-randori2/src/main/java/Main.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by astral on 11.11.2015. 3 | */ 4 | public class Main { 5 | 6 | public void Main() { 7 | 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Java/empty-pacman-randori2/src/main/java/thirdparty/InGameTimer.java: -------------------------------------------------------------------------------- 1 | package thirdparty; 2 | 3 | /** 4 | * Created by astral on 11.11.2015. 5 | */ 6 | public interface InGameTimer { 7 | void start(); 8 | } 9 | -------------------------------------------------------------------------------- /Java/empty-pacman-randori2/src/main/java/thirdparty/Location.java: -------------------------------------------------------------------------------- 1 | package thirdparty; 2 | 3 | /** 4 | * Created by astral on 11.11.2015. 5 | */ 6 | public interface Location { 7 | void moveTowards(); 8 | } 9 | -------------------------------------------------------------------------------- /Java/empty-pacman-randori2/src/main/java/thirdparty/Pacman.java: -------------------------------------------------------------------------------- 1 | package thirdparty; 2 | 3 | /** 4 | * Created by astral on 11.11.2015. 5 | */ 6 | public interface Pacman extends Location { 7 | void die(); 8 | void moveAwayFrom(); 9 | } 10 | -------------------------------------------------------------------------------- /Java/factories/README.txt: -------------------------------------------------------------------------------- 1 | . Different kinds of factories 2 | . Factory is a function 3 | . Factory is a lightweight pattern with heavy name 4 | . Separation of use from creation vs factories vs composition root 5 | . Encapsulation of global context -------------------------------------------------------------------------------- /Java/factories/_00_playground/src/main/java/main/Main.java: -------------------------------------------------------------------------------- 1 | package main; 2 | 3 | public class Main { 4 | public static void main(String[] args) { 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/README.txt: -------------------------------------------------------------------------------- 1 | 1. Look at example 2 | 2. Try to apply the principle of separating creation from use (with functions) 3 | 3. Evolve functions into classes - a factory appears -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = '_01_no_factories' 2 | 3 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/dto/AssetKind.java: -------------------------------------------------------------------------------- 1 | package dto; 2 | 3 | public enum AssetKind { 4 | User, 5 | OrganizationalUnit, 6 | Hardware 7 | } 8 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/dto/AssetRequestDto.java: -------------------------------------------------------------------------------- 1 | package dto; 2 | 3 | public class AssetRequestDto { 4 | public AssetKind kind; 5 | public String name; 6 | } 7 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/dto/StartSubscriptionResponseDto.java: -------------------------------------------------------------------------------- 1 | package dto; 2 | 3 | public class StartSubscriptionResponseDto { 4 | public boolean failure; 5 | public String[] errors; 6 | } 7 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/dto/StopSubscriptionResponseDto.java: -------------------------------------------------------------------------------- 1 | package dto; 2 | 3 | public class StopSubscriptionResponseDto { 4 | public boolean failure; 5 | public String[] errors; 6 | } 7 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/dto/StoppedSubscriptionParametersDto.java: -------------------------------------------------------------------------------- 1 | package dto; 2 | 3 | public class StoppedSubscriptionParametersDto { 4 | public String userName; 5 | public String subscriptionId; 6 | } 7 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/exceptions/FatalErrorOccuredDuringAuthorizationException.java: -------------------------------------------------------------------------------- 1 | package exceptions; 2 | 3 | public class FatalErrorOccuredDuringAuthorizationException extends RuntimeException { 4 | } 5 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/exceptions/FatalErrorOccuredDuringQueryResolutionException.java: -------------------------------------------------------------------------------- 1 | package exceptions; 2 | 3 | public class FatalErrorOccuredDuringQueryResolutionException extends RuntimeException { 4 | } 5 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/exceptions/FatalErrorOccuredDuringValidationsException.java: -------------------------------------------------------------------------------- 1 | package exceptions; 2 | 3 | public class FatalErrorOccuredDuringValidationsException extends RuntimeException { 4 | } 5 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/other/Log.java: -------------------------------------------------------------------------------- 1 | package other; 2 | 3 | public interface Log { 4 | void error(Exception exception); 5 | } 6 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/queries/QueryResolutionEvents.java: -------------------------------------------------------------------------------- 1 | package queries; 2 | 3 | public interface QueryResolutionEvents { 4 | void noResolutionResultsFor(String name); 5 | } 6 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/responseBuilders/SubscriptionStopEvents.java: -------------------------------------------------------------------------------- 1 | package responseBuilders; 2 | 3 | public interface SubscriptionStopEvents { 4 | void noSubscriptionToStopWithId(String subscriptionId); 5 | } 6 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/responseBuilders/SubscriptionValidationResults.java: -------------------------------------------------------------------------------- 1 | package responseBuilders; 2 | 3 | public interface SubscriptionValidationResults { 4 | void notValid(String dataName); 5 | } 6 | -------------------------------------------------------------------------------- /Java/factories/_01_encapsulation_of_global_context/src/main/java/responseBuilders/UserAuthorizationEvents.java: -------------------------------------------------------------------------------- 1 | package responseBuilders; 2 | 3 | public interface UserAuthorizationEvents { 4 | void userNotAuthorized(String userName); 5 | } 6 | -------------------------------------------------------------------------------- /Java/fizz-buzz-randori/build/classes/java/main/META-INF/fizz-buzz-randori.main.kotlin_module: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /Java/fizz-buzz-randori/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'fizz-buzz-randori' 2 | 3 | -------------------------------------------------------------------------------- /Java/functional-fundamentals/lib/javac8-oo-plugin-0.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/functional-fundamentals/lib/javac8-oo-plugin-0.5.jar -------------------------------------------------------------------------------- /Java/functional-fundamentals/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'functional-fundamentals' 2 | rootProject.name = 'functional-fundamentals' 3 | 4 | -------------------------------------------------------------------------------- /Java/functional-fundamentals/src/main/java/_05_ImmutableGotchas/FinalEmptyObject.java: -------------------------------------------------------------------------------- 1 | package _05_ImmutableGotchas; 2 | 3 | public final class FinalEmptyObject { 4 | } 5 | -------------------------------------------------------------------------------- /Java/functional-fundamentals/src/main/java/_05_ImmutableGotchas/NonFinalEmptyObject.java: -------------------------------------------------------------------------------- 1 | package _05_ImmutableGotchas; 2 | 3 | public class NonFinalEmptyObject { 4 | } 5 | 6 | -------------------------------------------------------------------------------- /Java/functional-fundamentals/src/main/java/_05_ImmutableGotchas/ObjectWithSingleFinalProtectedField.java: -------------------------------------------------------------------------------- 1 | package _05_ImmutableGotchas; 2 | 3 | public final class ObjectWithSingleFinalProtectedField { 4 | /* !! */ protected final int field = 213; 5 | } 6 | -------------------------------------------------------------------------------- /Java/functional-fundamentals/src/main/java/_05_ImmutableGotchas/ObjectWithSinglePrivateField.java: -------------------------------------------------------------------------------- 1 | package _05_ImmutableGotchas; 2 | 3 | public final class ObjectWithSinglePrivateField { 4 | private int field; 5 | } 6 | -------------------------------------------------------------------------------- /Java/functional-fundamentals/src/main/java/_05_ImmutableGotchas/ObjectWithSinglePrivateFinalField.java: -------------------------------------------------------------------------------- 1 | package _05_ImmutableGotchas; 2 | 3 | public final class ObjectWithSinglePrivateFinalField { 4 | private final int field = 12; 5 | } 6 | -------------------------------------------------------------------------------- /Java/mars-rover-functional/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'mars-rover-functional' 2 | 3 | -------------------------------------------------------------------------------- /Java/medicine-clash-kata/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'medicine-clash-kata' 2 | 3 | -------------------------------------------------------------------------------- /Java/messaging-patterns/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'messaging-patterns' 2 | 3 | -------------------------------------------------------------------------------- /Java/messaging-patterns/src/main/java/message_routing/ContentBasedRouter.java: -------------------------------------------------------------------------------- 1 | package message_routing; 2 | 3 | public class ContentBasedRouter { 4 | } 5 | -------------------------------------------------------------------------------- /Java/messaging-patterns/src/main/java/messaging_channels/events/ItemDelivered.java: -------------------------------------------------------------------------------- 1 | package messaging_channels.events; 2 | 3 | public class ItemDelivered { 4 | public String itemName; 5 | } 6 | -------------------------------------------------------------------------------- /Java/messaging-patterns/src/main/java/messaging_channels/events/PurchaseMade.java: -------------------------------------------------------------------------------- 1 | package messaging_channels.events; 2 | 3 | public class PurchaseMade { 4 | public String itemName; 5 | } 6 | -------------------------------------------------------------------------------- /Java/pacman-randori/build/libs/pacman-randori-1.0-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/pacman-randori/build/libs/pacman-randori-1.0-SNAPSHOT.jar -------------------------------------------------------------------------------- /Java/pacman-randori/build/test-results/binary/test/output.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/pacman-randori/build/test-results/binary/test/output.bin -------------------------------------------------------------------------------- /Java/pacman-randori/build/test-results/binary/test/output.bin.idx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Java/pacman-randori/build/test-results/binary/test/results.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/pacman-randori/build/test-results/binary/test/results.bin -------------------------------------------------------------------------------- /Java/pacman-randori/build/tmp/jar/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | 3 | -------------------------------------------------------------------------------- /Java/pacman-randori/class-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/pacman-randori/class-diagram.png -------------------------------------------------------------------------------- /Java/pacman-randori/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/pacman-randori/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Java/pacman-randori/lib/autofixturegenerator-0.6.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/pacman-randori/lib/autofixturegenerator-0.6.7.jar -------------------------------------------------------------------------------- /Java/pacman-randori/lib/guava-17.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/pacman-randori/lib/guava-17.0.jar -------------------------------------------------------------------------------- /Java/pacman-randori/lib/mockito-all-1.10.19.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/pacman-randori/lib/mockito-all-1.10.19.jar -------------------------------------------------------------------------------- /Java/pacman-randori/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'pacman-randori' 2 | 3 | -------------------------------------------------------------------------------- /Java/pacman-randori/src/main/java/thirdparty/InGameTimer.java: -------------------------------------------------------------------------------- 1 | package thirdparty; 2 | 3 | /** 4 | * Created by astral on 11.11.2015. 5 | */ 6 | public interface InGameTimer { 7 | void start(); 8 | } 9 | -------------------------------------------------------------------------------- /Java/pacman-randori/src/main/java/thirdparty/Location.java: -------------------------------------------------------------------------------- 1 | package thirdparty; 2 | 3 | /** 4 | * Created by astral on 11.11.2015. 5 | */ 6 | public interface Location { 7 | void moveTowards(); 8 | } 9 | -------------------------------------------------------------------------------- /Java/pacman-randori/src/main/java/thirdparty/Pacman.java: -------------------------------------------------------------------------------- 1 | package thirdparty; 2 | 3 | /** 4 | * Created by astral on 11.11.2015. 5 | */ 6 | public interface Pacman extends Location { 7 | void die(); 8 | void moveAwayFrom(); 9 | } 10 | -------------------------------------------------------------------------------- /Java/path-randori/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/path-randori/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Java/path-randori/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'path-randori' 2 | 3 | -------------------------------------------------------------------------------- /Java/path-values/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'path-values' 2 | rootProject.name = 'path-values' 3 | 4 | -------------------------------------------------------------------------------- /Java/readonly-collections/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 29 15:29:44 CEST 2018 2 | gradle.version=4.4 3 | -------------------------------------------------------------------------------- /Java/readonly-collections/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'readonly-collections' 2 | 3 | -------------------------------------------------------------------------------- /Java/readonly-collections/src/main/java/readonly/interfaces/ReadOnlyQueue.java: -------------------------------------------------------------------------------- 1 | package readonly.interfaces; 2 | 3 | public interface ReadOnlyQueue extends ReadOnlyCollection { 4 | T element(); 5 | 6 | T peek(); 7 | } 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Java/readonly-collections/src/main/java/readonly/interfaces/ReadOnlySet.java: -------------------------------------------------------------------------------- 1 | package readonly.interfaces; 2 | 3 | public interface ReadOnlySet extends ReadOnlyCollection { 4 | 5 | } 6 | 7 | -------------------------------------------------------------------------------- /Java/serenity-ioc/build/resources/test/cucumber.properties: -------------------------------------------------------------------------------- 1 | cucumber.api.java.ObjectFactory = cucumber.runtime.java.picocontainer.PicoFactory -------------------------------------------------------------------------------- /Java/serenity-ioc/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'serenity-ioc' 2 | 3 | -------------------------------------------------------------------------------- /Java/serenity-ioc/src/test/java/com/github/grzesiekgalezowski/main/MyDependency.java: -------------------------------------------------------------------------------- 1 | package com.github.grzesiekgalezowski.main; 2 | 3 | /** 4 | * Created by grzes on 20.04.2017. 5 | */ 6 | public class MyDependency { 7 | } 8 | -------------------------------------------------------------------------------- /Java/serenity-ioc/src/test/resources/cucumber.properties: -------------------------------------------------------------------------------- 1 | cucumber.api.java.ObjectFactory = cucumber.runtime.java.picocontainer.PicoFactory -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/favicon.ico -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/font-awesome/font/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/font-awesome/font/FontAwesome.otf -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/font-awesome/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/font-awesome/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/font-awesome/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/font-awesome/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/font-awesome/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/bg_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/bg_01.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/bg_04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/bg_04.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/bottomm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/bottomm.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/cross.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-appium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-appium.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-chrome.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-firefox.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-htmlunit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-htmlunit.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-iexplorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-iexplorer.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-opera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-opera.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-phantomjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-phantomjs.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-provided.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-provided.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-remote.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/driver-safari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/driver-safari.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/fail.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/greenline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/greenline.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/ico-q.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/ico-q.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/icon-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/icon-1.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/ignor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/ignor.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/links_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/links_menu.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/logo.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/menu_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/menu_f.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/menu_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/menu_h.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/menu_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/menu_s.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/middle-left.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/middle-left.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/middle-right.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/middle-right.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/middle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/middle.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/minus.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/pending.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/plus.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/screen.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/serenity-bdd-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/serenity-bdd-logo.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/skip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/skip.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/small-middle-left.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/small-middle-left.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/small-middle-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/small-middle-right.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/small-middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/small-middle.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/success.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/tablebg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/tablebg.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/tick.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/top-left.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/top-left.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/top-right.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/top-right.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/top.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/top.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/topm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/topm.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/traffic-green.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/traffic-green.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/traffic-in-progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/traffic-in-progress.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/traffic-orange.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/traffic-orange.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/traffic-red.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/traffic-red.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/traffic-yellow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/traffic-yellow.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/video.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/images/worker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/images/worker.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/jit/css/col1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/jit/css/col1.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/jit/css/col2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/jit/css/col2.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/jit/css/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/jit/css/gradient.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/jqtree/0.22/jqtree-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/jqtree/0.22/jqtree-circle.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/dev7logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/dev7logo.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/nemo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/nemo.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/toystory.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/toystory.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/up.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/up.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/walle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/demo/images/walle.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/bar/arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/bar/arrows.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/bar/bullets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/bar/bullets.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/bar/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/bar/loading.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/dark/arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/dark/arrows.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/dark/bullets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/dark/bullets.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/dark/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/dark/loading.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/default/arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/default/arrows.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/light/arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/light/arrows.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/light/bullets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/light/bullets.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/light/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/nivo-slider/3.2/themes/light/loading.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/serenity/serenity-resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/serenity/serenity-resources -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/datatables/media/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/datatables/media/images/favicon.ico -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/datatables/media/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/datatables/media/images/sort_asc.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/datatables/media/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/datatables/media/images/sort_both.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/datatables/media/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/datatables/media/images/sort_desc.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/favicon.ico -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/font-awesome/font/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/font-awesome/font/FontAwesome.otf -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/font-awesome/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/bg_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/bg_01.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/bg_04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/bg_04.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/bottomm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/bottomm.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/cross.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/fail.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/greenline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/greenline.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/ico-q.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/ico-q.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/icon-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/icon-1.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/ignor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/ignor.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/links_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/links_menu.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/logo.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/menu_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/menu_f.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/menu_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/menu_h.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/menu_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/menu_s.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/middle-left.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/middle-left.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/middle-right.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/middle-right.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/middle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/middle.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/minus.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/pending.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/plus.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/screen.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/serenity-bdd-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/serenity-bdd-logo.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/skip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/skip.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/small-middle-left.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/small-middle-left.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/small-middle-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/small-middle-right.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/small-middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/small-middle.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/success.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/tablebg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/tablebg.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/tick.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/top-left.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/top-left.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/top-right.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/top-right.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/top.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/top.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/topm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/topm.jpg -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/traffic-green.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/traffic-green.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/traffic-in-progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/traffic-in-progress.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/traffic-orange.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/traffic-orange.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/traffic-red.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/traffic-red.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/traffic-yellow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/traffic-yellow.gif -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/video.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/images/worker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/images/worker.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/jit/css/col1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/jit/css/col1.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/jit/css/col2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/jit/css/col2.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/jit/css/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/jit/css/gradient.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/jqtree/jqtree-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/jqtree/jqtree-circle.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/nivo-slider/README: -------------------------------------------------------------------------------- 1 | Nivo Slider is "The Most Awesome jQuery Image Slider". See http://nivo.dev7studios.com for more info. -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/nivo-slider/themes/default/arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/nivo-slider/themes/default/arrows.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/nivo-slider/themes/default/bullets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/nivo-slider/themes/default/bullets.png -------------------------------------------------------------------------------- /Java/serenity-ioc/target/site/thucydides/nivo-slider/themes/default/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/serenity-ioc/target/site/thucydides/nivo-slider/themes/default/loading.gif -------------------------------------------------------------------------------- /Java/spring-boot-manual-composition-root/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/spring-boot-manual-composition-root/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Java/spring-ioc-example/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'spring-ioc-example' 2 | 3 | -------------------------------------------------------------------------------- /Java/spring-ioc-example/src/main/java/org/github/grzesiekgalezowski/examples/config/Cache.java: -------------------------------------------------------------------------------- 1 | package org.github.grzesiekgalezowski.examples.config; 2 | 3 | public interface Cache { 4 | } 5 | -------------------------------------------------------------------------------- /Java/spring-ioc-example/src/main/java/org/github/grzesiekgalezowski/examples/domain/Entitlement.java: -------------------------------------------------------------------------------- 1 | package org.github.grzesiekgalezowski.examples.domain; 2 | 3 | public interface Entitlement { 4 | } 5 | -------------------------------------------------------------------------------- /Java/spring-ioc-example/src/main/java/org/github/grzesiekgalezowski/examples/domain/Output.java: -------------------------------------------------------------------------------- 1 | package org.github.grzesiekgalezowski.examples.domain; 2 | 3 | public interface Output { 4 | } 5 | -------------------------------------------------------------------------------- /Java/tdd-java-17/.gradle/7.5.1/dependencies-accessors/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/tdd-java-17/.gradle/7.5.1/dependencies-accessors/gc.properties -------------------------------------------------------------------------------- /Java/tdd-java-17/.gradle/7.5.1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/tdd-java-17/.gradle/7.5.1/gc.properties -------------------------------------------------------------------------------- /Java/tdd-java-17/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Tue Jan 10 07:45:45 CET 2023 2 | gradle.version=7.5.1 3 | -------------------------------------------------------------------------------- /Java/tdd-java-17/.gradle/vcs-1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grzesiek-galezowski/TrainingExamples/b8628fc27b808f106c0dbbea9777ee905c5d8b23/Java/tdd-java-17/.gradle/vcs-1/gc.properties -------------------------------------------------------------------------------- /Java/tdd-java-17/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /Java/tdd-java-17/.idea/fileTemplates/code/JUnit5 Test Method.java: -------------------------------------------------------------------------------- 1 | @org.junit.jupiter.api.Test 2 | void should${NAME}() { 3 | ${BODY} 4 | fail("Not yet implemented"); 5 | } -------------------------------------------------------------------------------- /Java/tdd-java-17/.idea/fileTemplates/code/New Method Body.java: -------------------------------------------------------------------------------- 1 | throw new RuntimeException("Not implemented"); -------------------------------------------------------------------------------- /Java/tdd-java-17/.idea/fileTemplates/code/Overridden Method Body.java: -------------------------------------------------------------------------------- 1 | $CALL_SUPER; 2 | throw new RuntimeException("Not implemented"); -------------------------------------------------------------------------------- /Java/tdd-java-17/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'tdd-java-17' 2 | 3 | -------------------------------------------------------------------------------- /Java/tdd-java-17/src/main/java/org/example/Command.java: -------------------------------------------------------------------------------- 1 | package org.example; 2 | 3 | public interface Command { 4 | 5 | void execute(); 6 | } 7 | -------------------------------------------------------------------------------- /Java/tdd-java-17/src/main/java/org/example/Main.java: -------------------------------------------------------------------------------- 1 | package org.example; 2 | 3 | public class Main { 4 | public static void main(String[] args) { 5 | new MyApplication(); 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /Java/tdd-java-17/src/main/java/org/example/TranslateRequestData.java: -------------------------------------------------------------------------------- 1 | package org.example; 2 | 3 | public record TranslateRequestData(String text, String language) { 4 | } 5 | -------------------------------------------------------------------------------- /Java/tdd-java-17/src/main/java/org/example/TranslateResponseBuilder.java: -------------------------------------------------------------------------------- 1 | package org.example; 2 | 3 | public interface TranslateResponseBuilder { 4 | void success(String translatedText); 5 | 6 | void failedBecauseLanguageIsNotSupported(); 7 | } 8 | -------------------------------------------------------------------------------- /Java/tdd-java-17/src/main/java/org/example/TranslationApi.java: -------------------------------------------------------------------------------- 1 | package org.example; 2 | 3 | public interface TranslationApi { 4 | String translate(String text, String language); 5 | } 6 | -------------------------------------------------------------------------------- /Java/test-automation-layer-example/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'test-automation-layer-example' 2 | 3 | -------------------------------------------------------------------------------- /Java/test-automation-layer-example/src/main/java/bootstrap/Main.java: -------------------------------------------------------------------------------- 1 | package bootstrap; 2 | 3 | public class Main { 4 | public static void main(String[] args) { 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Java/test-automation-layer-example/src/main/java/inbound/adapters/ConsoleInput.java: -------------------------------------------------------------------------------- 1 | package inbound.adapters; 2 | 3 | public class ConsoleInput { 4 | } 5 | -------------------------------------------------------------------------------- /Java/test-automation-layer-example/src/main/java/inbound/ports/Api.java: -------------------------------------------------------------------------------- 1 | package inbound.ports; 2 | 3 | public interface Api { 4 | 5 | RecordsListDto getRecordsByArtist(String artist); 6 | 7 | void addRecord(RecordDto recordDto); 8 | } 9 | -------------------------------------------------------------------------------- /Java/test-automation-layer-example/src/main/java/inbound/ports/RecordDto.java: -------------------------------------------------------------------------------- 1 | package inbound.ports; 2 | 3 | import lombok.Builder; 4 | 5 | @Builder 6 | public class RecordDto { 7 | private String artist; 8 | private String title; 9 | } 10 | -------------------------------------------------------------------------------- /Java/test-automation-layer-example/src/main/java/outbound/adapters/Screen.java: -------------------------------------------------------------------------------- 1 | package outbound.adapters; 2 | 3 | public class Screen { 4 | } 5 | -------------------------------------------------------------------------------- /Java/test-automation-layer-example/src/main/java/outbound/ports/Destination.java: -------------------------------------------------------------------------------- 1 | package outbound.ports; 2 | 3 | public interface Destination { 4 | } 5 | -------------------------------------------------------------------------------- /Java/test-setup-gotchas/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'test-setup-gotchas' 2 | 3 | -------------------------------------------------------------------------------- /Java/validations-kata/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'validations-kata' 2 | 3 | -------------------------------------------------------------------------------- /Java/validations-kata/src/main/java/com/randori/inbound/logic/Errors.java: -------------------------------------------------------------------------------- 1 | package com.randori.inbound.logic; 2 | 3 | public interface Errors { 4 | Boolean hasAny(); 5 | 6 | void print(); 7 | 8 | void addError(String errorString); 9 | } 10 | -------------------------------------------------------------------------------- /Java/validations-kata/src/main/java/com/randori/inbound/logic/SubscriptionCommand.java: -------------------------------------------------------------------------------- 1 | package com.randori.inbound.logic; 2 | 3 | public interface SubscriptionCommand { 4 | void validate(); 5 | 6 | void execute(); 7 | } 8 | -------------------------------------------------------------------------------- /Java/value-objects/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'value-objects' 2 | 3 | -------------------------------------------------------------------------------- /Java/value-objects/src/main/java/withValueObjects/Product.java: -------------------------------------------------------------------------------- 1 | package withValueObjects; 2 | 3 | public class Product { 4 | private int quantity = 0; 5 | 6 | int getQuantity() { 7 | return quantity; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Java/value-objects/src/main/java/withoutValueObjects/Product.java: -------------------------------------------------------------------------------- 1 | package withoutValueObjects; 2 | 3 | public class Product { 4 | private int quantity = 0; 5 | 6 | int getQuantity() { 7 | return quantity; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'xunit-test-patterns' 2 | 3 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_00_test_organization/MySut.java: -------------------------------------------------------------------------------- 1 | package _00_test_organization; 2 | 3 | public class MySut { 4 | //todo show how to generate and navigate to test 5 | //todo show how to configure it 6 | } 7 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_02_basics/BufferSizeRule.java: -------------------------------------------------------------------------------- 1 | package _02_basics; 2 | 3 | public class BufferSizeRule { 4 | public boolean canHandle(String s) { 5 | return s != null && s.length() < 4; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_08_fixture_management/AddressStatus.java: -------------------------------------------------------------------------------- 1 | package _08_fixture_management; 2 | 3 | public enum AddressStatus { 4 | ACTIVE, INACTIVE 5 | } 6 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_08_fixture_management/InvoiceLine.java: -------------------------------------------------------------------------------- 1 | package _08_fixture_management; 2 | 3 | public class InvoiceLine { 4 | } 5 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_08_fixture_management/InvoiceStatus.java: -------------------------------------------------------------------------------- 1 | package _08_fixture_management; 2 | 3 | public enum InvoiceStatus { 4 | NEW 5 | } 6 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_08_fixture_management/Money.java: -------------------------------------------------------------------------------- 1 | package _08_fixture_management; 2 | 3 | public class Money { 4 | public Money(String s, String usd) { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_09_mock_objects/Command.java: -------------------------------------------------------------------------------- 1 | package _09_mock_objects; 2 | 3 | public interface Command { 4 | void ExecuteOn(SharedCore core); 5 | } 6 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_09_mock_objects/DataDestination.java: -------------------------------------------------------------------------------- 1 | package _09_mock_objects; 2 | 3 | public interface DataDestination { 4 | void save(Data data); 5 | } 6 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_09_mock_objects/DataSource.java: -------------------------------------------------------------------------------- 1 | package _09_mock_objects; 2 | 3 | public interface DataSource { 4 | Data retrieveData(); 5 | } 6 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_09_mock_objects/NullCommand.java: -------------------------------------------------------------------------------- 1 | package _09_mock_objects; 2 | 3 | public class NullCommand implements Command { 4 | public void ExecuteOn(SharedCore core) { 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/main/java/_09_mock_objects/SharedCore.java: -------------------------------------------------------------------------------- 1 | package _09_mock_objects; 2 | 3 | public interface SharedCore { 4 | void addResource(int x); 5 | void deleteResource(int x); 6 | void updateResource(int x); 7 | } 8 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/test/java/_08_fixture_management/_02_MinimalFixtureWithInlineSetup_TODO.java: -------------------------------------------------------------------------------- 1 | package _08_fixture_management; 2 | 3 | public class _02_MinimalFixtureWithInlineSetup_TODO { 4 | } 5 | -------------------------------------------------------------------------------- /Java/xunit-test-patterns/src/test/java/_08_fixture_management/_03_CreationMethods_TODO.java: -------------------------------------------------------------------------------- 1 | package _08_fixture_management; 2 | 3 | public class _03_CreationMethods_TODO { 4 | } 5 | -------------------------------------------------------------------------------- /Sandbox/CSharp/ActiveObjects/ActiveObjects/MessageService.cs: -------------------------------------------------------------------------------- 1 | namespace ActiveObjects; 2 | 3 | public interface IMessageService 4 | { 5 | public Task Handle(object message); 6 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/EnvVars/EnvVars/OperationVerb.cs: -------------------------------------------------------------------------------- 1 | namespace EnvVars; 2 | 3 | internal enum OperationVerb 4 | { 5 | Modify, 6 | Define, 7 | Read, 8 | Delete, 9 | CreateContainer 10 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/EnvVars/EnvVars/VariableStates.cs: -------------------------------------------------------------------------------- 1 | namespace EnvVars; 2 | 3 | internal enum VariableStates 4 | { 5 | Unknown, 6 | Defined, 7 | Deleted 8 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/EnvVars/EnvVarsSpecification/Globals.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; 2 | global using static TddXt.AnyRoot.Root; 3 | global using System; 4 | global using FluentAssertions; -------------------------------------------------------------------------------- /Sandbox/CSharp/FlowSimulation/FlowSimulation/ProductionCode/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | // Global using directives 2 | 3 | global using System.Globalization; -------------------------------------------------------------------------------- /Sandbox/CSharp/FlowSimulation/FlowSimulation/ProductionCode/TeamMemberProperties.cs: -------------------------------------------------------------------------------- 1 | namespace FlowSimulation.ProductionCode; 2 | 3 | public record TeamMemberProperties() 4 | { 5 | public string Role { get; init; } = "Developer"; 6 | }; -------------------------------------------------------------------------------- /Sandbox/CSharp/FlowSimulation/FlowSimulation/Specification/Automation/Roles.cs: -------------------------------------------------------------------------------- 1 | namespace FlowSimulation.Specification.Automation; 2 | 3 | public class Roles 4 | { 5 | public const string Developer = "Developer"; 6 | public const string Qa = "QA"; 7 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/AddTodoItemDto.cs: -------------------------------------------------------------------------------- 1 | namespace RadicalCqsWebApp; 2 | 3 | public record AddTodoItemDto(string Title, string Content, string Author, DateTime? DueDate) 4 | { 5 | 6 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/AddTodoResponseDto.cs: -------------------------------------------------------------------------------- 1 | namespace RadicalCqsWebApp; 2 | 3 | public record AddTodoResponseDto(DateOnly Date, int Id, bool Translated, string Translation); -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/IResultConsumer.cs: -------------------------------------------------------------------------------- 1 | namespace RadicalCqsWebApp; 2 | 3 | public interface IResultConsumer 4 | { 5 | void Success(TSuccess success); 6 | void Error(TError error); 7 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/ISetReminderCallback.cs: -------------------------------------------------------------------------------- 1 | namespace RadicalCqsWebApp; 2 | 3 | public interface ISetReminderCallback 4 | { 5 | void Success(DateTime dueDate, string translation); 6 | void Error(string message); 7 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/ITodoItemsDaoOperationCallback.cs: -------------------------------------------------------------------------------- 1 | namespace RadicalCqsWebApp; 2 | 3 | public interface ITodoItemsDaoOperationCallback 4 | { 5 | void Success(Guid assignedId, string translation); 6 | void Error(int errorCode); 7 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/Police.cs: -------------------------------------------------------------------------------- 1 | namespace RadicalCqsWebApp; 2 | 3 | internal class Police 4 | { 5 | public void SubmitForAudit(string title, string content, string author) 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/RadicalCqsWebApp.http: -------------------------------------------------------------------------------- 1 | @RadicalCqsWebApp_HostAddress = http://localhost:5240 2 | 3 | GET {{RadicalCqsWebApp_HostAddress}}/weatherforecast/ 4 | Accept: application/json 5 | 6 | ### 7 | -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/TodoItemDto.cs: -------------------------------------------------------------------------------- 1 | namespace RadicalCqsWebApp; 2 | 3 | public record TodoItemDto(string Title, DateTime? DueDate, string Translation) 4 | { 5 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/TranslatedDto.cs: -------------------------------------------------------------------------------- 1 | namespace RadicalCqsWebApp; 2 | 3 | public record TranslatedDto(string TranslatedContent); -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Sandbox/CSharp/RadicalCqsWebApp/RadicalCqsWebApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /Sandbox/CSharp/StrictSubstitute/StrictSubstituteSpecification/MethodReturnValue.cs: -------------------------------------------------------------------------------- 1 | namespace StrictNSubstituteSpecification 2 | { 3 | interface MethodReturnValue 4 | { 5 | void StartThrowingExceptions(); 6 | } 7 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/ISelectedTb03BackupFolderProcessingStep.cs: -------------------------------------------------------------------------------- 1 | using AtmaFileSystem; 2 | 3 | namespace Application; 4 | 5 | public interface ISelectedTb03BackupFolderProcessingStep 6 | { 7 | void Activate(AbsoluteDirectoryPath folderPath); 8 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/IOctaveObserver.cs: -------------------------------------------------------------------------------- 1 | namespace Application.Ports; 2 | 3 | public interface IOctaveObserver 4 | { 5 | void OnOctaveChanged(Tb03Octave newOctave); 6 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/IParameterToggleObserver.cs: -------------------------------------------------------------------------------- 1 | namespace Application.Ports; 2 | 3 | public interface IParameterToggleObserver 4 | { 5 | void OnAccentChanged(bool newAccentValue); 6 | void OnSlideChanged(bool newSlideValue); 7 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/ITb03TracksFolder.cs: -------------------------------------------------------------------------------- 1 | namespace Application.Ports; 2 | 3 | public interface ITb03TracksFolder 4 | { 5 | void LoadTrack(int trackNumber, ITrackPatternsObserver observer); 6 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/ITrackPatternsObserver.cs: -------------------------------------------------------------------------------- 1 | namespace Application.Ports; 2 | 3 | public interface ITrackPatternsObserver 4 | { 5 | void TrackLoaded(TrackDto trackDto); 6 | void OnTrackSelectionChanged(int trackNumber); 7 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/PatternNavigationConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Application.Ports; 2 | 3 | public static class PatternNavigationConstants 4 | { 5 | public const int InitialPatternGroup = 1; 6 | public const int InitialPattern = 1; 7 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/SequenceDto.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Immutable; 2 | 3 | namespace Application.Ports; 4 | 5 | public record SequenceDto( 6 | int EndStep, 7 | int Triplet, 8 | ImmutableArray Steps); -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/Tb03Octave.cs: -------------------------------------------------------------------------------- 1 | namespace Application.Ports; 2 | 3 | public enum Tb03Octave 4 | { 5 | Octave1 = 0, 6 | Octave2, 7 | Octave3, 8 | Octave4, 9 | Octave5, 10 | Octave6, 11 | Octave7, 12 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/TrackDto.cs: -------------------------------------------------------------------------------- 1 | namespace Application.Ports; 2 | 3 | public record TrackDto(int Bars, int DalSegnoBar, TrackEntryDto[] Entries); -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/Ports/TrackEntryDto.cs: -------------------------------------------------------------------------------- 1 | namespace Application.Ports; 2 | 3 | public record TrackEntryDto(int Number, int Pattern, int Transpose); 4 | 5 | //bug revise all ints (e.g. to uints) -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Application/TrackNavigationConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Application; 2 | 3 | public static class TrackNavigationConstants 4 | { 5 | public const int InitialTrack = 1; 6 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Tb03Gui/Midi/Tb03PatternGroupNumber.cs: -------------------------------------------------------------------------------- 1 | namespace Tb03Gui.Midi; 2 | 3 | public enum Tb03PatternGroupNumber 4 | { 5 | Group1=1, 6 | Group2=2, 7 | Group3=3, 8 | Group4=4, 9 | } -------------------------------------------------------------------------------- /Sandbox/CSharp/Tb03Gui/Tb03GuiSpecification/Usings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; --------------------------------------------------------------------------------