Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync / test / integration / two_client_dictionary_sync_test.cc
1 // Copyright (c) 2011 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/strings/string_number_conversions.h"
6 #include "chrome/browser/sync/test/integration/dictionary_helper.h"
7 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
8 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h"
9 #include "chrome/browser/sync/test/integration/sync_test.h"
10 #include "chrome/common/spellcheck_common.h"
11
12 using sync_integration_test_util::AwaitCommitActivityCompletion;
13
14 class TwoClientDictionarySyncTest : public SyncTest {
15  public:
16   TwoClientDictionarySyncTest() : SyncTest(TWO_CLIENT) {}
17   virtual ~TwoClientDictionarySyncTest() {}
18
19  private:
20   DISALLOW_COPY_AND_ASSIGN(TwoClientDictionarySyncTest);
21 };
22
23 IN_PROC_BROWSER_TEST_F(TwoClientDictionarySyncTest, Sanity) {
24   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
25   dictionary_helper::LoadDictionaries();
26   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
27
28   std::vector<std::string> words;
29   words.push_back("foo");
30   words.push_back("bar");
31   ASSERT_EQ(num_clients(), static_cast<int>(words.size()));
32
33   for (int i = 0; i < num_clients(); ++i) {
34     ASSERT_TRUE(dictionary_helper::AddWord(i, words[i]));
35   }
36   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
37   ASSERT_EQ(words.size(), dictionary_helper::GetDictionarySize(0));
38
39   for (int i = 0; i < num_clients(); ++i) {
40     ASSERT_TRUE(dictionary_helper::RemoveWord(i, words[i]));
41   }
42   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
43   ASSERT_EQ(0UL, dictionary_helper::GetDictionarySize(0));
44
45   DisableVerifier();
46   for (int i = 0; i < num_clients(); ++i)
47     ASSERT_TRUE(dictionary_helper::AddWord(i, words[i]));
48   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
49   ASSERT_EQ(words.size(), dictionary_helper::GetDictionarySize(0));
50 }
51
52 IN_PROC_BROWSER_TEST_F(TwoClientDictionarySyncTest, SimultaneousAdd) {
53   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
54   dictionary_helper::LoadDictionaries();
55   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
56
57   for (int i = 0; i < num_clients(); ++i)
58     dictionary_helper::AddWord(i, "foo");
59   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
60   ASSERT_EQ(1UL, dictionary_helper::GetDictionarySize(0));
61 }
62
63 IN_PROC_BROWSER_TEST_F(TwoClientDictionarySyncTest, SimultaneousRemove) {
64   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
65   dictionary_helper::LoadDictionaries();
66   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
67
68   for (int i = 0; i < num_clients(); ++i)
69     dictionary_helper::AddWord(i, "foo");
70   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
71   ASSERT_EQ(1UL, dictionary_helper::GetDictionarySize(0));
72
73   for (int i = 0; i < num_clients(); ++i)
74     dictionary_helper::RemoveWord(i, "foo");
75   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
76   ASSERT_EQ(0UL, dictionary_helper::GetDictionarySize(0));
77 }
78
79 IN_PROC_BROWSER_TEST_F(TwoClientDictionarySyncTest, RemoveOnAAddOnB) {
80   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
81   dictionary_helper::LoadDictionaries();
82   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
83
84   std::string word = "foo";
85   // Add on client A, check it appears on B.
86   ASSERT_TRUE(dictionary_helper::AddWord(0, word));
87   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
88   // Remove on client A, check it disappears on B.
89   ASSERT_TRUE(dictionary_helper::RemoveWord(0, word));
90   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
91   // Add on client B, check it appears on A.
92   ASSERT_TRUE(dictionary_helper::AddWord(1, word));
93   ASSERT_TRUE(dictionary_helper::AwaitDictionariesMatch());
94   ASSERT_EQ(1UL, dictionary_helper::GetDictionarySize(0));
95 }
96