コード例 #1
0
        public void TestEncoderBase <TType, TArray>(IEncoder <TType> encoder, TType in1, TType in2, bool testnull)
        {
            TType[]  arrayIn1 = new[] { in1, in2 };
            TArray[] arrayIn2 = new TArray[] { (TArray)(object)in1, (TArray)(object)null, (TArray)(object)in2 };


            PacketData data = new PacketData();

            data.AddEstimate(encoder.Estimate(in1));
            data.AddEstimate(encoder.Array.Estimate(arrayIn1));
            if (testnull)
            {
                data.AddEstimate(encoder.Nullable.Estimate(null));
                data.AddEstimate(encoder.Nullable.Estimate(in1));
                data.AddEstimate(encoder.Nullable.Array.Estimate(arrayIn2));
            }
            data.InitArray();
            encoder.Encode(in1, data);
            encoder.Array.Encode(arrayIn1, data);
            if (testnull)
            {
                encoder.Nullable.Encode(null, data);
                encoder.Nullable.Encode(in1, data);
                encoder.Nullable.Array.Encode(arrayIn2, data);
            }
            data.Flip();

            TType out1 = encoder.Decode(data);

            TType[] arrayOut1 = (TType[])encoder.Array.Decode(data);
            if (testnull)
            {
                TArray   outNull   = (TArray)encoder.Nullable.Decode(data);
                TArray   out1Null  = (TArray)encoder.Nullable.Decode(data);
                TArray[] arrayOut2 = (TArray[])encoder.Nullable.Array.Decode(data);
            }

            Assert.True(Equals(in1, out1), $"Not consistent {in1} {out1}");
        }