375
// Test that we can use a value then a pointer type of a GobEncoder
376
// in the same encoded value. Bug 4647.
377
func TestGobEncoderValueThenPointer(t *testing.T) {
378
v := ValueGobber("forty-two")
379
w := ValueGobber("six-by-nine")
381
// this was a bug: encoding a GobEncoder by value before a GobEncoder
382
// pointer would cause duplicate type definitions to be sent.
384
b := new(bytes.Buffer)
386
if err := enc.Encode(GobTest6{42, v, &w}); err != nil {
387
t.Fatal("encode error:", err)
391
if err := dec.Decode(x); err != nil {
392
t.Fatal("decode error:", err)
394
if got, want := x.V, v; got != want {
395
t.Errorf("v = %q, want %q", got, want)
397
if got, want := x.W, w; got == nil {
398
t.Errorf("w = nil, want %q", want)
399
} else if *got != want {
400
t.Errorf("w = %q, want %q", *got, want)
404
// Test that we can use a pointer then a value type of a GobEncoder
405
// in the same encoded value.
406
func TestGobEncoderPointerThenValue(t *testing.T) {
407
v := ValueGobber("forty-two")
408
w := ValueGobber("six-by-nine")
410
b := new(bytes.Buffer)
412
if err := enc.Encode(GobTest7{42, &v, w}); err != nil {
413
t.Fatal("encode error:", err)
417
if err := dec.Decode(x); err != nil {
418
t.Fatal("decode error:", err)
420
if got, want := x.V, v; got == nil {
421
t.Errorf("v = nil, want %q", want)
422
} else if *got != want {
423
t.Errorf("v = %q, want %q", got, want)
425
if got, want := x.W, w; got != want {
426
t.Errorf("w = %q, want %q", got, want)
363
430
func TestGobEncoderFieldTypeError(t *testing.T) {
364
431
// GobEncoder to non-decoder: error
365
432
b := new(bytes.Buffer)