GoPLS Viewer

Home|gopls/playground/socket/socket_test.go
1// Copyright 2015 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package socket
6
7import (
8    "testing"
9    "time"
10)
11
12func TestBuffer(t *testing.T) {
13    afterChan := make(chan time.Time)
14    ch := make(chan *Message)
15    go func() {
16        ch <- &Message{Kind"err"Body"a"}
17        ch <- &Message{Kind"err"Body"b"}
18        ch <- &Message{Kind"out"Body"1"}
19        ch <- &Message{Kind"out"Body"2"}
20        afterChan <- time.Time{} // value itself doesn't matter
21        ch <- &Message{Kind"out"Body"3"}
22        ch <- &Message{Kind"out"Body"4"}
23        close(ch)
24    }()
25
26    var ms []*Message
27    timeAfter := func(d time.Duration) <-chan time.Time {
28        return afterChan
29    }
30    for m := range buffer(chtimeAfter) {
31        ms = append(msm)
32    }
33    if len(ms) != 3 {
34        t.Fatalf("got %v messages, want 3"len(ms))
35    }
36    if gw := ms[0].Body"ab"g != w {
37        t.Errorf("message 0 body = %q, want %q"gw)
38    }
39    if gw := ms[1].Body"12"g != w {
40        t.Errorf("message 1 body = %q, want %q"gw)
41    }
42    if gw := ms[2].Body"34"g != w {
43        t.Errorf("message 2 body = %q, want %q"gw)
44    }
45}
46
47type killRecorder chan struct{}
48
49func (k killRecorderKill() { close(k) }
50
51func TestLimiter(t *testing.T) {
52    ch := make(chan *Message)
53    go func() {
54        var m Message
55        for i := 0i < msgLimit+10i++ {
56            ch <- &m
57        }
58        ch <- &Message{Kind"end"}
59    }()
60
61    kr := make(killRecorder)
62    n := 0
63    for m := range limiter(chkr) {
64        n++
65        if n > msgLimit && m.Kind != "end" {
66            t.Errorf("received non-end message after limit")
67        }
68    }
69    if n != msgLimit+1 {
70        t.Errorf("received %v messages, want %v"nmsgLimit+1)
71    }
72    <-kr
73}
74
MembersX
TestBuffer.ch
TestBuffer.ms
killRecorder.Kill.k
TestLimiter.t
TestBuffer
killRecorder
killRecorder.Kill
TestLimiter.kr
TestLimiter.n
TestBuffer.t
TestBuffer.afterChan
TestBuffer.g
TestBuffer.w
TestLimiter.ch
TestLimiter.BlockStmt.i
testing
TestBuffer.RangeStmt_734.m
TestLimiter
TestLimiter.BlockStmt.m
TestLimiter.RangeStmt_1431.m
Members
X