OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [net/] [http/] [responsewrite_test.go] - Rev 848

Go to most recent revision | Compare with Previous | Blame | View Log

// 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.

package http

import (
        "bytes"
        "io/ioutil"
        "testing"
)

type respWriteTest struct {
        Resp Response
        Raw  string
}

var respWriteTests = []respWriteTest{
        // HTTP/1.0, identity coding; no trailer
        {
                Response{
                        StatusCode:    503,
                        ProtoMajor:    1,
                        ProtoMinor:    0,
                        Request:       dummyReq("GET"),
                        Header:        Header{},
                        Body:          ioutil.NopCloser(bytes.NewBufferString("abcdef")),
                        ContentLength: 6,
                },

                "HTTP/1.0 503 Service Unavailable\r\n" +
                        "Content-Length: 6\r\n\r\n" +
                        "abcdef",
        },
        // Unchunked response without Content-Length.
        {
                Response{
                        StatusCode:    200,
                        ProtoMajor:    1,
                        ProtoMinor:    0,
                        Request:       dummyReq("GET"),
                        Header:        Header{},
                        Body:          ioutil.NopCloser(bytes.NewBufferString("abcdef")),
                        ContentLength: -1,
                },
                "HTTP/1.0 200 OK\r\n" +
                        "\r\n" +
                        "abcdef",
        },
        // HTTP/1.1, chunked coding; empty trailer; close
        {
                Response{
                        StatusCode:       200,
                        ProtoMajor:       1,
                        ProtoMinor:       1,
                        Request:          dummyReq("GET"),
                        Header:           Header{},
                        Body:             ioutil.NopCloser(bytes.NewBufferString("abcdef")),
                        ContentLength:    6,
                        TransferEncoding: []string{"chunked"},
                        Close:            true,
                },

                "HTTP/1.1 200 OK\r\n" +
                        "Connection: close\r\n" +
                        "Transfer-Encoding: chunked\r\n\r\n" +
                        "6\r\nabcdef\r\n0\r\n\r\n",
        },

        // Header value with a newline character (Issue 914).
        // Also tests removal of leading and trailing whitespace.
        {
                Response{
                        StatusCode: 204,
                        ProtoMajor: 1,
                        ProtoMinor: 1,
                        Request:    dummyReq("GET"),
                        Header: Header{
                                "Foo": []string{" Bar\nBaz "},
                        },
                        Body:             nil,
                        ContentLength:    0,
                        TransferEncoding: []string{"chunked"},
                        Close:            true,
                },

                "HTTP/1.1 204 No Content\r\n" +
                        "Connection: close\r\n" +
                        "Foo: Bar Baz\r\n" +
                        "\r\n",
        },
}

func TestResponseWrite(t *testing.T) {
        for i := range respWriteTests {
                tt := &respWriteTests[i]
                var braw bytes.Buffer
                err := tt.Resp.Write(&braw)
                if err != nil {
                        t.Errorf("error writing #%d: %s", i, err)
                        continue
                }
                sraw := braw.String()
                if sraw != tt.Raw {
                        t.Errorf("Test %d, expecting:\n%q\nGot:\n%q\n", i, tt.Raw, sraw)
                        continue
                }
        }
}

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.