예제 #1
0
        public static void VerifyNullableIsNull <T>(BssomSerializerOptions option = null) where T : struct
        {
            var buf = BssomSerializer.Serialize <Nullable <T> >(null, option);

            BssomSerializer.Size <Nullable <T> >(null, option).Is(1).Is(buf.Length);
            BssomSerializer.Deserialize <Nullable <T> >(buf, option).IsNull();
        }
예제 #2
0
        public static void VerifyTypeNull <T>(BssomSerializerOptions option = null) where T : class
        {
            var buf = BssomSerializer.Serialize <T>(null, option);

            BssomSerializer.Size <T>(null, option).Is(1).Is(buf.Length);
            BssomSerializer.Deserialize <T>(buf, option).IsNull();
        }
예제 #3
0
        public static byte[] VerifyEntityWithMap2 <T>(T value, BssomSerializerOptions option = null)
        {
            var buf = UseJsonToolForValidation(value, option);

            buf.IsMap2();
            return(buf);
        }
예제 #4
0
        public static void VerifySpecific <T>(Lazy <T> value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            BssomSerializer.Deserialize <Lazy <T> >(buf, option).Value.Is(value.Value);
        }
예제 #5
0
        public static void VerifySimpleType <T>(T value, int size, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(size).Is(buf.Length);
            BssomSerializer.Deserialize <T>(buf, option).Is(value);
        }
예제 #6
0
        public static void VerifyIDictWithMap2Type(IDictionary value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            BssomSerializer.Deserialize <IDictionary>(buf, option).GetGetEnumerator().IsDict(value.GetGetEnumerator());
            buf.IsMap2();
        }
예제 #7
0
 public void SecurityVerification(_Attribute_Class_3 value, BssomSerializerOptions option)
 {
     if (value != null)
     {
         var exOption = (BssomSerializerOptionsExtend)option;
         exOption.SecurityVerification(value.GenerateToken(), value.GeneratePwd());
     }
 }
예제 #8
0
        private static byte[] SimplicityVerify <T>(T value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            BssomSerializer.Deserialize <T>(buf, option).Is(value);
            return(buf);
        }
예제 #9
0
        public static byte[] VerifyIDictAndReturnSerializeBytes(IDictionary value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            BssomSerializer.Deserialize <IDictionary>(buf, option).GetGetEnumerator().IsDict(value.GetGetEnumerator());
            return(buf);
        }
예제 #10
0
        public Int32 ReadElement(ref BssomReader reader, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo)
        {
            if (offsetInfo.Array1ElementTypeIsNativeType == false && offsetInfo.Array1ElementType == BssomType.Int32Code)
            {
                return(reader.ReadInt32WithOutTypeHead());
            }

            return(BssomSerializationArgumentException.InvalidOffsetInfoFormat <Int32>());
        }
예제 #11
0
        public static void VerifyMap(BssomMap value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            var map = (BssomMap)BssomSerializer.Deserialize <object>(buf, option);

            value.IsMap(map);
        }
예제 #12
0
        public static void VerifyArray(BssomArray value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            var ary = (BssomArray)BssomSerializer.Deserialize <object>(buf, option);

            ary.IsArray(value);
        }
예제 #13
0
        public Guid ReadElement(ref BssomReader reader, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo)
        {
            if (offsetInfo.Array1ElementTypeIsNativeType == true && offsetInfo.Array1ElementType == NativeBssomType.GuidCode)
            {
                return(reader.ReadGuidWithOutTypeHead());
            }

            return(BssomSerializationArgumentException.InvalidOffsetInfoFormat <Guid>());
        }
예제 #14
0
        public static void VerifySpecific <T>(IGrouping <T, T> value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            var group = BssomSerializer.Deserialize <IGrouping <T, T> >(buf, option);

            group.Key.Is(value.Key);
            group.Is(value);
        }
예제 #15
0
        public static void ConvertObjectAndVerifyEntity(object value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            buf.IsMap2();
            var map = (BssomMap)BssomSerializer.Deserialize <object>(buf, option);

            value.GetPublicMembersWithDynamicObject().IsMap(map);
        }
예제 #16
0
        private static byte[] UseJsonToolForValidation <T>(T value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            var t = BssomSerializer.Deserialize <T>(buf, option);

            Kooboo.Json.JsonSerializer.ToJson(t).Is(Kooboo.Json.JsonSerializer.ToJson(value));
            return(buf);
        }
예제 #17
0
        public static void VerifySpecific(StringDictionary value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            var dict  = new Dictionary <string, string>(BssomSerializer.Deserialize <StringDictionary>(buf, option).ToIEnumerable().ToIDict());
            var dict2 = new Dictionary <string, string>(value.ToIEnumerable().ToIDict());

            dict.IsDict(dict2);
        }
