public async Task FeatureEvaluationCache_caches_using_evaluationcontext()
    {
        var cache = new InMemoryFeatureCache();

        await cache.SetItem("A", "C-1", JsonSerializer.SerializeToUtf8Bytes(true));

        await cache.SetItem("A", "C-2", JsonSerializer.SerializeToUtf8Bytes(false));

        await cache.SetItem("B", "C-1", JsonSerializer.SerializeToUtf8Bytes(false));

        var item = await cache.GetItem("A", "C-1");

        Assert.IsNotNull(item);
        Assert.IsTrue(JsonSerializer.Deserialize <bool>(item));
        item = await cache.GetItem("A", "C-2");

        Assert.IsNotNull(item);
        Assert.IsFalse(JsonSerializer.Deserialize <bool>(item));
        item = await cache.GetItem("B", "C-1");

        Assert.IsNotNull(item);
        Assert.IsFalse(JsonSerializer.Deserialize <bool>(item));
        item = await cache.GetItem("A", "C-3");

        Assert.IsNull(item);
    }
    public async Task FeatureEvaluationCache_resets_when_feature_changes()
    {
        var cache = new InMemoryFeatureCache();

        await cache.SetItem("A", "C-1", JsonSerializer.SerializeToUtf8Bytes(true));

        await cache.SetItem("A", "C-2", JsonSerializer.SerializeToUtf8Bytes(false));

        await cache.SetItem("B", "C-1", JsonSerializer.SerializeToUtf8Bytes(false));

        await cache.Remove("A");

        var item = await cache.GetItem("A", "C-1");

        Assert.IsNull(item);
        item = await cache.GetItem("A", "C-2");

        Assert.IsNull(item);
        item = await cache.GetItem("B", "C-1");

        Assert.IsNotNull(item);
        Assert.IsFalse(JsonSerializer.Deserialize <bool>(item));
        item = await cache.GetItem("A", "C-3");

        Assert.IsNull(item);
    }
    public async Task FeatureEvaluationCache_AddOrUpdate_updates_value()
    {
        var cache = new InMemoryFeatureCache();

        await cache.SetItem("A", "C-1", JsonSerializer.SerializeToUtf8Bytes(true));

        var item = await cache.GetItem("A", "C-1");

        Assert.IsNotNull(item);
        Assert.IsTrue(JsonSerializer.Deserialize <bool>(item));

        await cache.SetItem("A", "C-1", JsonSerializer.SerializeToUtf8Bytes(false));

        item = await cache.GetItem("A", "C-1");

        Assert.IsNotNull(item);
        Assert.IsFalse(JsonSerializer.Deserialize <bool>(item));
    }