public void ReadWriteTest() { var options = new HttpApiOptions().JsonSerializeOptions; var obj1 = new FormatModel { Age = 18, Name = "老九" }; var formatter = new WebApiClientCore.Serialization.JsonSerializer(); using var buffer = new BufferWriter <byte>(); formatter.Serialize(buffer, obj1, options); var json = buffer.GetWrittenSpan().ToArray(); var obj2 = formatter.Deserialize(json, typeof(FormatModel), options); Assert.True(obj1.Equals(obj2)); var dic = new System.Collections.Concurrent.ConcurrentDictionary <string, object>(); dic.TryAdd("Key", "Value"); buffer.Clear(); formatter.Serialize(buffer, dic, options); var json2 = Encoding.UTF8.GetString(buffer.GetWrittenSpan().ToArray()); Assert.Contains("key", json2); }
public void UrlEncode_BufferWriterTest() { var str = "c++!=c#,没错!"; using var writer = new BufferWriter <byte>(); HttpUtility.UrlEncode(str, writer); var e1 = Encoding.UTF8.GetString(writer.GetWrittenSpan()); var e2 = System.Web.HttpUtility.UrlEncode(str, Encoding.UTF8); Assert.Equal(e1, e2); str = "abc123"; writer.Clear(); HttpUtility.UrlEncode(str, writer); e1 = Encoding.UTF8.GetString(writer.GetWrittenSpan()); e2 = System.Web.HttpUtility.UrlEncode(str, Encoding.UTF8); Assert.Equal(e1, e2); }
public void WriteTest() { using var writer = new BufferWriter <char>(1); writer.Write('H'); Assert.Equal(1, writer.WrittenCount); writer.Write('e'); Assert.Equal(2, writer.WrittenCount); writer.Write("llo"); Assert.True(writer.GetWrittenSpan().SequenceEqual("Hello")); writer.Clear(); Assert.Equal(0, writer.WrittenCount); var span = writer.GetSpan(); "Word".AsSpan().CopyTo(span); writer.Advance(4); Assert.True(writer.GetWrittenSpan().SequenceEqual("Word")); }
private bool Send(Connection connection, object cmd) { if (connection == null || mBufferWriter == null) { return(false); } mBufferWriter.Clear(); ushort num = 0; mBufferWriter.Write(num); CommandHelper.Serialize(mBufferWriter, cmd); num = (ushort)(mBufferWriter.stream.Length - 2); int high = num >> 8; int low = (num & 0xff) << 8; num = (ushort)(low | high); Array.Copy(BitConverter.GetBytes(num), mBufferWriter.stream.GetBuffer(), 2); //Logger.Log($"Send cmd = {cmd}"); return(connection.Send(mBufferWriter.stream.GetBuffer(), (int)mBufferWriter.stream.Length)); }