- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / bookmarks / bookmark_model_observer_for_cocoa_unittest.mm
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 #import <Cocoa/Cocoa.h>
6
7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.h"
11 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h"
12 #include "chrome/test/base/testing_profile.h"
13
14 namespace {
15
16 class BookmarkModelObserverForCocoaTest : public CocoaProfileTest {
17 };
18
19
20 TEST_F(BookmarkModelObserverForCocoaTest, TestCallback) {
21   BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
22   const BookmarkNode* node = model->AddURL(model->bookmark_bar_node(),
23                                            0, ASCIIToUTF16("super"),
24                                            GURL("http://www.google.com"));
25
26   __block size_t pings = 0U;
27   __block size_t deletions = 0U;
28
29   BookmarkModelObserverForCocoa::ChangeCallback callback =
30       ^(BOOL nodeWasDeleted) {
31           ++pings;
32           if (nodeWasDeleted)
33             ++deletions;
34       };
35
36   scoped_ptr<BookmarkModelObserverForCocoa>
37       observer(new BookmarkModelObserverForCocoa(model,
38                                                  callback));
39   observer->StartObservingNode(node);
40
41   EXPECT_EQ(0U, pings);
42   EXPECT_EQ(0U, deletions);
43
44   model->SetTitle(node, ASCIIToUTF16("duper"));
45   EXPECT_EQ(1U, pings);
46   EXPECT_EQ(0U, deletions);
47
48   model->SetURL(node, GURL("http://www.google.com/reader"));
49   EXPECT_EQ(2U, pings);
50   EXPECT_EQ(0U, deletions);
51
52   model->Move(node, model->other_node(), 0);
53   EXPECT_EQ(3U, pings);
54   EXPECT_EQ(0U, deletions);
55
56   model->Remove(node->parent(), 0);
57   EXPECT_EQ(4U, pings);
58   EXPECT_EQ(1U, deletions);
59 }
60
61 }  // namespace