blob: 7bf9fa2dd448ccebc4a33ce7af5517d55b567ad7 [file] [log] [blame]
license.botf003cfe2008-08-24 09:55:55 +09001// Copyright (c) 2006-2008 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.
initial.commit3f4a7322008-07-27 06:49:38 +09004
5#include <string>
6
7#include "base/basictypes.h"
8#include "base/clipboard.h"
9#include "base/clipboard_util.h"
10#include "base/string_util.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace {
14 class ClipboardTest : public testing::Test {
15 };
16}
17
18TEST(ClipboardTest, ClearTest) {
19 Clipboard clipboard;
20
21 clipboard.Clear();
22 EXPECT_EQ(false, clipboard.IsFormatAvailable(CF_TEXT));
23 EXPECT_EQ(false, clipboard.IsFormatAvailable(
24 ClipboardUtil::GetHtmlFormat()->cfFormat));
25}
26
27TEST(ClipboardTest, TextTest) {
28 Clipboard clipboard;
29
30 std::wstring text(L"This is a wstring!#$"), text_result;
31 std::string ascii_text;
32
33 clipboard.Clear();
34 clipboard.WriteText(text);
35 EXPECT_EQ(true, clipboard.IsFormatAvailable(CF_UNICODETEXT));
36 EXPECT_EQ(true, clipboard.IsFormatAvailable(CF_TEXT));
37 clipboard.ReadText(&text_result);
38 EXPECT_EQ(text, text_result);
39 clipboard.ReadAsciiText(&ascii_text);
40 EXPECT_EQ(WideToUTF8(text), ascii_text);
41}
42
43TEST(ClipboardTest, HTMLTest) {
44 Clipboard clipboard;
45
46 std::wstring markup(L"<strong>Hi!</string>"), markup_result;
47 std::string url("http://www.example.com/"), url_result;
48
49 clipboard.Clear();
50 clipboard.WriteHTML(markup, url);
51 EXPECT_EQ(true, clipboard.IsFormatAvailable(
52 ClipboardUtil::GetHtmlFormat()->cfFormat));
53 clipboard.ReadHTML(&markup_result, &url_result);
54 EXPECT_EQ(markup, markup_result);
55 EXPECT_EQ(url, url_result);
56}
57
58TEST(ClipboardTest, TrickyHTMLTest) {
59 Clipboard clipboard;
60
61 std::wstring markup(L"<em>Bye!<!--EndFragment --></em>"), markup_result;
62 std::string url, url_result;
63
64 clipboard.Clear();
65 clipboard.WriteHTML(markup, url);
66 EXPECT_EQ(true, clipboard.IsFormatAvailable(
67 ClipboardUtil::GetHtmlFormat()->cfFormat));
68 clipboard.ReadHTML(&markup_result, &url_result);
69 EXPECT_EQ(markup, markup_result);
70 EXPECT_EQ(url, url_result);
71}
72
73TEST(ClipboardTest, BookmarkTest) {
74 Clipboard clipboard;
75
76 std::wstring title(L"The Example Company"), title_result;
77 std::string url("http://www.example.com/"), url_result;
78
79 clipboard.Clear();
80 clipboard.WriteBookmark(title, url);
81 EXPECT_EQ(true,
82 clipboard.IsFormatAvailable(ClipboardUtil::GetUrlWFormat()->cfFormat));
83 clipboard.ReadBookmark(&title_result, &url_result);
84 EXPECT_EQ(title, title_result);
85 EXPECT_EQ(url, url_result);
86}
87
88TEST(ClipboardTest, HyperlinkTest) {
89 Clipboard clipboard;
90
91 std::wstring title(L"The Example Company"), title_result;
92 std::string url("http://www.example.com/"), url_result;
93 std::wstring html(L"<a href=\"http://www.example.com/\">"
94 L"The Example Company</a>"), html_result;
95
96 clipboard.Clear();
97 clipboard.WriteHyperlink(title, url);
98 EXPECT_EQ(true,
99 clipboard.IsFormatAvailable(ClipboardUtil::GetUrlWFormat()->cfFormat));
100 EXPECT_EQ(true,
101 clipboard.IsFormatAvailable(ClipboardUtil::GetHtmlFormat()->cfFormat));
102 clipboard.ReadBookmark(&title_result, &url_result);
103 EXPECT_EQ(title, title_result);
104 EXPECT_EQ(url, url_result);
105 clipboard.ReadHTML(&html_result, &url_result);
106 EXPECT_EQ(html, html_result);
107 //XXX EXPECT_FALSE(url_result.is_valid());
108}
109
110TEST(ClipboardTest, MultiFormatTest) {
111 Clipboard clipboard;
112
113 std::wstring text(L"Hi!"), text_result;
114 std::wstring markup(L"<strong>Hi!</string>"), markup_result;
115 std::string url("http://www.example.com/"), url_result;
116 std::string ascii_text;
117
118 clipboard.Clear();
119 clipboard.WriteHTML(markup, url);
120 clipboard.WriteText(text);
121 EXPECT_EQ(true,
122 clipboard.IsFormatAvailable(ClipboardUtil::GetHtmlFormat()->cfFormat));
123 EXPECT_EQ(true, clipboard.IsFormatAvailable(CF_UNICODETEXT));
124 EXPECT_EQ(true, clipboard.IsFormatAvailable(CF_TEXT));
125 clipboard.ReadHTML(&markup_result, &url_result);
126 EXPECT_EQ(markup, markup_result);
127 EXPECT_EQ(url, url_result);
128 clipboard.ReadText(&text_result);
129 EXPECT_EQ(text, text_result);
130 clipboard.ReadAsciiText(&ascii_text);
131 EXPECT_EQ(WideToUTF8(text), ascii_text);
132}
133
134TEST(ClipboardTest, WebSmartPasteTest) {
135 Clipboard clipboard;
136
137 clipboard.Clear();
138 clipboard.WriteWebSmartPaste();
139 EXPECT_EQ(true, clipboard.IsFormatAvailable(
140 ClipboardUtil::GetWebKitSmartPasteFormat()->cfFormat));
141}
142
143TEST(ClipboardTest, BitmapTest) {
144 unsigned int fake_bitmap[] = {
145 0x46155189, 0xF6A55C8D, 0x79845674, 0xFA57BD89,
146 0x78FD46AE, 0x87C64F5A, 0x36EDC5AF, 0x4378F568,
147 0x91E9F63A, 0xC31EA14F, 0x69AB32DF, 0x643A3FD1,
148 };
149
150 Clipboard clipboard;
151
152 clipboard.Clear();
153 clipboard.WriteBitmap(fake_bitmap, gfx::Size(3, 4));
154 EXPECT_EQ(true, clipboard.IsFormatAvailable(CF_BITMAP));
155}
156
157// Files for this test don't actually need to exist on the file system, just
158// don't try to use a non-existent file you've retrieved from the clipboard.
159TEST(ClipboardTest, FileTest) {
160 Clipboard clipboard;
161 clipboard.Clear();
162
163 std::wstring file = L"C:\\Downloads\\My Downloads\\A Special File.txt";
164 clipboard.WriteFile(file);
165 std::wstring out_file;
166 clipboard.ReadFile(&out_file);
167 EXPECT_EQ(file, out_file);
168}
169
170TEST(ClipboardTest, MultipleFilesTest) {
171 Clipboard clipboard;
172 clipboard.Clear();
173
174 std::vector<std::wstring> files;
175 files.push_back(L"C:\\Downloads\\My Downloads\\File 1.exe");
176 files.push_back(L"C:\\Downloads\\My Downloads\\File 2.pdf");
177 files.push_back(L"C:\\Downloads\\My Downloads\\File 3.doc");
178 clipboard.WriteFiles(files);
179
180 std::vector<std::wstring> out_files;
181 clipboard.ReadFiles(&out_files);
182
183 EXPECT_EQ(files.size(), out_files.size());
184 for (size_t i = 0; i < out_files.size(); ++i)
185 EXPECT_EQ(files[i], out_files[i]);
186}
license.botf003cfe2008-08-24 09:55:55 +0900187