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

Unified Diff: chrome/browser/ui/cocoa/applescript/apple_event_util_unittest.mm

Issue 11742028: Suspend Apple Events during their processing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test Created 7 years, 12 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/applescript/apple_event_util_unittest.mm
diff --git a/chrome/browser/ui/cocoa/applescript/apple_event_util_unittest.mm b/chrome/browser/ui/cocoa/applescript/apple_event_util_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..6b25cde97aa08c869eb35e0fee78bbf9dc7005f8
--- /dev/null
+++ b/chrome/browser/ui/cocoa/applescript/apple_event_util_unittest.mm
@@ -0,0 +1,121 @@
+// 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.
+
+#import "chrome/browser/ui/cocoa/applescript/apple_event_util.h"
+
+#include "base/basictypes.h"
+#include "base/json/json_reader.h"
+#include "base/stringprintf.h"
+#include "base/values.h"
+#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
+#include "testing/gtest_mac.h"
+
+namespace {
+
+class AppleEventUtilTest : public CocoaTest { };
+
+struct TestCase {
+ const char* json_input;
+ const char* expected_aedesc_dump;
+ DescType expected_aedesc_type;
+};
+
+TEST_F(AppleEventUtilTest, ValueToAppleEventDescriptor) {
+ const struct TestCase cases[] = {
+ { "null", "'msng'", typeType },
+ { "-1000", "-1000", typeSInt32 },
+ { "0", "0", typeSInt32 },
+ { "1000", "1000", typeSInt32 },
+ { "-1e100", "-1e+100", typeIEEE64BitFloatingPoint },
+ { "0.0", "0", typeIEEE64BitFloatingPoint },
+ { "1e100", "1e+100", typeIEEE64BitFloatingPoint },
+ { "\"\"", "'utxt'(\"\")", typeUnicodeText },
+ { "\"string\"", "'utxt'(\"string\")", typeUnicodeText },
+ { "{}", "{ 'usrf':[ ] }", typeAERecord },
+ { "[]", "[ ]", typeAEList },
+ { "{\"Image\": {"
+ "\"Width\": 800,"
+ "\"Height\": 600,"
+ "\"Title\": \"View from 15th Floor\","
+ "\"Thumbnail\": {"
+ "\"Url\": \"http://www.example.com/image/481989943\","
+ "\"Height\": 125,"
+ "\"Width\": \"100\""
+ "},"
+ "\"IDs\": [116, 943, 234, 38793]"
+ "}"
+ "}",
+ "{ 'usrf':[ 'utxt'(\"Image\"), { 'usrf':[ 'utxt'(\"Height\"), 600, "
+ "'utxt'(\"IDs\"), [ 116, 943, 234, 38793 ], 'utxt'(\"Thumbnail\"), "
+ "{ 'usrf':[ 'utxt'(\"Height\"), 125, 'utxt'(\"Url\"), "
+ "'utxt'(\"http://www.example.com/image/481989943\"), 'utxt'(\"Width\"), "
+ "'utxt'(\"100\") ] }, 'utxt'(\"Title\"), "
+ "'utxt'(\"View from 15th Floor\"), 'utxt'(\"Width\"), 800 ] } ] }",
+ typeAERecord },
+ { "["
+ "{"
+ "\"precision\": \"zip\","
+ "\"Latitude\": 37.7668,"
+ "\"Longitude\": -122.3959,"
+ "\"Address\": \"\","
+ "\"City\": \"SAN FRANCISCO\","
+ "\"State\": \"CA\","
+ "\"Zip\": \"94107\","
+ "\"Country\": \"US\""
+ "},"
+ "{"
+ "\"precision\": \"zip\","
+ "\"Latitude\": 37.371991,"
+ "\"Longitude\": -122.026020,"
+ "\"Address\": \"\","
+ "\"City\": \"SUNNYVALE\","
+ "\"State\": \"CA\","
+ "\"Zip\": \"94085\","
+ "\"Country\": \"US\""
+ "}"
+ "]",
+ "[ { 'usrf':[ 'utxt'(\"Address\"), 'utxt'(\"\"), 'utxt'(\"City\"), "
+ "'utxt'(\"SAN FRANCISCO\"), 'utxt'(\"Country\"), 'utxt'(\"US\"), "
+ "'utxt'(\"Latitude\"), 37.7668, 'utxt'(\"Longitude\"), -122.396, "
+ "'utxt'(\"State\"), 'utxt'(\"CA\"), 'utxt'(\"Zip\"), 'utxt'(\"94107\"), "
+ "'utxt'(\"precision\"), 'utxt'(\"zip\") ] }, { 'usrf':[ "
+ "'utxt'(\"Address\"), 'utxt'(\"\"), 'utxt'(\"City\"), "
+ "'utxt'(\"SUNNYVALE\"), 'utxt'(\"Country\"), 'utxt'(\"US\"), "
+ "'utxt'(\"Latitude\"), 37.372, 'utxt'(\"Longitude\"), -122.026, "
+ "'utxt'(\"State\"), 'utxt'(\"CA\"), 'utxt'(\"Zip\"), 'utxt'(\"94085\"), "
+ "'utxt'(\"precision\"), 'utxt'(\"zip\") ] } ]",
+ typeAEList },
+ };
+
+ for (size_t i = 0; i < arraysize(cases); ++i) {
+ scoped_ptr<base::Value> value(base::JSONReader::Read(cases[i].json_input));
+ NSAppleEventDescriptor* descriptor =
+ chrome::mac::ValueToAppleEventDescriptor(value.get());
+ NSString* descriptor_description = [descriptor description];
+
+ std::string expected_contents =
+ base::StringPrintf("<NSAppleEventDescriptor: %s>",
+ cases[i].expected_aedesc_dump);
+ EXPECT_STREQ(expected_contents.c_str(),
+ [descriptor_description UTF8String]) << "i: " << i;
+ EXPECT_EQ(cases[i].expected_aedesc_type,
+ [descriptor descriptorType]) << "i: " << i;
+ }
+
+ // Test boolean values separately because boolean NSAppleEventDescriptors
+ // return different values across different system versions when their
+ // -description method is called.
+
+ const bool all_bools[] = { true, false };
+ for (bool b : all_bools) {
Robert Sesek 2013/01/04 19:26:42 Woaaaaah
Avi (use Gerrit) 2013/01/04 19:40:09 I was originally planning on for (bool b : { true
+ base::FundamentalValue value(b);
+ NSAppleEventDescriptor* descriptor =
+ chrome::mac::ValueToAppleEventDescriptor(&value);
+
+ EXPECT_EQ(typeBoolean, [descriptor descriptorType]);
+ EXPECT_EQ(b, [descriptor booleanValue]);
+ }
+}
+
+} // namespace

Powered by Google App Engine
This is Rietveld 408576698