TestsEvents.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using PetaTest;
  6. using PetaJson;
  7. namespace TestCases
  8. {
  9. [Json]
  10. struct StructEvents : IJsonLoaded, IJsonLoading, IJsonLoadField, IJsonWriting, IJsonWritten
  11. {
  12. public int IntField;
  13. [JsonExclude] public bool loading;
  14. [JsonExclude] public bool loaded;
  15. [JsonExclude] public bool fieldLoaded;
  16. void IJsonLoaded.OnJsonLoaded(IJsonReader r)
  17. {
  18. loaded = true;
  19. }
  20. void IJsonLoading.OnJsonLoading(IJsonReader r)
  21. {
  22. loading = true;
  23. }
  24. bool IJsonLoadField.OnJsonField(IJsonReader r, string key)
  25. {
  26. fieldLoaded = true;
  27. return false;
  28. }
  29. void IJsonWriting.OnJsonWriting(IJsonWriter w)
  30. {
  31. w.WriteRaw("/* OnJsonWriting */");
  32. }
  33. void IJsonWritten.OnJsonWritten(IJsonWriter w)
  34. {
  35. w.WriteRaw("/* OnJsonWritten */");
  36. }
  37. }
  38. [TestFixture]
  39. public class TestsEvents
  40. {
  41. [Test]
  42. public void TestStructLoadEvents()
  43. {
  44. var o2 = Json.Parse<StructEvents>("{\"IntField\":23}");
  45. Assert.IsTrue(o2.loading);
  46. Assert.IsTrue(o2.loaded);
  47. Assert.IsTrue(o2.fieldLoaded);
  48. }
  49. [Test]
  50. public void TestStructWriteEvents()
  51. {
  52. var o = new StructEvents();
  53. o.IntField = 23;
  54. var json = Json.Format(o);
  55. Assert.Contains(json, "OnJsonWriting");
  56. Assert.Contains(json, "OnJsonWritten");
  57. }
  58. }
  59. }