diff options
Diffstat (limited to 'sd_daemon/log_test.go')
-rw-r--r-- | sd_daemon/log_test.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/sd_daemon/log_test.go b/sd_daemon/log_test.go new file mode 100644 index 0000000..e2fdef9 --- /dev/null +++ b/sd_daemon/log_test.go @@ -0,0 +1,71 @@ +// Copyright 2016 Luke Shumaker +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sd_daemon + +import ( + "log/syslog" + "testing" +) + +type cbWriter func(p []byte) (n int, err error) + +func (cb cbWriter) Write(p []byte) (n int, err error) { + return cb(p) +} + +func TestLog(t *testing.T) { + var written []byte + log := NewLogger(cbWriter(func(p []byte) (n int, err error) { + written = p + return len(p), nil + })) + + type testcase struct { + level syslog.Priority + msg string + } + + testcases := map[testcase]string{ + testcase{6, "foo"}: "<6>foo\n", + testcase{6, "foo\n"}: "<6>foo\n", + testcase{6, "foo\nbar"}: "<6>foo\n<6>bar\n", + testcase{6, "foo\nbar\n"}: "<6>foo\n<6>bar\n", + testcase{6, "foo\nbar\nbaz"}: "<6>foo\n<6>bar\n<6>baz\n", + testcase{6, "foo\nbar\nbaz\n"}: "<6>foo\n<6>bar\n<6>baz\n", + + testcase{0, "foo"}: "<0>foo\n", + testcase{1, "foo"}: "<1>foo\n", + testcase{10, "foo"}: "<10>foo\n", + } + + for in, out := range testcases { + written = nil + n, err := log.WriteString(in.level, in.msg) + if n != len(out) || string(written) != out || err != nil { + t.Errorf("WriteString(%#v, %#v)\n -> expected:{%#v, %#v, %#v}\n -> got:{%#v, %#v, %#v}\n", + in.level, in.msg, + len(out), nil, out, + n, err, string(written)) + } + written = nil + n, err = log.WriteBytes(in.level, []byte(in.msg)) + if n != len(out) || string(written) != out || err != nil { + t.Errorf("WriteBytes(%#v, %#v)\n -> expected:{%#v, %#v, %#v}\n -> got:{%#v, %#v, %#v}\n", + in.level, in.msg, + len(out), nil, out, + n, err, string(written)) + } + } +} |