• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/test/metrics/user_action_tester.h"
6 
7 #include "base/metrics/user_metrics.h"
8 #include "base/metrics/user_metrics_action.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 
11 namespace base {
12 
13 namespace {
14 
15 const char kUserAction1[] = "user.action.1";
16 const char kUserAction2[] = "user.action.2";
17 const char kUserAction3[] = "user.action.3";
18 
19 // Record an action and cause all ActionCallback observers to be notified.
RecordAction(const char user_action[])20 void RecordAction(const char user_action[]) {
21   base::RecordAction(base::UserMetricsAction(user_action));
22 }
23 
24 }  // namespace
25 
26 // Verify user action counts are zero initially.
TEST(UserActionTesterTest,GetActionCountWhenNoActionsHaveBeenRecorded)27 TEST(UserActionTesterTest, GetActionCountWhenNoActionsHaveBeenRecorded) {
28   UserActionTester user_action_tester;
29   EXPECT_EQ(0, user_action_tester.GetActionCount(kUserAction1));
30 }
31 
32 // Verify user action counts are tracked properly.
TEST(UserActionTesterTest,GetActionCountWhenActionsHaveBeenRecorded)33 TEST(UserActionTesterTest, GetActionCountWhenActionsHaveBeenRecorded) {
34   UserActionTester user_action_tester;
35 
36   RecordAction(kUserAction1);
37   RecordAction(kUserAction2);
38   RecordAction(kUserAction2);
39 
40   EXPECT_EQ(1, user_action_tester.GetActionCount(kUserAction1));
41   EXPECT_EQ(2, user_action_tester.GetActionCount(kUserAction2));
42   EXPECT_EQ(0, user_action_tester.GetActionCount(kUserAction3));
43 }
44 
45 // Verify no seg faults occur when resetting action counts when none have been
46 // recorded.
TEST(UserActionTesterTest,ResetCountsWhenNoActionsHaveBeenRecorded)47 TEST(UserActionTesterTest, ResetCountsWhenNoActionsHaveBeenRecorded) {
48   UserActionTester user_action_tester;
49   user_action_tester.ResetCounts();
50 }
51 
52 // Verify user action counts are set to zero on a ResetCounts.
TEST(UserActionTesterTest,ResetCountsWhenActionsHaveBeenRecorded)53 TEST(UserActionTesterTest, ResetCountsWhenActionsHaveBeenRecorded) {
54   UserActionTester user_action_tester;
55 
56   RecordAction(kUserAction1);
57   RecordAction(kUserAction1);
58   RecordAction(kUserAction2);
59   user_action_tester.ResetCounts();
60 
61   EXPECT_EQ(0, user_action_tester.GetActionCount(kUserAction1));
62   EXPECT_EQ(0, user_action_tester.GetActionCount(kUserAction2));
63   EXPECT_EQ(0, user_action_tester.GetActionCount(kUserAction3));
64 }
65 
66 // Verify the UserActionsTester is notified when base::RecordAction is called.
TEST(UserActionTesterTest,VerifyUserActionTesterListensForUserActions)67 TEST(UserActionTesterTest, VerifyUserActionTesterListensForUserActions) {
68   UserActionTester user_action_tester;
69 
70   base::RecordAction(base::UserMetricsAction(kUserAction1));
71 
72   EXPECT_EQ(1, user_action_tester.GetActionCount(kUserAction1));
73 }
74 
75 // Verify the UserActionsTester is notified when base::RecordComputedAction is
76 // called.
TEST(UserActionTesterTest,VerifyUserActionTesterListensForComputedUserActions)77 TEST(UserActionTesterTest,
78      VerifyUserActionTesterListensForComputedUserActions) {
79   UserActionTester user_action_tester;
80 
81   base::RecordComputedAction(kUserAction1);
82 
83   EXPECT_EQ(1, user_action_tester.GetActionCount(kUserAction1));
84 }
85 
86 }  // namespace base
87