예제 #1
0
        public void EncodeDecodeKeyValueSchemaInfoSEPARATED()
        {
            var encodingType = KeyValueEncodingType.SEPARATED;
            var kvSchema     = ISchema <object> .KeyValue(FooSchema, BarSchema, encodingType);

            var kvSchemaInfo = kvSchema.SchemaInfo;

            Assert.Equal(encodingType, DefaultImplementation.DecodeKeyValueEncodingType(kvSchemaInfo));

            var encodedSchemaInfo = DefaultImplementation.EncodeKeyValueSchemaInfo(FooSchema, BarSchema, encodingType);

            for (var i = 0; i < kvSchemaInfo.Schema.Length; i++)
            {
                var expected = kvSchemaInfo.Schema[i];
                var actual   = encodedSchemaInfo.Schema[i];
                Assert.Equal(expected, actual);
            }
            Assert.Equal(encodingType, DefaultImplementation.DecodeKeyValueEncodingType(encodedSchemaInfo));

            var schemaInfoKeyValue = DefaultImplementation.DecodeKeyValueSchemaInfo(kvSchemaInfo);

            for (var i = 0; i < FooSchema.SchemaInfo.Schema.Length; i++)
            {
                var expected = FooSchema.SchemaInfo.Schema[i];
                var actual   = schemaInfoKeyValue.Key.Schema[i];
                Assert.Equal(expected, actual);
            }

            for (var i = 0; i < BarSchema.SchemaInfo.Schema.Length; i++)
            {
                var expected = BarSchema.SchemaInfo.Schema[i];
                var actual   = schemaInfoKeyValue.Value.Schema[i];
                Assert.Equal(expected, actual);
            }
        }
예제 #2
0
        public void EncodeDecodeNestedKeyValueSchemaInfo()
        {
            var encodingType = KeyValueEncodingType.INLINE;
            var nestedSchema = ISchema <object> .KeyValue(ISchema <object> .String, BarSchema, KeyValueEncodingType.INLINE);

            var kvSchema = ISchema <object> .KeyValue(FooSchema, nestedSchema, encodingType);

            var kvSchemaInfo = kvSchema.SchemaInfo;

            Assert.Equal(encodingType, DefaultImplementation.DecodeKeyValueEncodingType(kvSchemaInfo));

            var encodedSchemaInfo = DefaultImplementation.EncodeKeyValueSchemaInfo(FooSchema, nestedSchema, encodingType);

            for (var i = 0; i < kvSchemaInfo.Schema.Length; i++)
            {
                var expected = kvSchemaInfo.Schema[i];
                var actual   = encodedSchemaInfo.Schema[i];
                Assert.Equal(expected, actual);
            }
            Assert.Equal(encodingType, DefaultImplementation.DecodeKeyValueEncodingType(encodedSchemaInfo));

            var schemaInfoKeyValue = DefaultImplementation.DecodeKeyValueSchemaInfo(kvSchemaInfo);


            for (var i = 0; i < FooSchema.SchemaInfo.Schema.Length; i++)
            {
                var expected = FooSchema.SchemaInfo.Schema[i];
                var actual   = schemaInfoKeyValue.Key.Schema[i];
                Assert.Equal(expected, actual);
            }
            Assert.Equal(schemaInfoKeyValue.Value.Type, SchemaType.KeyValue);
            var nestedSchemaInfoKeyValue = DefaultImplementation.DecodeKeyValueSchemaInfo(schemaInfoKeyValue.Value);

            var stringSchema = ISchema <object> .String.SchemaInfo.Schema;

            for (var i = 0; i < stringSchema.Length; i++)
            {
                var expected = stringSchema[i];
                var actual   = nestedSchemaInfoKeyValue.Key.Schema[i];
                Assert.Equal(expected, actual);
            }
            for (var i = 0; i < BarSchema.SchemaInfo.Schema.Length; i++)
            {
                var expected = BarSchema.SchemaInfo.Schema[i];
                var actual   = nestedSchemaInfoKeyValue.Value.Schema[i];
                Assert.Equal(expected, actual);
            }
        }