blob: 468e2c67084bb7220ab8cea06697e4cffa9eb362 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* 'License'); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package tests
import (
"context"
"testing"
"testing/quick"
"github.com/apache/thrift/lib/go/test/gopath/src/thrifttest"
"github.com/apache/thrift/lib/go/thrift"
)
func TestDeserializerPoolJSONProtocol(t *testing.T) {
ctx := context.Background()
serializerPool := thrift.NewTSerializerPoolSizeFactory(1024, thrift.NewTJSONProtocolFactory())
msg := &thrifttest.Bonk{
Message: "foo",
Type: 42,
}
valid, err := serializerPool.WriteString(ctx, msg)
if err != nil {
t.Fatal(err)
}
invalid := valid[:len(valid)-2]
deserializerPool := thrift.NewTDeserializerPoolSizeFactory(1024, thrift.NewTJSONProtocolFactory())
msg = new(thrifttest.Bonk)
if err := deserializerPool.ReadString(ctx, msg, invalid); err == nil {
t.Fatalf("Deserializing %q did not fail", invalid)
}
f := func() bool {
msg := new(thrifttest.Bonk)
if err := deserializerPool.ReadString(ctx, msg, valid); err != nil {
t.Errorf("Deserializing string %q failed with %v", valid, err)
}
if err := deserializerPool.Read(ctx, msg, []byte(valid)); err != nil {
t.Errorf("Deserializing bytes %q failed with %v", valid, err)
}
return !t.Failed()
}
if err := quick.Check(f, nil); err != nil {
t.Error(err)
}
}