Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: components/mus/clipboard/clipboard_unittest.cc

Issue 1978763003: Readd the clipboard service and get it compiling again. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Of course mus tests would need the x server... Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 <stdint.h>
6 #include <utility>
7
8 #include "base/bind.h"
9 #include "base/macros.h"
10 #include "base/run_loop.h"
11 #include "components/mus/public/interfaces/clipboard.mojom.h"
12 #include "mojo/common/common_type_converters.h"
13 #include "services/shell/public/cpp/shell_connection.h"
14 #include "services/shell/public/cpp/shell_test.h"
15
16 using mojo::Array;
17 using mojo::Map;
18 using mojo::String;
19 using mus::mojom::Clipboard;
20
21 namespace mus {
22 namespace clipboard {
23 namespace {
24
25 const char* kUninitialized = "Uninitialized data";
26 const char* kPlainTextData = "Some plain data";
27 const char* kHtmlData = "<html>data</html>";
28
29 } // namespace
30
31 class ClipboardAppTest : public shell::test::ShellTest {
sky 2016/05/19 15:33:46 If these tests are going to end up writing to the
Elliot Glaysher 2016/05/19 18:26:48 Noted, but I don't think this is going to happen t
32 public:
33 ClipboardAppTest() : ShellTest("exe:mus_clipboard_unittests") {}
34 ~ClipboardAppTest() override {}
35
36 // Overridden from shell::test::ShellTest:
37 void SetUp() override {
38 ShellTest::SetUp();
39
40 connector()->ConnectToInterface("mojo:mus", &clipboard_);
41 ASSERT_TRUE(clipboard_);
42 }
43
44 uint64_t GetSequenceNumber() {
45 uint64_t sequence_num = 999999;
46 EXPECT_TRUE(clipboard_->GetSequenceNumber(
47 Clipboard::Type::COPY_PASTE, &sequence_num));
48 return sequence_num;
49 }
50
51 std::vector<std::string> GetAvailableFormatMimeTypes() {
52 uint64_t sequence_num = 999999;
53 Array<String> types;
54 types.push_back(kUninitialized);
55 clipboard_->GetAvailableMimeTypes(
56 Clipboard::Type::COPY_PASTE,
57 &sequence_num, &types);
58 return types.To<std::vector<std::string>>();
59 }
60
61 bool GetDataOfType(uint64_t sequence_number, const std::string& mime_type,
62 std::string* data) {
63 bool valid = false;
64 Array<uint8_t> raw_data;
65 clipboard_->ReadMimeType(
66 sequence_number, Clipboard::Type::COPY_PASTE, mime_type,
67 &valid, &raw_data);
68 valid = valid && !raw_data.is_null();
69 *data = raw_data.is_null() ? "" : raw_data.To<std::string>();
70 return valid;
71 }
72
73 void SetStringText(const std::string& data) {
74 uint64_t sequence_number;
75 Map<String, Array<uint8_t>> mime_data;
76 mime_data[Clipboard::MIME_TYPE_TEXT] = Array<uint8_t>::From(data);
77 clipboard_->WriteClipboardData(Clipboard::Type::COPY_PASTE,
78 std::move(mime_data),
79 &sequence_number);
80 }
81
82 protected:
83 mojom::ClipboardPtr clipboard_;
84
85 DISALLOW_COPY_AND_ASSIGN(ClipboardAppTest);
86 };
87
88 TEST_F(ClipboardAppTest, EmptyClipboardOK) {
89 EXPECT_EQ(0ul, GetSequenceNumber());
90 EXPECT_TRUE(GetAvailableFormatMimeTypes().empty());
91 std::string data;
92 EXPECT_FALSE(GetDataOfType(0ul, Clipboard::MIME_TYPE_TEXT, &data));
93 }
94
95 TEST_F(ClipboardAppTest, CanReadBackText) {
96 std::string data;
97 EXPECT_EQ(0ul, GetSequenceNumber());
98 EXPECT_FALSE(GetDataOfType(0ul, Clipboard::MIME_TYPE_TEXT, &data));
99
100 SetStringText(kPlainTextData);
101 EXPECT_EQ(1ul, GetSequenceNumber());
102
103 EXPECT_TRUE(GetDataOfType(1ul, Clipboard::MIME_TYPE_TEXT, &data));
104 EXPECT_EQ(kPlainTextData, data);
105 }
106
107 TEST_F(ClipboardAppTest, CanSetMultipleDataTypesAtOnce) {
108 Map<String, Array<uint8_t>> mime_data;
109 mime_data[Clipboard::MIME_TYPE_TEXT] =
110 Array<uint8_t>::From(std::string(kPlainTextData));
111 mime_data[Clipboard::MIME_TYPE_HTML] =
112 Array<uint8_t>::From(std::string(kHtmlData));
113
114 uint64_t sequence_num = 0;
115 clipboard_->WriteClipboardData(Clipboard::Type::COPY_PASTE,
116 std::move(mime_data),
117 &sequence_num);
118 EXPECT_EQ(1ul, sequence_num);
119
120 std::string data;
121 EXPECT_TRUE(GetDataOfType(1ul, Clipboard::MIME_TYPE_TEXT, &data));
122 EXPECT_EQ(kPlainTextData, data);
123 EXPECT_TRUE(GetDataOfType(1ul, Clipboard::MIME_TYPE_HTML, &data));
124 EXPECT_EQ(kHtmlData, data);
125 }
126
127 TEST_F(ClipboardAppTest, CanClearClipboardWithZeroArray) {
128 std::string data;
129 SetStringText(kPlainTextData);
130 EXPECT_EQ(1ul, GetSequenceNumber());
131
132 EXPECT_TRUE(GetDataOfType(1ul, Clipboard::MIME_TYPE_TEXT, &data));
133 EXPECT_EQ(kPlainTextData, data);
134
135 Map<String, Array<uint8_t>> mime_data;
136 uint64_t sequence_num = 0;
137 clipboard_->WriteClipboardData(Clipboard::Type::COPY_PASTE,
138 std::move(mime_data),
139 &sequence_num);
140
141 EXPECT_EQ(2ul, sequence_num);
142 EXPECT_FALSE(GetDataOfType(2ul, Clipboard::MIME_TYPE_TEXT, &data));
143 }
144
145 } // namespace clipboard
146 } // namespace mus
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698