TestsEvents.cs 1.8 KB

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