Beispiel #1
0
func (c *codec) Encoder(w io.Writer) mc.Encoder {
	return &encoder{
		w:   w,
		mc:  c.mc,
		enc: cbor.NewEncoder(w),
	}
}
func RoundTripTest(t *testing.T, o1, o2 interface{}) bool {
	var buf1 bytes.Buffer
	var buf2 bytes.Buffer
	var buf3 bytes.Buffer
	enc1 := cbor.NewEncoder(&buf1)
	enc2 := cbor.NewEncoder(&buf2)
	dec := cbor.NewDecoder(&buf3)

	if err := enc1.Encode(o1); err != nil {
		t.Error(err)
		return false
	}

	m1 := buf1.Bytes()
	if _, err := buf3.Write(m1); err != nil {
		t.Error(err)
		return false
	}

	if err := dec.Decode(o2); err != nil {
		t.Error(err)
		return false
	}

	if err := enc2.Encode(o2); err != nil {
		t.Error(err)
		return false
	}

	m2 := buf2.Bytes()
	if !bytes.Equal(m1, m2) {
		t.Error("marshalled values not equal")
		t.Log(m1)
		t.Log(m2)
		t.Log(string(m1))
		t.Log(string(m2))
		return false
	}

	return true
}
Beispiel #3
0
func main() {
	in := flag.String("i", "-", "JSON file")
	out := flag.String("o", "-", "CBOR file")
	flag.Parse()

	var i io.ReadCloser
	var o io.WriteCloser
	var err error
	var object interface{}

	if *in == "-" {
		i = os.Stdin
	} else {
		i, err = os.Open(*in)
		if err != nil {
			log.Fatal(err)
		}
		defer i.Close()
	}

	if *out == "-" {
		o = os.Stdout
	} else {
		o, err = os.Open(*out)
		if err != nil {
			log.Fatal(err)
		}
		defer o.Close()
	}

	err = json.NewDecoder(i).Decode(&object)
	if err != nil {
		log.Fatal(err)
	}

	err = cbor.NewEncoder(o).Encode(object)
	if err != nil {
		log.Fatal(err)
	}
}