LLamaSharp/LLama.Unittest/ModelsParamsTests.cs

71 lines
2.0 KiB
C#

using System.Text;
using LLama.Common;
using Newtonsoft.Json;
namespace LLama.Unittest
{
public class ModelsParamsTests
{
[Fact]
public void SerializeRoundTripSystemTextJson()
{
var expected = new ModelParams("abc/123")
{
BatchSize = 17,
ContextSize = 42,
LoraAdapter = "adapter",
Seed = 42,
GpuLayerCount = 111
};
var json = System.Text.Json.JsonSerializer.Serialize(expected);
var actual = System.Text.Json.JsonSerializer.Deserialize<ModelParams>(json);
Assert.Equal(expected, actual);
}
[Fact]
public void SerializeRoundTripNewtonsoft()
{
var expected = new ModelParams("abc/123")
{
BatchSize = 17,
ContextSize = 42,
LoraAdapter = "adapter",
Seed = 42,
GpuLayerCount = 111
};
var settings = new Newtonsoft.Json.JsonSerializerSettings();
settings.Converters.Add(new NewtsonsoftEncodingConverter());
var json = Newtonsoft.Json.JsonConvert.SerializeObject(expected, settings);
var actual = Newtonsoft.Json.JsonConvert.DeserializeObject<ModelParams>(json, settings);
Assert.Equal(expected, actual);
}
public class NewtsonsoftEncodingConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(Encoding).IsAssignableFrom(objectType);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((Encoding)value).WebName);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return Encoding.GetEncoding((string)reader.Value);
}
}
}
}