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

Side by Side Diff: device/nfc/nfc_ndef_record_unittest.cc

Issue 2292703002: chromeos: Remove unused NFC D-Bus client library (Closed)
Patch Set: rebase Created 4 years, 3 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
« no previous file with comments | « device/nfc/nfc_ndef_record.cc ('k') | device/nfc/nfc_ndef_record_utils_chromeos.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 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 "device/nfc/nfc_ndef_record.h"
6
7 #include <stddef.h>
8 #include <stdint.h>
9
10 #include <memory>
11
12 #include "base/values.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 using base::DictionaryValue;
16 using base::ListValue;
17 using base::StringValue;
18
19 namespace device {
20
21 namespace {
22
23 const char kTestAction[] = "test-action";
24 const char kTestEncoding[] = "test-encoding";
25 const char kTestLanguageCode[] = "test-language-code";
26 const char kTestMimeType[] = "test-mime-type";
27 const uint32_t kTestTargetSize = 0;
28 const char kTestText[] = "test-text";
29 const char kTestURI[] = "test://uri";
30
31 } // namespace
32
33 TEST(NfcNdefRecordTest, PopulateTextRecord) {
34 DictionaryValue data;
35 std::unique_ptr<NfcNdefRecord> record(new NfcNdefRecord());
36
37 // Missing text field. Should fail.
38 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
39 EXPECT_FALSE(record->IsPopulated());
40
41 // Text field with incorrect type. Should fail.
42 data.SetInteger(NfcNdefRecord::kFieldText, 0);
43 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
44 EXPECT_FALSE(record->IsPopulated());
45
46 // Text field with correct type but missing encoding and language.
47 // Should fail.
48 data.SetString(NfcNdefRecord::kFieldText, kTestText);
49 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
50 EXPECT_FALSE(record->IsPopulated());
51
52 // Populating a successfully populated record should fail.
53 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
54
55 // Incorrect type for language code.
56 data.SetInteger(NfcNdefRecord::kFieldLanguageCode, 0);
57 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
58 EXPECT_FALSE(record->IsPopulated());
59
60 // Correct type for language code, invalid encoding.
61 data.SetString(NfcNdefRecord::kFieldLanguageCode, kTestLanguageCode);
62 data.SetInteger(NfcNdefRecord::kFieldEncoding, 0);
63 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
64 EXPECT_FALSE(record->IsPopulated());
65
66 // All entries valid. Should succeed.
67 data.SetString(NfcNdefRecord::kFieldEncoding, kTestEncoding);
68 EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeText, &data));
69 EXPECT_TRUE(record->IsPopulated());
70 EXPECT_EQ(NfcNdefRecord::kTypeText, record->type());
71
72 // Compare record contents.
73 std::string string_value;
74 EXPECT_TRUE(record->data().GetString(
75 NfcNdefRecord::kFieldText, &string_value));
76 EXPECT_EQ(kTestText, string_value);
77 EXPECT_TRUE(record->data().GetString(
78 NfcNdefRecord::kFieldLanguageCode, &string_value));
79 EXPECT_EQ(kTestLanguageCode, string_value);
80 EXPECT_TRUE(record->data().GetString(
81 NfcNdefRecord::kFieldEncoding, &string_value));
82 EXPECT_EQ(kTestEncoding, string_value);
83 }
84
85 TEST(NfcNdefRecordTest, PopulateUriRecord) {
86 DictionaryValue data;
87 std::unique_ptr<NfcNdefRecord> record(new NfcNdefRecord());
88
89 // Missing URI field. Should fail.
90 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
91 EXPECT_FALSE(record->IsPopulated());
92
93 // URI field with incorrect type. Should fail.
94 data.SetInteger(NfcNdefRecord::kFieldURI, 0);
95 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
96 EXPECT_FALSE(record->IsPopulated());
97
98 // URI field with correct type but invalid format.
99 data.SetString(NfcNdefRecord::kFieldURI, "test.uri");
100 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
101 EXPECT_FALSE(record->IsPopulated());
102
103 data.SetString(NfcNdefRecord::kFieldURI, kTestURI);
104 EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeURI, &data));
105 EXPECT_TRUE(record->IsPopulated());
106 EXPECT_EQ(NfcNdefRecord::kTypeURI, record->type());
107
108 // Populating a successfully populated record should fail.
109 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
110
111 // Recycle the record.
112 record.reset(new NfcNdefRecord());
113 EXPECT_FALSE(record->IsPopulated());
114
115 // Incorrect optional fields. Should fail.
116 data.SetInteger(NfcNdefRecord::kFieldMimeType, 0);
117 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
118 EXPECT_FALSE(record->IsPopulated());
119
120 data.SetString(NfcNdefRecord::kFieldMimeType, kTestMimeType);
121 data.SetInteger(NfcNdefRecord::kFieldTargetSize, kTestTargetSize);
122 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
123 EXPECT_FALSE(record->IsPopulated());
124
125 // Optional fields are correct. Should succeed.
126 data.SetDouble(NfcNdefRecord::kFieldTargetSize,
127 static_cast<double>(kTestTargetSize));
128 EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeURI, &data));
129 EXPECT_TRUE(record->IsPopulated());
130 EXPECT_EQ(NfcNdefRecord::kTypeURI, record->type());
131
132 // Compare record contents.
133 std::string string_value;
134 double double_value;
135 EXPECT_TRUE(record->data().GetString(
136 NfcNdefRecord::kFieldURI, &string_value));
137 EXPECT_EQ(kTestURI, string_value);
138 EXPECT_TRUE(record->data().GetString(
139 NfcNdefRecord::kFieldMimeType, &string_value));
140 EXPECT_EQ(kTestMimeType, string_value);
141 EXPECT_TRUE(record->data().GetDouble(
142 NfcNdefRecord::kFieldTargetSize, &double_value));
143 EXPECT_EQ(kTestTargetSize, static_cast<uint32_t>(double_value));
144 }
145
146 TEST(NfcNdefRecordTest, PopulateSmartPoster) {
147 DictionaryValue data;
148 std::unique_ptr<NfcNdefRecord> record(new NfcNdefRecord());
149
150 // Missing URI field. Should fail.
151 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
152 EXPECT_FALSE(record->IsPopulated());
153
154 // URI field with incorrect entry. Should fail.
155 data.SetInteger(NfcNdefRecord::kFieldURI, 0);
156 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
157 EXPECT_FALSE(record->IsPopulated());
158
159 // URI field with correct entry. Should succeed.
160 data.SetString(NfcNdefRecord::kFieldURI, kTestURI);
161 EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
162 EXPECT_TRUE(record->IsPopulated());
163 EXPECT_EQ(NfcNdefRecord::kTypeSmartPoster, record->type());
164
165 // Populating a successfully populated record should fail.
166 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
167
168 // Recycle the record.
169 record.reset(new NfcNdefRecord());
170 EXPECT_FALSE(record->IsPopulated());
171
172 // Incorrect optional fields. Should fail.
173 data.SetInteger(NfcNdefRecord::kFieldAction, 0);
174 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
175 EXPECT_FALSE(record->IsPopulated());
176
177 data.SetString(NfcNdefRecord::kFieldAction, kTestAction);
178 data.SetInteger(NfcNdefRecord::kFieldMimeType, 0);
179 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
180 EXPECT_FALSE(record->IsPopulated());
181
182 data.SetString(NfcNdefRecord::kFieldMimeType, kTestMimeType);
183 data.SetInteger(NfcNdefRecord::kFieldTargetSize, kTestTargetSize);
184 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
185 EXPECT_FALSE(record->IsPopulated());
186
187 data.SetDouble(NfcNdefRecord::kFieldTargetSize, kTestTargetSize);
188 data.SetInteger(NfcNdefRecord::kFieldTitles, 0);
189 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
190 EXPECT_FALSE(record->IsPopulated());
191
192 // Empty titles value should fail.
193 ListValue* list_value = new ListValue();
194 data.Set(NfcNdefRecord::kFieldTitles, list_value);
195
196 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
197 EXPECT_FALSE(record->IsPopulated());
198
199 // Title value with missing required field.
200 DictionaryValue* title_value = new DictionaryValue();
201 list_value->Append(title_value);
202
203 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
204 EXPECT_FALSE(record->IsPopulated());
205
206 // Title value with invalid "text" field.
207 title_value->SetInteger(NfcNdefRecord::kFieldText, 0);
208
209 EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
210 EXPECT_FALSE(record->IsPopulated());
211
212 // Title value with valid entries.
213 title_value->SetString(NfcNdefRecord::kFieldText, kTestText);
214 title_value->SetString(NfcNdefRecord::kFieldLanguageCode, kTestLanguageCode);
215 title_value->SetString(NfcNdefRecord::kFieldEncoding, kTestEncoding);
216
217 EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
218 EXPECT_TRUE(record->IsPopulated());
219
220 // Verify the record contents.
221 std::string string_value;
222 double double_value;
223 const ListValue* const_list_value;
224 const DictionaryValue* const_dictionary_value;
225 EXPECT_TRUE(record->data().GetString(
226 NfcNdefRecord::kFieldURI, &string_value));
227 EXPECT_EQ(kTestURI, string_value);
228 EXPECT_TRUE(record->data().GetString(
229 NfcNdefRecord::kFieldMimeType, &string_value));
230 EXPECT_EQ(kTestMimeType, string_value);
231 EXPECT_TRUE(record->data().GetDouble(
232 NfcNdefRecord::kFieldTargetSize, &double_value));
233 EXPECT_EQ(kTestTargetSize, static_cast<uint32_t>(double_value));
234 EXPECT_TRUE(record->data().GetString(
235 NfcNdefRecord::kFieldAction, &string_value));
236 EXPECT_EQ(kTestAction, string_value);
237 EXPECT_TRUE(record->data().GetList(
238 NfcNdefRecord::kFieldTitles, &const_list_value));
239 EXPECT_EQ(static_cast<size_t>(1), const_list_value->GetSize());
240 EXPECT_TRUE(const_list_value->GetDictionary(0, &const_dictionary_value));
241 EXPECT_TRUE(const_dictionary_value->GetString(
242 NfcNdefRecord::kFieldText, &string_value));
243 EXPECT_EQ(kTestText, string_value);
244 EXPECT_TRUE(const_dictionary_value->GetString(
245 NfcNdefRecord::kFieldLanguageCode, &string_value));
246 EXPECT_EQ(kTestLanguageCode, string_value);
247 EXPECT_TRUE(const_dictionary_value->GetString(
248 NfcNdefRecord::kFieldEncoding, &string_value));
249 EXPECT_EQ(kTestEncoding, string_value);
250 }
251
252 } // namespace device
OLDNEW
« no previous file with comments | « device/nfc/nfc_ndef_record.cc ('k') | device/nfc/nfc_ndef_record_utils_chromeos.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698