public void Update_ShouldExecuteEngineSystemsInCorrectOrder()
        {
            // Arrange
            GameTime.FixedDeltaTime = TimeSpan.FromSeconds(0.1);
            var gameTime = new GameTime(TimeSpan.FromSeconds(0.15));

            _gameTimeProvider.GetGameTime().Returns(gameTime);

            var scene = TestSceneFactory.Create();

            _sceneManager.CurrentScene.Returns(scene);

            var gameLoop = GetGameLoop();

            // Act
            gameLoop.Update();

            // Assert
            Received.InOrder(() =>
            {
                _inputSystem.Received(1).ProcessInput(scene);
                _behaviorSystem.Received(1).ProcessBehaviorFixedUpdate(scene);
                _customSystem1.Received(1).ProcessFixedUpdate(scene);
                _customSystem2.Received(1).ProcessFixedUpdate(scene);
                _customSystem3.Received(1).ProcessFixedUpdate(scene);
                _physicsSystem.Received(1).ProcessPhysics(scene);
                _entityDestructionSystem.Received(1).DestroyEntitiesAfterFixedTimeStep(scene);
                _behaviorSystem.Received(1).ProcessBehaviorUpdate(scene, gameTime);
                _customSystem1.Received(1).ProcessUpdate(scene, gameTime);
                _customSystem2.Received(1).ProcessUpdate(scene, gameTime);
                _customSystem3.Received(1).ProcessUpdate(scene, gameTime);
                _physicsSystem.Received(1).PreparePhysicsDebugInformation();
                _audioSystem.Received(1).ProcessAudio(scene);
                _animationSystem.Received(1).ProcessAnimations(scene, gameTime);
                _renderingSystem.Received(1).RenderScene(scene);
                _entityDestructionSystem.Received(1).DestroyEntitiesAfterFullFrame(scene);
            });
        }