summaryrefslogtreecommitdiff
path: root/sd_daemon/log_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'sd_daemon/log_test.go')
-rw-r--r--sd_daemon/log_test.go71
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))
+ }
+ }
+}