Пример #1
0
    public void Test_DecodeTaggedShapes_DecodeFromEncoded()
    {
        Encoder encoder = new();

        // Make an encoded shape.
        Assert.True(S2ShapeUtilCoding.FastEncodeShape(
                        new S2PointVectorShape(ParsePointsOrDie("0:0, 0:1").ToArray()),
                        encoder));
        var decoder = encoder.Decoder();

        var(success, encoded_shape) = EncodedS2PointVectorShape.Init(decoder);

        // Encode the encoded form.
        Encoder reencoder = new();

        Assert.True(S2ShapeUtilCoding.FastEncodeShape(encoded_shape !, reencoder));
        var encoded_decoder = reencoder.Decoder();

        // We can decode the shape in either full or lazy form from the same bytes.
        var full_shape = S2ShapeUtilCoding.FullDecodeShape(S2PointVectorShape.kTypeTag, encoded_decoder);

        Assert.Equal(full_shape !.GetTypeTag(), S2PointVectorShape.kTypeTag);

        encoded_decoder = reencoder.Decoder();
        var lazy_shape = S2ShapeUtilCoding.LazyDecodeShape(S2PointVectorShape.kTypeTag, encoded_decoder);

        Assert.Equal(lazy_shape !.GetTypeTag(), S2PointVectorShape.kTypeTag);
    }