Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/xpcom/tests/gtest/TestNSPRLogModulesParser.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#include "NSPRLogModulesParser.h"
8
#include "mozilla/ArrayUtils.h"
9
#include "gtest/gtest.h"
10
11
using namespace mozilla;
12
13
TEST(NSPRLogModulesParser, Empty)
14
0
{
15
0
  bool callbackInvoked = false;
16
0
  auto callback = [&](const char*, mozilla::LogLevel, int32_t) mutable { callbackInvoked = true; };
17
0
18
0
  mozilla::NSPRLogModulesParser(nullptr, callback);
19
0
  EXPECT_FALSE(callbackInvoked);
20
0
21
0
  mozilla::NSPRLogModulesParser("", callback);
22
0
  EXPECT_FALSE(callbackInvoked);
23
0
}
24
25
TEST(NSPRLogModulesParser, DefaultLevel)
26
0
{
27
0
  bool callbackInvoked = false;
28
0
  auto callback =
29
0
      [&](const char* aName, mozilla::LogLevel aLevel, int32_t) {
30
0
        EXPECT_STREQ("Foo", aName);
31
0
        EXPECT_EQ(mozilla::LogLevel::Error, aLevel);
32
0
        callbackInvoked = true;
33
0
      };
34
0
35
0
  mozilla::NSPRLogModulesParser("Foo", callback);
36
0
  EXPECT_TRUE(callbackInvoked);
37
0
38
0
  callbackInvoked = false;
39
0
  mozilla::NSPRLogModulesParser("Foo:", callback);
40
0
  EXPECT_TRUE(callbackInvoked);
41
0
}
42
43
TEST(NSPRLogModulesParser, LevelSpecified)
44
0
{
45
0
  std::pair<const char*, mozilla::LogLevel> expected[] = {
46
0
    { "Foo:0", mozilla::LogLevel::Disabled },
47
0
    { "Foo:1", mozilla::LogLevel::Error },
48
0
    { "Foo:2", mozilla::LogLevel::Warning },
49
0
    { "Foo:3", mozilla::LogLevel::Info },
50
0
    { "Foo:4", mozilla::LogLevel::Debug },
51
0
    { "Foo:5", mozilla::LogLevel::Verbose },
52
0
    { "Foo:25", mozilla::LogLevel::Verbose },  // too high
53
0
    { "Foo:-12", mozilla::LogLevel::Disabled } // too low
54
0
  };
55
0
56
0
  auto* currTest = expected;
57
0
58
0
  for (size_t i = 0; i < MOZ_ARRAY_LENGTH(expected); i++) {
59
0
    bool callbackInvoked = false;
60
0
    mozilla::NSPRLogModulesParser(currTest->first,
61
0
        [&](const char* aName, mozilla::LogLevel aLevel, int32_t) {
62
0
          EXPECT_STREQ("Foo", aName);
63
0
          EXPECT_EQ(currTest->second, aLevel);
64
0
          callbackInvoked = true;
65
0
        });
66
0
    EXPECT_TRUE(callbackInvoked);
67
0
    currTest++;
68
0
  }
69
0
}
70
71
TEST(NSPRLogModulesParser, Multiple)
72
0
{
73
0
  std::pair<const char*, mozilla::LogLevel> expected[] = {
74
0
    { "timestamp", mozilla::LogLevel::Error },
75
0
    { "Foo", mozilla::LogLevel::Info },
76
0
    { "Bar", mozilla::LogLevel::Error },
77
0
    { "Baz", mozilla::LogLevel::Warning },
78
0
    { "Qux", mozilla::LogLevel::Verbose },
79
0
  };
80
0
81
0
  const size_t kExpectedCount = MOZ_ARRAY_LENGTH(expected);
82
0
83
0
  auto* currTest = expected;
84
0
85
0
  size_t count = 0;
86
0
  mozilla::NSPRLogModulesParser("timestamp,Foo:3, Bar,Baz:2,    Qux:5",
87
0
      [&](const char* aName, mozilla::LogLevel aLevel, int32_t) mutable {
88
0
        ASSERT_LT(count, kExpectedCount);
89
0
        EXPECT_STREQ(currTest->first, aName);
90
0
        EXPECT_EQ(currTest->second, aLevel);
91
0
        currTest++;
92
0
        count++;
93
0
     });
94
0
95
0
  EXPECT_EQ(kExpectedCount, count);
96
0
}
97
98
TEST(NSPRLogModulesParser, RawArg)
99
0
{
100
0
  bool callbackInvoked = false;
101
0
  auto callback =
102
0
    [&](const char* aName, mozilla::LogLevel aLevel, int32_t aRawValue) {
103
0
    EXPECT_STREQ("Foo", aName);
104
0
    EXPECT_EQ(mozilla::LogLevel::Verbose, aLevel);
105
0
    EXPECT_EQ(1000, aRawValue);
106
0
    callbackInvoked = true;
107
0
  };
108
0
109
0
  mozilla::NSPRLogModulesParser("Foo:1000", callback);
110
0
  EXPECT_TRUE(callbackInvoked);
111
0
}