- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / tests / test_mouse_cursor.cc
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 "ppapi/tests/test_mouse_cursor.h"
6
7 #include "ppapi/cpp/image_data.h"
8 #include "ppapi/tests/test_case.h"
9 #include "ppapi/tests/testing_instance.h"
10
11 REGISTER_TEST_CASE(MouseCursor);
12
13 TestMouseCursor::TestMouseCursor(TestingInstance* instance)
14     : TestCase(instance) {
15 }
16
17 bool TestMouseCursor::Init() {
18   mouse_cursor_interface_ = static_cast<const PPB_MouseCursor*>(
19       pp::Module::Get()->GetBrowserInterface(PPB_MOUSECURSOR_INTERFACE));
20   return !!mouse_cursor_interface_;
21 }
22
23 void TestMouseCursor::RunTests(const std::string& filter) {
24   RUN_TEST(Type, filter);
25   RUN_TEST(Custom, filter);
26   RUN_TEST(Point, filter);
27 }
28
29 std::string TestMouseCursor::TestType() {
30   ASSERT_TRUE(PP_ToBool(mouse_cursor_interface_->SetCursor(
31       instance_->pp_instance(), PP_MOUSECURSOR_TYPE_POINTER, 0, NULL)));
32   ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor(
33       instance_->pp_instance(), static_cast<PP_MouseCursor_Type>(-2),
34       0, NULL)));
35   PASS();
36 }
37
38 std::string TestMouseCursor::TestCustom() {
39   // First test a valid image.
40   pp::ImageData valid_image(instance_,
41                             pp::ImageData::GetNativeImageDataFormat(),
42                             pp::Size(16, 16), true);
43   PP_Point point = { 0, 0 };
44   ASSERT_TRUE(PP_ToBool(mouse_cursor_interface_->SetCursor(
45       instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM,
46       valid_image.pp_resource(), &point)));
47
48   // 0 image resource ID.
49   ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor(
50       instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM, 0, NULL)));
51
52   // Image specified for predefined type.
53   ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor(
54       instance_->pp_instance(), PP_MOUSECURSOR_TYPE_POINTER,
55       valid_image.pp_resource(), &point)));
56
57   // A too-big image.
58   pp::ImageData big_image(instance_, pp::ImageData::GetNativeImageDataFormat(),
59                             pp::Size(65, 12), true);
60   ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor(
61       instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM,
62       big_image.pp_resource(), &point)));
63
64   PASS();
65 }
66
67 std::string TestMouseCursor::TestPoint() {
68   pp::ImageData valid_image(instance_,
69                             pp::ImageData::GetNativeImageDataFormat(),
70                             pp::Size(16, 16), true);
71   PP_Point point = { -1, 0 };
72   ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor(
73       instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM,
74       valid_image.pp_resource(), &point)));
75
76   point.x = 67;
77   point.y = 5;
78   ASSERT_FALSE(PP_ToBool(mouse_cursor_interface_->SetCursor(
79       instance_->pp_instance(), PP_MOUSECURSOR_TYPE_CUSTOM,
80       valid_image.pp_resource(), &point)));
81   PASS();
82 }