summaryrefslogtreecommitdiff
path: root/src/pkg/netchan/netchan_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/netchan/netchan_test.go')
-rw-r--r--src/pkg/netchan/netchan_test.go71
1 files changed, 58 insertions, 13 deletions
diff --git a/src/pkg/netchan/netchan_test.go b/src/pkg/netchan/netchan_test.go
index b7fd100cf..cdf709406 100644
--- a/src/pkg/netchan/netchan_test.go
+++ b/src/pkg/netchan/netchan_test.go
@@ -1,4 +1,4 @@
-// Copyright 2009 The Go Authors. All rights reserved.
+// Copyright 2010 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.
@@ -14,37 +14,82 @@ type value struct {
s string
}
+const count = 10
+
func exportSend(exp *Exporter, t *testing.T) {
- c := make(chan value)
- err := exp.Export("name", c, Send)
+ ch := make(chan value)
+ err := exp.Export("exportedSend", ch, Send, new(value))
+ if err != nil {
+ t.Fatal("exportSend:", err)
+ }
+ for i := 0; i < count; i++ {
+ ch <- value{23 + i, "hello"}
+ }
+}
+
+func exportReceive(exp *Exporter, t *testing.T) {
+ ch := make(chan value)
+ err := exp.Export("exportedRecv", ch, Recv, new(value))
if err != nil {
- t.Fatal("export:", err)
+ t.Fatal("exportReceive:", err)
+ }
+ for i := 0; i < count; i++ {
+ v := <-ch
+ fmt.Printf("%v\n", v)
+ if v.i != 45+i || v.s != "hello" {
+ t.Errorf("export Receive: bad value: expected 4%d, hello; got %+v", 45+i, v)
+ }
}
- c <- value{23, "hello"}
}
func importReceive(imp *Importer, t *testing.T) {
ch := make(chan value)
- err := imp.ImportNValues("name", ch, Recv, new(value), 1)
+ err := imp.ImportNValues("exportedSend", ch, Recv, new(value), count)
if err != nil {
- t.Fatal("import:", err)
+ t.Fatal("importReceive:", 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)
+ for i := 0; i < count; i++ {
+ v := <-ch
+ fmt.Printf("%v\n", v)
+ if v.i != 23+i || v.s != "hello" {
+ t.Errorf("importReceive: bad value: expected %d, hello; got %+v", 23+i, v)
+ }
}
}
-func TestBabyStep(t *testing.T) {
+func importSend(imp *Importer, t *testing.T) {
+ ch := make(chan value)
+ err := imp.ImportNValues("exportedRecv", ch, Send, new(value), count)
+ if err != nil {
+ t.Fatal("importSend:", err)
+ }
+ for i := 0; i < count; i++ {
+ ch <- value{45 + i, "hello"}
+ }
+}
+
+func TestExportSendImportReceive(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)
}
+ go exportSend(exp, t)
importReceive(imp, t)
}
+
+func TestExportReceiveImportSend(t *testing.T) {
+ exp, err := NewExporter("tcp", ":0")
+ if err != nil {
+ t.Fatal("new exporter:", err)
+ }
+ imp, err := NewImporter("tcp", exp.Addr().String())
+ if err != nil {
+ t.Fatal("new importer:", err)
+ }
+ go importSend(imp, t)
+ exportReceive(exp, t)
+}