public async Task Multiple_State_Check_Should_Be_Works()
    {
        var checker = new MySimpleBatchStateChecker();

        var myStateEntities = new MyStateEntity[]
        {
            new MyStateEntity()
            {
                CreationTime         = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture),
                LastModificationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
            },

            new MyStateEntity()
            {
                CreationTime         = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture),
                LastModificationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
            }
        };

        foreach (var myStateEntity in myStateEntities)
        {
            myStateEntity.AddSimpleStateChecker(checker);
        }

        (await SimpleStateCheckerManager.IsEnabledAsync(myStateEntities)).ShouldAllBe(x => x.Value);

        foreach (var myStateEntity in myStateEntities)
        {
            myStateEntity.CreationTime = DateTime.Parse("2001-01-01", CultureInfo.InvariantCulture);
        }

        (await SimpleStateCheckerManager.IsEnabledAsync(myStateEntities)).ShouldAllBe(x => !x.Value);
    }
    public async Task Multiple_Global_State_Check_Should_Be_Works()
    {
        var myStateEntity = new MyStateEntity()
        {
            CreationTime = DateTime.Parse("2021-01-01", CultureInfo.InvariantCulture)
        };

        (await SimpleStateCheckerManager.IsEnabledAsync(myStateEntity)).ShouldBeFalse();

        myStateEntity.LastModificationTime = DateTime.Parse("2001-01-01", CultureInfo.InvariantCulture);

        (await SimpleStateCheckerManager.IsEnabledAsync(myStateEntity)).ShouldBeTrue();
    }
    public async Task RequirePermissionsSimpleBatchStateChecker_Test()
    {
        var myStateEntities = new MyStateEntity[]
        {
            new MyStateEntity().RequirePermissions(requiresAll: true, batchCheck: true, permissions: "MyPermission3"),
            new MyStateEntity().RequirePermissions(requiresAll: true, batchCheck: true, permissions: "MyPermission4"),
            new MyStateEntity().RequirePermissions(requiresAll: true, batchCheck: true, permissions: "MyPermission4"),
            new MyStateEntity().RequirePermissions(requiresAll: true, batchCheck: true, permissions: "MyPermission5"),
        };

        var result = await _simpleStateCheckerManager.IsEnabledAsync(myStateEntities);

        result.Count.ShouldBe(myStateEntities.Length);

        result[myStateEntities[0]].ShouldBeTrue();
        result[myStateEntities[1]].ShouldBeFalse();
        result[myStateEntities[2]].ShouldBeFalse();
        result[myStateEntities[3]].ShouldBeTrue();
    }