You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ModelsParamsTests.cs 2.1 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System.Text;
  2. using LLama.Common;
  3. using Newtonsoft.Json;
  4. namespace LLama.Unittest
  5. {
  6. public class ModelsParamsTests
  7. {
  8. [Fact]
  9. public void SerializeRoundTripSystemTextJson()
  10. {
  11. var expected = new ModelParams("abc/123")
  12. {
  13. BatchSize = 17,
  14. ContextSize = 42,
  15. Seed = 42,
  16. GpuLayerCount = 111
  17. };
  18. var json = System.Text.Json.JsonSerializer.Serialize(expected);
  19. var actual = System.Text.Json.JsonSerializer.Deserialize<ModelParams>(json);
  20. Assert.Equal(expected, actual);
  21. }
  22. [Fact]
  23. public void SerializeRoundTripNewtonsoft()
  24. {
  25. var expected = new ModelParams("abc/123")
  26. {
  27. BatchSize = 17,
  28. ContextSize = 42,
  29. Seed = 42,
  30. GpuLayerCount = 111,
  31. LoraAdapters =
  32. {
  33. new("abc", 1),
  34. new("def", 0)
  35. }
  36. };
  37. var settings = new Newtonsoft.Json.JsonSerializerSettings();
  38. settings.Converters.Add(new NewtsonsoftEncodingConverter());
  39. var json = Newtonsoft.Json.JsonConvert.SerializeObject(expected, settings);
  40. var actual = Newtonsoft.Json.JsonConvert.DeserializeObject<ModelParams>(json, settings);
  41. Assert.Equal(expected, actual);
  42. }
  43. public class NewtsonsoftEncodingConverter : JsonConverter
  44. {
  45. public override bool CanConvert(Type objectType)
  46. {
  47. return typeof(Encoding).IsAssignableFrom(objectType);
  48. }
  49. public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
  50. {
  51. writer.WriteValue(((Encoding)value).WebName);
  52. }
  53. public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
  54. {
  55. return Encoding.GetEncoding((string)reader.Value);
  56. }
  57. }
  58. }
  59. }