| // Copyright 2018 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 source |
| |
| import ( |
| "testing" |
| ) |
| |
| // TestURI tests the conversion between URIs and filenames. The test cases |
| // include Windows-style URIs and filepaths, but we avoid having OS-specific |
| // tests by using only forward slashes, assuming that the standard library |
| // functions filepath.ToSlash and filepath.FromSlash do not need testing. |
| func TestURI(t *testing.T) { |
| for _, tt := range []struct { |
| uri URI |
| filename string |
| }{ |
| { |
| uri: URI(`file:///C:/Windows/System32`), |
| filename: `C:/Windows/System32`, |
| }, |
| { |
| uri: URI(`file:///C:/Go/src/bob.go`), |
| filename: `C:/Go/src/bob.go`, |
| }, |
| { |
| uri: URI(`file:///c:/Go/src/bob.go`), |
| filename: `c:/Go/src/bob.go`, |
| }, |
| { |
| uri: URI(`file:///path/to/dir`), |
| filename: `/path/to/dir`, |
| }, |
| { |
| uri: URI(`file:///a/b/c/src/bob.go`), |
| filename: `/a/b/c/src/bob.go`, |
| }, |
| } { |
| if string(tt.uri) != toURI(tt.filename).String() { |
| t.Errorf("ToURI: expected %s, got %s", tt.uri, ToURI(tt.filename)) |
| } |
| filename, err := filename(tt.uri) |
| if err != nil { |
| t.Fatal(err) |
| } |
| if tt.filename != filename { |
| t.Errorf("Filename: expected %s, got %s", tt.filename, filename) |
| } |
| } |
| } |