5849898283
Unit tests functional and coverage back to 100% Add more routes to dictionary, add more credentials, add default port 5554, rename cameradar logs ENV variable, improve unit test readability, remove tmp file
102 lines
3.2 KiB
Go
102 lines
3.2 KiB
Go
// Copyright (c) 2013-2016 Dave Collins <dave@davec.name>
|
|
|
|
// Permission to use, copy, modify, and distribute this software for any
|
|
// purpose with or without fee is hereby granted, provided that the above
|
|
// copyright notice and this permission notice appear in all copies.
|
|
|
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
// NOTE: Due to the following build constraints, this file will only be compiled
|
|
// when the code is not running on Google App Engine, compiled by GopherJS, and
|
|
// "-tags safe" is not added to the go build command line. The "disableunsafe"
|
|
// tag is deprecated and thus should not be used.
|
|
// +build !js,!appengine,!safe,!disableunsafe,go1.4
|
|
|
|
/*
|
|
This test file is part of the spew package rather than than the spew_test
|
|
package because it needs access to internals to properly test certain cases
|
|
which are not possible via the public interface since they should never happen.
|
|
*/
|
|
|
|
package spew
|
|
|
|
import (
|
|
"bytes"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
// changeKind uses unsafe to intentionally change the kind of a reflect.Value to
|
|
// the maximum kind value which does not exist. This is needed to test the
|
|
// fallback code which punts to the standard fmt library for new types that
|
|
// might get added to the language.
|
|
func changeKind(v *reflect.Value, readOnly bool) {
|
|
flags := flagField(v)
|
|
if readOnly {
|
|
*flags |= flagRO
|
|
} else {
|
|
*flags &^= flagRO
|
|
}
|
|
*flags |= flagKindMask
|
|
}
|
|
|
|
// TestAddedReflectValue tests functionaly of the dump and formatter code which
|
|
// falls back to the standard fmt library for new types that might get added to
|
|
// the language.
|
|
func TestAddedReflectValue(t *testing.T) {
|
|
i := 1
|
|
|
|
// Dump using a reflect.Value that is exported.
|
|
v := reflect.ValueOf(int8(5))
|
|
changeKind(&v, false)
|
|
buf := new(bytes.Buffer)
|
|
d := dumpState{w: buf, cs: &Config}
|
|
d.dump(v)
|
|
s := buf.String()
|
|
want := "(int8) 5"
|
|
if s != want {
|
|
t.Errorf("TestAddedReflectValue #%d\n got: %s want: %s", i, s, want)
|
|
}
|
|
i++
|
|
|
|
// Dump using a reflect.Value that is not exported.
|
|
changeKind(&v, true)
|
|
buf.Reset()
|
|
d.dump(v)
|
|
s = buf.String()
|
|
want = "(int8) <int8 Value>"
|
|
if s != want {
|
|
t.Errorf("TestAddedReflectValue #%d\n got: %s want: %s", i, s, want)
|
|
}
|
|
i++
|
|
|
|
// Formatter using a reflect.Value that is exported.
|
|
changeKind(&v, false)
|
|
buf2 := new(dummyFmtState)
|
|
f := formatState{value: v, cs: &Config, fs: buf2}
|
|
f.format(v)
|
|
s = buf2.String()
|
|
want = "5"
|
|
if s != want {
|
|
t.Errorf("TestAddedReflectValue #%d got: %s want: %s", i, s, want)
|
|
}
|
|
i++
|
|
|
|
// Formatter using a reflect.Value that is not exported.
|
|
changeKind(&v, true)
|
|
buf2.Reset()
|
|
f = formatState{value: v, cs: &Config, fs: buf2}
|
|
f.format(v)
|
|
s = buf2.String()
|
|
want = "<int8 Value>"
|
|
if s != want {
|
|
t.Errorf("TestAddedReflectValue #%d got: %s want: %s", i, s, want)
|
|
}
|
|
}
|