blob: b7fd100cf5eb74a9c87c6e793a3c37fc74bf2221 [file] [log] [blame]
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package netchan
import (
"fmt"
"testing"
)
type value struct {
i int
s string
}
func exportSend(exp *Exporter, t *testing.T) {
c := make(chan value)
err := exp.Export("name", c, Send)
if err != nil {
t.Fatal("export:", err)
}
c <- value{23, "hello"}
}
func importReceive(imp *Importer, t *testing.T) {
ch := make(chan value)
err := imp.ImportNValues("name", ch, Recv, new(value), 1)
if err != nil {
t.Fatal("import:", err)
}
v := <-ch
fmt.Printf("%v\n", v)
if v.i != 23 || v.s != "hello" {
t.Errorf("bad value: expected 23, hello; got %+v\n", v)
}
}
func TestBabyStep(t *testing.T) {
exp, err := NewExporter("tcp", ":0")
if err != nil {
t.Fatal("new exporter:", err)
}
go exportSend(exp, t)
imp, err := NewImporter("tcp", exp.Addr().String())
if err != nil {
t.Fatal("new importer:", err)
}
importReceive(imp, t)
}