// Copyright 2014 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 http2 import ( "testing" ) func TestPriority(t *testing.T) { // A -> B // move A's parent to B streams := make(map[uint32]*stream) a := &stream{ parent: nil, weight: 16, } streams[1] = a b := &stream{ parent: a, weight: 16, } streams[2] = b adjustStreamPriority(streams, 1, PriorityParam{ Weight: 20, StreamDep: 2, }) if a.parent != b { t.Errorf("Expected A's parent to be B") } if a.weight != 20 { t.Errorf("Expected A's weight to be 20; got %d", a.weight) } if b.parent != nil { t.Errorf("Expected B to have no parent") } if b.weight != 16 { t.Errorf("Expected B's weight to be 16; got %d", b.weight) } } func TestPriorityExclusiveZero(t *testing.T) { // A B and C are all children of the 0 stream. // Exclusive reprioritization to any of the streams // should bring the rest of the streams under the // reprioritized stream streams := make(map[uint32]*stream) a := &stream{ parent: nil, weight: 16, } streams[1] = a b := &stream{ parent: nil, weight: 16, } streams[2] = b c := &stream{ parent: nil, weight: 16, } streams[3] = c adjustStreamPriority(streams, 3, PriorityParam{ Weight: 20, StreamDep: 0, Exclusive: true, }) if a.parent != c { t.Errorf("Expected A's parent to be C") } if a.weight != 16 { t.Errorf("Expected A's weight to be 16; got %d", a.weight) } if b.parent != c { t.Errorf("Expected B's parent to be C") } if b.weight != 16 { t.Errorf("Expected B's weight to be 16; got %d", b.weight) } if c.parent != nil { t.Errorf("Expected C to have no parent") } if c.weight != 20 { t.Errorf("Expected C's weight to be 20; got %d", b.weight) } } func TestPriorityOwnParent(t *testing.T) { streams := make(map[uint32]*stream) a := &stream{ parent: nil, weight: 16, } streams[1] = a b := &stream{ parent: a, weight: 16, } streams[2] = b adjustStreamPriority(streams, 1, PriorityParam{ Weight: 20, StreamDep: 1, }) if a.parent != nil { t.Errorf("Expected A's parent to be nil") } if a.weight != 20 { t.Errorf("Expected A's weight to be 20; got %d", a.weight) } if b.parent != a { t.Errorf("Expected B's parent to be A") } if b.weight != 16 { t.Errorf("Expected B's weight to be 16; got %d", b.weight) } }