예제 #18
0
 public void WriteElement(ref BssomWriter writer, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo, Decimal value)
 {
     if (offsetInfo.Array1ElementTypeIsNativeType == true && offsetInfo.Array1ElementType == NativeBssomType.DecimalCode)
     {
         writer.WriteWithOutTypeHead(value);
     }
     else
     {
         BssomSerializationArgumentException.InvalidOffsetInfoFormat <Decimal>();
     }
 }
예제 #19
0
 public void WriteElement(ref BssomWriter writer, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo, Int32 value)
 {
     if (offsetInfo.Array1ElementTypeIsNativeType == false && offsetInfo.Array1ElementType == BssomType.Int32Code)
     {
         writer.WriteWithOutTypeHead(value);
     }
     else
     {
         BssomSerializationArgumentException.InvalidOffsetInfoFormat <Int32>();
     }
 }
예제 #20
0
        public void WriteElement(ref BssomWriter writer, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo, Object value)
        {
            if (value is null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            IArray1ElementWriter array1ElementWriter = Array1ElementWriterContainers.GetArray1ElementWriter(offsetInfo.Array1ElementTypeIsNativeType, offsetInfo.Array1ElementType);

            array1ElementWriter.WriteObjectElement(ref writer, option, offsetInfo, value);
        }
예제 #21
0
        public static void VerifySpecific <T>(ILookup <T, T> value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            var val = BssomSerializer.Deserialize <ILookup <T, T> >(buf, option);

            val.Count.Is(value.Count);
            foreach (var item in value)
            {
                VerifySpecific(item, option);
            }
        }
예제 #22
0
 public DateTime ReadElement(ref BssomReader reader, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo)
 {
     if (offsetInfo.Array1ElementTypeIsNativeType == false && offsetInfo.Array1ElementType == BssomType.TimestampCode)
     {
         return(reader.ReadStandDateTimeWithOutTypeHead());
     }
     else if (offsetInfo.Array1ElementTypeIsNativeType == true && offsetInfo.Array1ElementType == NativeBssomType.DateTimeCode)
     {
         return(reader.ReadNativeDateTimeWithOutTypeHead());
     }
     else
     {
         return(BssomSerializationArgumentException.InvalidOffsetInfoFormat <DateTime>());
     }
 }
예제 #23
0
 public void WriteElement(ref BssomWriter writer, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo, DateTime value)
 {
     if (offsetInfo.Array1ElementTypeIsNativeType == false && offsetInfo.Array1ElementType == BssomType.TimestampCode)
     {
         writer.Write(value, true, false);
     }
     else if (offsetInfo.Array1ElementTypeIsNativeType == true && offsetInfo.Array1ElementType == NativeBssomType.DateTimeCode)
     {
         writer.Write(value, false, false);
     }
     else
     {
         BssomSerializationArgumentException.InvalidOffsetInfoFormat <DateTime>();
     }
 }
예제 #24
0
        public static BssomArray ConvertArray3ObjectAndVerifyEntity <T>(T value, BssomSerializerOptions option = null)
        {
            if (option == null)
            {
                option = BssomSerializerOptions.IntKeyCompositedResolverOption;
            }
            var buf = BssomSerializer.Serialize(value, option);

            BssomSerializer.Size(value, option).Is(buf.Length);
            buf.IsArray3();
            var desObj = BssomSerializer.Deserialize <T>(buf, option);

            Kooboo.Json.JsonSerializer.ToJson(value).Is(Kooboo.Json.JsonSerializer.ToJson(desObj));
            return(BssomSerializer.Deserialize <BssomArray>(buf, option));
        }
예제 #25
0
        public static void VerifySize(object value, BssomSerializerOptions option = null)
        {
            var buf = BssomSerializer.Serialize(value, option);

            buf.Length.Is(BssomSerializer.Size(value, option));

            var reader = new BssomReader(new SimpleBufferWriter(buf));

            reader.SkipObject();
            reader.Position.Is(buf.Length);

            var bsfm = new BssomFieldMarshaller(buf);

            bsfm.ReadValueSize(BssomFieldOffsetInfo.Zero).Is(buf.Length);
        }
예제 #26
0
 public object ReadObjectElement(ref BssomReader reader, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo)
 {
     throw new NotImplementedException();
 }
예제 #27
0
 public void WriteElement(ref BssomWriter writer, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo, BssomDecimal value)
 {
     WriteElement(ref writer, option, offsetInfo, value.RawValue);
 }
예제 #28
0
 public object ReadObjectElement(ref BssomReader reader, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo)
 {
     return(ReadElement(ref reader, option, offsetInfo));
 }
예제 #29
0
 BssomDecimal IArray1ElementWriter <BssomDecimal> .ReadElement(ref BssomReader reader, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo)
 {
     return((BssomDecimal)BssomValue.Create(ReadElement(ref reader, option, offsetInfo)));
 }
예제 #30
0
 public void WriteObjectElement(ref BssomWriter writer, BssomSerializerOptions option, BssomFieldOffsetInfo offsetInfo, object value)
 {
     WriteElement(ref writer, option, offsetInfo, (Int16)value);
 }