| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Topten.JsonKit;
- using System.Reflection;
- using Xunit;
- namespace TestCases
- {
- [Json]
- struct StructEvents : IJsonLoaded, IJsonLoading, IJsonLoadField, IJsonWriting, IJsonWritten
- {
- public int IntField;
- [JsonExclude] public bool loading;
- [JsonExclude] public bool loaded;
- [JsonExclude] public bool fieldLoaded;
- void IJsonLoaded.OnJsonLoaded(IJsonReader r)
- {
- loaded = true;
- }
- void IJsonLoading.OnJsonLoading(IJsonReader r)
- {
- loading = true;
- }
- bool IJsonLoadField.OnJsonField(IJsonReader r, string key)
- {
- fieldLoaded = true;
- return false;
- }
- void IJsonWriting.OnJsonWriting(IJsonWriter w)
- {
- w.WriteRaw("/* OnJsonWriting */");
- }
- void IJsonWritten.OnJsonWritten(IJsonWriter w)
- {
- w.WriteRaw("/* OnJsonWritten */");
- }
- }
- [Json]
- class ObjectEvents : IJsonLoaded, IJsonLoading, IJsonLoadField, IJsonWriting, IJsonWritten
- {
- public int IntField;
- [JsonExclude] public bool loading;
- [JsonExclude] public bool loaded;
- [JsonExclude] public bool fieldLoaded;
- void IJsonLoaded.OnJsonLoaded(IJsonReader r)
- {
- loaded = true;
- }
- void IJsonLoading.OnJsonLoading(IJsonReader r)
- {
- loading = true;
- }
- bool IJsonLoadField.OnJsonField(IJsonReader r, string key)
- {
- fieldLoaded = true;
- return false;
- }
- void IJsonWriting.OnJsonWriting(IJsonWriter w)
- {
- w.WriteRaw("/* OnJsonWriting */");
- }
- void IJsonWritten.OnJsonWritten(IJsonWriter w)
- {
- w.WriteRaw("/* OnJsonWritten */");
- }
- }
- [Obfuscation(Exclude = true, ApplyToMembers = true)]
- public class TestsEvents
- {
- [Fact]
- public void TestStructLoadEvents()
- {
- var o2 = Json.Parse<StructEvents>("{\"IntField\":23}");
- Assert.True(o2.loading);
- Assert.True(o2.loaded);
- Assert.True(o2.fieldLoaded);
- }
- [Fact]
- public void TestStructWriteEvents()
- {
- var o = new StructEvents();
- o.IntField = 23;
- var json = Json.Format(o);
- Assert.Contains("OnJsonWriting", json);
- Assert.Contains("OnJsonWritten", json);
- }
- [Fact]
- public void TestObjectLoadEvents()
- {
- var o2 = Json.Parse<ObjectEvents>("{\"IntField\":23}");
- Assert.True(o2.loading);
- Assert.True(o2.loaded);
- Assert.True(o2.fieldLoaded);
- }
- [Fact]
- public void TestObjectWriteEvents()
- {
- var o = new ObjectEvents();
- o.IntField = 23;
- var json = Json.Format(o);
- Assert.Contains("OnJsonWriting", json);
- Assert.Contains("OnJsonWritten", json);
- }
- }
- }
|