| File: CacheEntryTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.Extensions.AI.Evaluation.Reporting.Tests\Microsoft.Extensions.AI.Evaluation.Reporting.Tests.csproj (Microsoft.Extensions.AI.Evaluation.Reporting.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.IO; using System.Text.Json; using System.Threading.Tasks; using Microsoft.Extensions.AI.Evaluation.Reporting.JsonSerialization; using Xunit; using CacheEntry = Microsoft.Extensions.AI.Evaluation.Reporting.Storage.DiskBasedResponseCache.CacheEntry; namespace Microsoft.Extensions.AI.Evaluation.Reporting.Tests; public class CacheEntryTests { [Fact] public void SerializeCacheEntry() { var entry = new CacheEntry( scenarioName: "Scenario1", iterationName: "Iteration2", creation: DateTime.UtcNow, expiration: DateTime.UtcNow.Add(TimeSpan.FromMinutes(5))); string json = JsonSerializer.Serialize(entry, JsonUtilities.Default.CacheEntryTypeInfo); CacheEntry? deserialized = JsonSerializer.Deserialize(json, JsonUtilities.Default.CacheEntryTypeInfo); Assert.NotNull(deserialized); Assert.Equal(entry.ScenarioName, deserialized!.ScenarioName); Assert.Equal(entry.IterationName, deserialized.IterationName); Assert.Equal(entry.Creation, deserialized.Creation); Assert.Equal(entry.Expiration, deserialized.Expiration); } [Fact] public void SerializeCacheEntryCompact() { var entry = new CacheEntry( scenarioName: "Scenario1", iterationName: "Iteration2", creation: DateTime.UtcNow, expiration: DateTime.UtcNow.Add(TimeSpan.FromMinutes(5))); string json = JsonSerializer.Serialize(entry, JsonUtilities.Compact.CacheEntryTypeInfo); CacheEntry? deserialized = JsonSerializer.Deserialize(json, JsonUtilities.Default.CacheEntryTypeInfo); Assert.NotNull(deserialized); Assert.Equal(entry.ScenarioName, deserialized!.ScenarioName); Assert.Equal(entry.IterationName, deserialized.IterationName); Assert.Equal(entry.Creation, deserialized.Creation); Assert.Equal(entry.Expiration, deserialized.Expiration); } [Fact] public void SerializeCacheEntryToFile() { var entry = new CacheEntry( scenarioName: "Scenario1", iterationName: "Iteration2", creation: DateTime.UtcNow, expiration: DateTime.UtcNow.Add(TimeSpan.FromMinutes(5))); string tempFilePath = Path.GetTempFileName(); entry.Write(tempFilePath); CacheEntry? deserialized = CacheEntry.Read(tempFilePath); Assert.NotNull(deserialized); Assert.Equal(entry.ScenarioName, deserialized.ScenarioName); Assert.Equal(entry.IterationName, deserialized.IterationName); Assert.Equal(entry.Creation, deserialized.Creation); Assert.Equal(entry.Expiration, deserialized.Expiration); } [Fact] public async Task SerializeCacheEntryToFileAsync() { var entry = new CacheEntry( scenarioName: "Scenario1", iterationName: "Iteration2", creation: DateTime.UtcNow, expiration: DateTime.UtcNow.Add(TimeSpan.FromMinutes(5))); string tempFilePath = Path.GetTempFileName(); await entry.WriteAsync(tempFilePath); CacheEntry? deserialized = await CacheEntry.ReadAsync(tempFilePath); Assert.NotNull(deserialized); Assert.Equal(entry.ScenarioName, deserialized.ScenarioName); Assert.Equal(entry.IterationName, deserialized.IterationName); Assert.Equal(entry.Creation, deserialized.Creation); Assert.Equal(entry.Expiration, deserialized.Expiration); } }