blob: dbb656f8e5526e536283c533467d8884b50075f5 [file] [log] [blame]
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -08001// Copyright 2014 The Go Authors.
2// See https://code.google.com/p/go/source/browse/CONTRIBUTORS
3// Licensed under the same terms as Go itself:
4// https://code.google.com/p/go/source/browse/LICENSE
5
6package http2
7
Brad Fitzpatrick2b459472014-11-30 19:18:57 -08008import "testing"
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -08009
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -080010func TestFlow(t *testing.T) {
Brad Fitzpatrick2b459472014-11-30 19:18:57 -080011 var st flow
12 var conn flow
13 st.add(3)
14 conn.add(2)
15
16 if got, want := st.available(), int32(3); got != want {
17 t.Errorf("available = %d; want %d", got, want)
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -080018 }
Brad Fitzpatrick2b459472014-11-30 19:18:57 -080019 st.setConnFlow(&conn)
20 if got, want := st.available(), int32(2); got != want {
21 t.Errorf("after parent setup, available = %d; want %d", got, want)
Brad Fitzpatrick4c687c62014-11-23 00:07:43 -080022 }
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -080023
Brad Fitzpatrick2b459472014-11-30 19:18:57 -080024 st.take(2)
25 if got, want := conn.available(), int32(0); got != want {
26 t.Errorf("after taking 2, conn = %d; want %d", got, want)
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -080027 }
Brad Fitzpatrick2b459472014-11-30 19:18:57 -080028 if got, want := st.available(), int32(0); got != want {
29 t.Errorf("after taking 2, stream = %d; want %d", got, want)
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -080030 }
31}
32
33func TestFlowAdd(t *testing.T) {
Brad Fitzpatrick2b459472014-11-30 19:18:57 -080034 var f flow
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -080035 if !f.add(1) {
36 t.Fatal("failed to add 1")
37 }
38 if !f.add(-1) {
39 t.Fatal("failed to add -1")
40 }
Brad Fitzpatrick2b459472014-11-30 19:18:57 -080041 if got, want := f.available(), int32(0); got != want {
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -080042 t.Fatalf("size = %d; want %d", got, want)
43 }
44 if !f.add(1<<31 - 1) {
45 t.Fatal("failed to add 2^31-1")
46 }
Brad Fitzpatrick2b459472014-11-30 19:18:57 -080047 if got, want := f.available(), int32(1<<31-1); got != want {
Brad Fitzpatrick03abeab2014-11-11 11:55:55 -080048 t.Fatalf("size = %d; want %d", got, want)
49 }
50 if f.add(1) {
51 t.Fatal("adding 1 to max shouldn't be allowed")
52 }
53
54}