Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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"));
        }
Ejemplo n.º 4
0
        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));
        }