| // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "dumper.h" |
| |
| #include <gtest/gtest.h> |
| #include <syslog.h> |
| |
| namespace { |
| |
| TEST(DumperTest, SyslogDumper) { |
| struct dumper* dumper = syslog_dumper_create(LOG_ERR); |
| dumpf(dumper, "hello %d", 1); |
| dumpf(dumper, "world %d\n123", 2); |
| dumpf(dumper, "456\n"); |
| // The following should appear in syslog: |
| // dumper_unittest: hello 1world 2 |
| // dumper_unittest: 123456 |
| syslog_dumper_free(dumper); |
| } |
| |
| TEST(DumperTest, MemDumper) { |
| struct dumper* dumper = mem_dumper_create(); |
| char* buf; |
| int size, i; |
| |
| mem_dumper_get(dumper, &buf, &size); |
| EXPECT_STREQ("", buf); |
| |
| dumpf(dumper, "hello %d\n", 1); |
| mem_dumper_get(dumper, &buf, &size); |
| EXPECT_STREQ("hello 1\n", buf); |
| EXPECT_EQ(8, size); |
| |
| dumpf(dumper, "world %d", 2); |
| mem_dumper_get(dumper, &buf, &size); |
| EXPECT_STREQ("hello 1\nworld 2", buf); |
| EXPECT_EQ(15, size); |
| |
| mem_dumper_clear(dumper); |
| mem_dumper_get(dumper, &buf, &size); |
| EXPECT_STREQ("", buf); |
| EXPECT_EQ(0, size); |
| |
| for (i = 0; i < 1000; i++) { |
| dumpf(dumper, "a"); |
| } |
| mem_dumper_get(dumper, &buf, &size); |
| EXPECT_EQ(1000, strlen(buf)); |
| EXPECT_EQ(1000, 1000); |
| |
| mem_dumper_free(dumper); |
| } |
| |
| } // namespace |
| |
| int main(int argc, char** argv) { |
| ::testing::InitGoogleTest(&argc, argv); |
| return RUN_ALL_TESTS(); |
| } |