github.com/derat/nup@v0.0.0-20230418113745-15592ba7c620/server/song_test.go (about)

     1  // Copyright 2021 Daniel Erat.
     2  // All rights reserved.
     3  
     4  package main
     5  
     6  import "testing"
     7  
     8  func TestParseRangeHeader(t *testing.T) {
     9  	for _, tc := range []struct {
    10  		head       string
    11  		start, end int64
    12  		ok         bool
    13  	}{
    14  		{"", 0, -1, true},                        // empty header
    15  		{"bytes=0-", 0, -1, true},                // open end with zero start
    16  		{"bytes=123-", 123, -1, true},            // open end with nonzero start
    17  		{"bytes=0-123", 0, 123, true},            // zero start and nonzero end
    18  		{"bytes=123-456", 123, 456, true},        // nonzero start and end
    19  		{"bytes=123-456, 789-1234", 0, 0, false}, // multiple ranges unsupported
    20  		{"bytes=-456", 0, 0, false},              // suffix unsupported
    21  	} {
    22  		if start, end, ok := parseRangeHeader(tc.head); start != tc.start || end != tc.end || ok != tc.ok {
    23  			t.Errorf("parseRangeHeader(%q) = (%v, %v, %v); want (%v, %v, %v)",
    24  				tc.head, start, end, ok, tc.start, tc.end, tc.ok)
    25  		}
    26  	}
    27  }