Index: ios/chrome/browser/web/external_app_launcher_unittest.mm |
diff --git a/ios/chrome/browser/web/external_app_launcher_unittest.mm b/ios/chrome/browser/web/external_app_launcher_unittest.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c4268b1f0445760b6c6206db5328fb73fa33e046 |
--- /dev/null |
+++ b/ios/chrome/browser/web/external_app_launcher_unittest.mm |
@@ -0,0 +1,52 @@ |
+// Copyright 2014 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 "ios/chrome/browser/web/external_app_launcher.h" |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "testing/gtest_mac.h" |
+ |
+@interface ExternalAppLauncher (Private) |
+// Returns the Phone/FaceTime call argument from |url|. |
+// Made available for unit testing. |
++ (NSString*)formatCallArgument:(NSURL*)url; |
+@end |
+ |
+namespace { |
+ |
+TEST(ExternalAppLauncherTest, TestBadFormatCallArgument) { |
+ EXPECT_NSEQ(@"garbage:", |
+ [ExternalAppLauncher |
+ formatCallArgument:[NSURL URLWithString:@"garbage:"]]); |
+ EXPECT_NSEQ(@"malformed:////", |
+ [ExternalAppLauncher |
+ formatCallArgument:[NSURL URLWithString:@"malformed:////"]]); |
+} |
+ |
+TEST(ExternalAppLauncherTest, TestFormatCallArgument) { |
+ EXPECT_NSEQ( |
+ @"+1234", |
+ [ExternalAppLauncher |
+ formatCallArgument:[NSURL URLWithString:@"facetime://+1234"]]); |
+ EXPECT_NSEQ( |
+ @"+abcd", |
+ [ExternalAppLauncher |
+ formatCallArgument:[NSURL URLWithString:@"facetime-audio://+abcd"]]); |
+ EXPECT_NSEQ( |
+ @"+1-650-555-1212", |
+ [ExternalAppLauncher |
+ formatCallArgument:[NSURL URLWithString:@"tel://+1-650-555-1212"]]); |
+ EXPECT_NSEQ(@"75009", |
+ [ExternalAppLauncher |
+ formatCallArgument:[NSURL URLWithString:@"garbage:75009"]]); |
+} |
+ |
+TEST(ExternalAppLauncherTest, TestURLEscapedArgument) { |
+ EXPECT_NSEQ(@"+1 650 555 1212", |
+ [ExternalAppLauncher |
+ formatCallArgument: |
+ [NSURL URLWithString:@"tel://+1%20650%20555%201212"]]); |
+} |
+ |
+} // namespace |