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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/nfc/nfc_ndef_record.cc ('k') | device/nfc/nfc_peer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/nfc/nfc_ndef_record_unittest.cc
diff --git a/device/nfc/nfc_ndef_record_unittest.cc b/device/nfc/nfc_ndef_record_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cd19352b4235b1df57d6414688481a169dbc9f5c
--- /dev/null
+++ b/device/nfc/nfc_ndef_record_unittest.cc
@@ -0,0 +1,238 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/memory/scoped_ptr.h"
+#include "base/values.h"
+#include "device/nfc/nfc_ndef_record.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using base::DictionaryValue;
+using base::ListValue;
+using base::StringValue;
+
+namespace device {
+
+namespace {
+
+const char kTestAction[] = "test-action";
+const char kTestEncoding[] = "test-encoding";
+const char kTestLanguageCode[] = "test-language-code";
+const char kTestMimeType[] = "test-mime-type";
+const uint32 kTestTargetSize = 0;
+const char kTestText[] = "test-text";
+const char kTestURI[] = "test-uri";
+
+} // namespace
+
+TEST(NfcNdefRecordTest, PopulateTextRecord) {
+ DictionaryValue data;
+ scoped_ptr<NfcNdefRecord> record(new NfcNdefRecord());
+
+ // Missing text field. Should fail.
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Text field with incorrect entry. Should fail.
+ data.SetInteger(NfcNdefRecord::kFieldText, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Text field with correct entry. Should succeed.
+ data.SetString(NfcNdefRecord::kFieldText, kTestText);
+ EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeText, &data));
+ EXPECT_TRUE(record->IsPopulated());
+ EXPECT_EQ(NfcNdefRecord::kTypeText, record->type());
+
+ // Populating a successfully populated record should fail.
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
+
+ // Recycle the record.
+ record.reset(new NfcNdefRecord());
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Incorrect optional fields. Should fail.
+ data.SetInteger(NfcNdefRecord::kFieldLanguageCode, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ data.SetString(NfcNdefRecord::kFieldLanguageCode, kTestLanguageCode);
+ data.SetInteger(NfcNdefRecord::kFieldEncoding, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeText, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Optional fields are correct. Should succeed.
+ data.SetString(NfcNdefRecord::kFieldEncoding, kTestEncoding);
+ EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeText, &data));
+ EXPECT_TRUE(record->IsPopulated());
+ EXPECT_EQ(NfcNdefRecord::kTypeText, record->type());
+
+ // Compare record contents.
+ std::string string_value;
+ EXPECT_TRUE(record->data().GetString(
+ NfcNdefRecord::kFieldText, &string_value));
+ EXPECT_EQ(kTestText, string_value);
+ EXPECT_TRUE(record->data().GetString(
+ NfcNdefRecord::kFieldLanguageCode, &string_value));
+ EXPECT_EQ(kTestLanguageCode, string_value);
+ EXPECT_TRUE(record->data().GetString(
+ NfcNdefRecord::kFieldEncoding, &string_value));
+ EXPECT_EQ(kTestEncoding, string_value);
+}
+
+TEST(NfcNdefRecordTest, PopulateUriRecord) {
+ DictionaryValue data;
+ scoped_ptr<NfcNdefRecord> record(new NfcNdefRecord());
+
+ // Missing URI field. Should fail.
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // URI field with incorrect entry. Should fail.
+ data.SetInteger(NfcNdefRecord::kFieldURI, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // URI field with correct entry. Should succeed.
+ data.SetString(NfcNdefRecord::kFieldURI, kTestURI);
+ EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeURI, &data));
+ EXPECT_TRUE(record->IsPopulated());
+ EXPECT_EQ(NfcNdefRecord::kTypeURI, record->type());
+
+ // Populating a successfully populated record should fail.
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
+
+ // Recycle the record.
+ record.reset(new NfcNdefRecord());
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Incorrect optional fields. Should fail.
+ data.SetInteger(NfcNdefRecord::kFieldMimeType, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ data.SetString(NfcNdefRecord::kFieldMimeType, kTestMimeType);
+ data.SetInteger(NfcNdefRecord::kFieldTargetSize, kTestTargetSize);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeURI, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Optional fields are correct. Should succeed.
+ data.SetDouble(NfcNdefRecord::kFieldTargetSize,
+ static_cast<double>(kTestTargetSize));
+ EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeURI, &data));
+ EXPECT_TRUE(record->IsPopulated());
+ EXPECT_EQ(NfcNdefRecord::kTypeURI, record->type());
+
+ // Compare record contents.
+ std::string string_value;
+ double double_value;
+ EXPECT_TRUE(record->data().GetString(
+ NfcNdefRecord::kFieldURI, &string_value));
+ EXPECT_EQ(kTestURI, string_value);
+ EXPECT_TRUE(record->data().GetString(
+ NfcNdefRecord::kFieldMimeType, &string_value));
+ EXPECT_EQ(kTestMimeType, string_value);
+ EXPECT_TRUE(record->data().GetDouble(
+ NfcNdefRecord::kFieldTargetSize, &double_value));
+ EXPECT_EQ(kTestTargetSize, static_cast<uint32>(double_value));
+}
+
+TEST(NfcNdefRecordTest, PopulateSmartPoster) {
+ DictionaryValue data;
+ scoped_ptr<NfcNdefRecord> record(new NfcNdefRecord());
+
+ // Missing URI field. Should fail.
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // URI field with incorrect entry. Should fail.
+ data.SetInteger(NfcNdefRecord::kFieldURI, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // URI field with correct entry. Should succeed.
+ data.SetString(NfcNdefRecord::kFieldURI, kTestURI);
+ EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_TRUE(record->IsPopulated());
+ EXPECT_EQ(NfcNdefRecord::kTypeSmartPoster, record->type());
+
+ // Populating a successfully populated record should fail.
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+
+ // Recycle the record.
+ record.reset(new NfcNdefRecord());
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Incorrect optional fields. Should fail.
+ data.SetInteger(NfcNdefRecord::kFieldAction, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ data.SetString(NfcNdefRecord::kFieldAction, kTestAction);
+ data.SetInteger(NfcNdefRecord::kFieldMimeType, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ data.SetString(NfcNdefRecord::kFieldMimeType, kTestMimeType);
+ data.SetInteger(NfcNdefRecord::kFieldTargetSize, kTestTargetSize);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ data.SetDouble(NfcNdefRecord::kFieldTargetSize, kTestTargetSize);
+ data.SetInteger(NfcNdefRecord::kFieldTitles, 0);
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Empty titles value should fail.
+ ListValue* list_value = new ListValue();
+ data.Set(NfcNdefRecord::kFieldTitles, list_value);
+
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Title value with missing required field.
+ DictionaryValue* title_value = new DictionaryValue();
+ list_value->Append(title_value);
+
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Title value with invalid "text" field.
+ title_value->SetInteger(NfcNdefRecord::kFieldText, 0);
+
+ EXPECT_FALSE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_FALSE(record->IsPopulated());
+
+ // Title value with valid "text" field.
+ title_value->SetString(NfcNdefRecord::kFieldText, kTestText);
+
+ EXPECT_TRUE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
+ EXPECT_TRUE(record->IsPopulated());
+
+ // Verify the record contents.
+ std::string string_value;
+ double double_value;
+ const ListValue* const_list_value;
+ const DictionaryValue* const_dictionary_value;
+ EXPECT_TRUE(record->data().GetString(
+ NfcNdefRecord::kFieldURI, &string_value));
+ EXPECT_EQ(kTestURI, string_value);
+ EXPECT_TRUE(record->data().GetString(
+ NfcNdefRecord::kFieldMimeType, &string_value));
+ EXPECT_EQ(kTestMimeType, string_value);
+ EXPECT_TRUE(record->data().GetDouble(
+ NfcNdefRecord::kFieldTargetSize, &double_value));
+ EXPECT_EQ(kTestTargetSize, static_cast<uint32>(double_value));
+ EXPECT_TRUE(record->data().GetString(
+ NfcNdefRecord::kFieldAction, &string_value));
+ EXPECT_EQ(kTestAction, string_value);
+ EXPECT_TRUE(record->data().GetList(
+ NfcNdefRecord::kFieldTitles, &const_list_value));
+ EXPECT_EQ(static_cast<size_t>(1), const_list_value->GetSize());
+ EXPECT_TRUE(const_list_value->GetDictionary(0, &const_dictionary_value));
+ EXPECT_TRUE(const_dictionary_value->GetString(
+ NfcNdefRecord::kFieldText, &string_value));
+ EXPECT_EQ(kTestText, string_value);
+}
+
+} // namespace device
« 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