1// Copyright (c) 2012 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 "sync/sessions/sync_session.h"
6#include "sync/test/engine/test_id_factory.h"
7#include "testing/gtest/include/gtest/gtest.h"
8
9namespace syncer {
10namespace sessions {
11
12class StatusControllerTest : public testing::Test { };
13
14// This test is useful, as simple as it sounds, due to the copy-paste prone
15// nature of status_controller.cc (we have had bugs in the past where a set_foo
16// method was actually setting |bar_| instead!).
17TEST_F(StatusControllerTest, ReadYourWrites) {
18  StatusController status;
19
20  status.set_last_download_updates_result(SYNCER_OK);
21  EXPECT_EQ(SYNCER_OK,
22            status.model_neutral_state().last_download_updates_result);
23
24  status.set_commit_result(SYNC_AUTH_ERROR);
25  EXPECT_EQ(SYNC_AUTH_ERROR, status.model_neutral_state().commit_result);
26
27  for (int i = 0; i < 14; i++)
28    status.increment_num_successful_commits();
29  EXPECT_EQ(14, status.model_neutral_state().num_successful_commits);
30}
31
32// Test TotalNumConflictingItems
33TEST_F(StatusControllerTest, TotalNumConflictingItems) {
34  StatusController status;
35  EXPECT_EQ(0, status.TotalNumConflictingItems());
36
37  status.increment_num_server_conflicts();
38  status.increment_num_hierarchy_conflicts_by(3);
39  status.increment_num_encryption_conflicts_by(2);
40  EXPECT_EQ(6, status.TotalNumConflictingItems());
41}
42
43}  // namespace sessions
44}  // namespace syncer
45