Index: ios/chrome/browser/ui/toolbar/toolbar_controller_unittest.mm |
diff --git a/ios/chrome/browser/ui/toolbar/toolbar_controller_unittest.mm b/ios/chrome/browser/ui/toolbar/toolbar_controller_unittest.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1e7fe9533b8a7fffc9b205323950c4cbf016fdbf |
--- /dev/null |
+++ b/ios/chrome/browser/ui/toolbar/toolbar_controller_unittest.mm |
@@ -0,0 +1,91 @@ |
+// Copyright 2012 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 <Foundation/Foundation.h> |
+ |
+#include "base/format_macros.h" |
+#include "base/mac/scoped_nsobject.h" |
+#import "ios/chrome/browser/ui/toolbar/toolbar_controller.h" |
+#import "ios/chrome/browser/ui/toolbar/toolbar_controller_private.h" |
+#import "ios/chrome/browser/ui/ui_util.h" |
+#include "testing/gtest_mac.h" |
+#include "testing/platform_test.h" |
+ |
+// A constant holding some number of tabs that will trigger an easter egg. |
+const NSInteger kStackButtonEasterEggTabCount = kStackButtonMaxTabCount + 1; |
+ |
+// The easter egg string. |
+NSString* kStackButtonEasterEggString = @":)"; |
+ |
+// Strings containing the max tab count and easter egg tab counts. |
+NSString* kStackButtonMaxTabCountString = |
+ [NSString stringWithFormat:@"%" PRIdNS, kStackButtonMaxTabCount]; |
+NSString* kStackButtonEasterEggTabCountString = |
+ [NSString stringWithFormat:@"%" PRIdNS, kStackButtonEasterEggTabCount]; |
+ |
+#pragma mark - |
+ |
+namespace { |
+ |
+class ToolbarControllerTest : public PlatformTest { |
+ protected: |
+ void SetUp() override { |
+ toolbarController_.reset([[ToolbarController alloc] |
+ initWithStyle:ToolbarControllerStyleLightMode]); |
+ } |
+ |
+ base::scoped_nsobject<ToolbarController> toolbarController_; |
+}; |
+ |
+// Verify that if tab count is set to zero, the title is blank, but the a11y |
+// value is 0. |
+// |
+// Note that the iPad doesn't have a |stackButton|, but setTabCount may still |
+// be invoked so this test covers that code path. The rest of the tab count |
+// tests don't do anything if run on an iPad. |
+TEST_F(ToolbarControllerTest, TestTabCountZero) { |
+ // On iPad, there is no |stackButton|, so the title should be NULL. |
+ NSString* expectedTitle = IsIPadIdiom() ? NULL : @""; |
+ |
+ [toolbarController_ setTabCount:0]; |
+ EXPECT_NSEQ(expectedTitle, [toolbarController_ stackButton].currentTitle); |
+} |
+ |
+// Verify that when subsequent calls to tab count cross the max tab count |
+// threshhold (increasing), the title is blank but the a11y value is set to the |
+// second value. |
+// |
+// Doesn't do anything when run on an iPad. |
+TEST_F(ToolbarControllerTest, TestTabCountBecomesEasterEgg_iPhoneOnly) { |
+ if (IsIPadIdiom()) |
+ return; |
+ |
+ [toolbarController_ setTabCount:kStackButtonMaxTabCount]; |
+ EXPECT_NSEQ(kStackButtonMaxTabCountString, |
+ [toolbarController_ stackButton].currentTitle); |
+ |
+ [toolbarController_ setTabCount:kStackButtonEasterEggTabCount]; |
+ EXPECT_NSEQ(kStackButtonEasterEggString, |
+ [toolbarController_ stackButton].currentTitle); |
+} |
+ |
+// Verify that when subsequent calls to tab count cross the max tab count |
+// threshhold (decreasing), title and a11y value are both set to the second |
+// value. |
+// |
+// Doesn't do anything when run on an iPad. |
+TEST_F(ToolbarControllerTest, TestTabCountStopsBeingEasterEgg_iPhoneOnly) { |
+ if (IsIPadIdiom()) |
+ return; |
+ |
+ [toolbarController_ setTabCount:kStackButtonEasterEggTabCount]; |
+ EXPECT_NSEQ(kStackButtonEasterEggString, |
+ [toolbarController_ stackButton].currentTitle); |
+ |
+ [toolbarController_ setTabCount:kStackButtonMaxTabCount]; |
+ EXPECT_NSEQ(kStackButtonMaxTabCountString, |
+ [toolbarController_ stackButton].currentTitle); |
+} |
+ |
+} // namespace |