From fb1312f19cad5e4ebfb6b42d3bdbc66cfcd3de22 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Sun, 30 Aug 2009 19:46:35 -0700 Subject: can't encode array or slice - catch in sendType rather than failing in Encode R=rsc DELTA=38 (33 added, 3 deleted, 2 changed) OCL=34101 CL=34104 --- src/pkg/gob/encoder_test.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/pkg/gob/encoder_test.go') diff --git a/src/pkg/gob/encoder_test.go b/src/pkg/gob/encoder_test.go index 534816fc8..4cad834d0 100644 --- a/src/pkg/gob/encoder_test.go +++ b/src/pkg/gob/encoder_test.go @@ -243,3 +243,25 @@ func TestBadData(t *testing.T) { corruptDataCheck("\x7Fhi", io.ErrUnexpectedEOF, t); corruptDataCheck("\x03now is the time for all good men", errBadType, t); } + +// Types not supported by the Encoder (only structs work at the top level). +// Basic types work implicitly. +var unsupportedValues = []interface{} { + []int{ 1, 2, 3 }, + [3]int{ 1, 2, 3 }, + make(chan int), + func(a int) bool { return true }, + make(map[string] int), + new(interface{}), +} + +func TestUnsupported(t *testing.T) { + var b bytes.Buffer; + enc := NewEncoder(&b); + for _, v := range unsupportedValues { + err := enc.Encode(v); + if err == nil { + t.Errorf("expected error for %T; got none", v) + } + } +} -- cgit v1.2.3