summaryrefslogtreecommitdiff
path: root/cras/src/tests/dumper_unittest.cc
blob: 7bd1421a85951d84451064401bad1a76bd9da051 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// 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();
}