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

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

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

Powered by Google App Engine
This is Rietveld 408576698