browser/metro/base/tests/mochitest/browser_tabs.js

Wed, 31 Dec 2014 06:55:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:50 +0100
changeset 2
7e26c7da4463
permissions
-rw-r--r--

Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2

michael@0 1 // -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
michael@0 2 /* This Source Code Form is subject to the terms of the Mozilla Public
michael@0 3 * License, v. 2.0. If a copy of the MPL was not distributed with this
michael@0 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
michael@0 5
michael@0 6 "use strict";
michael@0 7
michael@0 8 let mockTab = function(aName, aIsClosing) {
michael@0 9 this.name = aName;
michael@0 10 this.isClosing = aIsClosing;
michael@0 11 };
michael@0 12
michael@0 13 mockTab.prototype = {
michael@0 14 get chromeTab () {
michael@0 15 let getAttribute = () => this.isClosing;
michael@0 16 return {
michael@0 17 hasAttribute: getAttribute
michael@0 18 }
michael@0 19 }
michael@0 20 };
michael@0 21
michael@0 22 let getMockBrowserTabs = function(aTestTabs, aSelected) {
michael@0 23 let result = {
michael@0 24 _tabs: aTestTabs,
michael@0 25 _selectedTab: aTestTabs[aSelected || 0],
michael@0 26 getTabAtIndex: function(i) this._tabs[i]
michael@0 27 };
michael@0 28
michael@0 29 return [result, Browser.getNextTab.bind(result)];
michael@0 30 };
michael@0 31
michael@0 32 gTests.push({
michael@0 33 desc: "Test Browser.getNextTab",
michael@0 34 run: function() {
michael@0 35 let [lonlyTab, fakeGetNextTab] = getMockBrowserTabs(
michael@0 36 [new mockTab("a", false)]);
michael@0 37
michael@0 38 ok(fakeGetNextTab(lonlyTab._selectedTab) == null, "null when only 1 tab left");
michael@0 39 ok(fakeGetNextTab(new mockTab("x", false)) == null, "null when tab doesnt exist");
michael@0 40
michael@0 41 let [twoTabs, fakeGetNextTab] = getMockBrowserTabs(
michael@0 42 [new mockTab("a", false), new mockTab("b", false)]);
michael@0 43 ok(fakeGetNextTab(twoTabs._selectedTab).name == "b", "get next tab");
michael@0 44 ok(fakeGetNextTab(twoTabs._tabs[1]).name == "a", "get selected tab");
michael@0 45
michael@0 46 let [twoTabsSecondSelected, fakeGetNextTab] = getMockBrowserTabs(
michael@0 47 [new mockTab("a", false), new mockTab("b", false)], 1);
michael@0 48 ok(fakeGetNextTab(twoTabsSecondSelected._selectedTab).name == "a", "get previous tab");
michael@0 49
michael@0 50 let [twoTabsOneClosing, fakeGetNextTab] = getMockBrowserTabs(
michael@0 51 [new mockTab("a", false), new mockTab("b", true)]);
michael@0 52 ok(fakeGetNextTab(twoTabsOneClosing._selectedTab) == null, "can't select closing tab");
michael@0 53 ok(fakeGetNextTab(twoTabsOneClosing._tabs[1]).name == "a", "get previous tab");
michael@0 54
michael@0 55 let [twoTabsBothClosing, fakeGetNextTab] = getMockBrowserTabs(
michael@0 56 [new mockTab("a", true), new mockTab("b", true)]);
michael@0 57 ok(fakeGetNextTab(twoTabsBothClosing._selectedTab) == null, "can't select closing tab");
michael@0 58 ok(fakeGetNextTab(twoTabsBothClosing._tabs[1]) == null, "can't select closing tab");
michael@0 59
michael@0 60 let [fiveTabsLastNotClosing, fakeGetNextTab] = getMockBrowserTabs(
michael@0 61 [new mockTab("a", false), new mockTab("b", true), new mockTab("c", true), new mockTab("d", true), new mockTab("e", false)]);
michael@0 62 ok(fakeGetNextTab(fiveTabsLastNotClosing._selectedTab).name == "e", "get next non-closing tab");
michael@0 63
michael@0 64 let [fiveTabsLastNotClosingLastSelected, fakeGetNextTab] = getMockBrowserTabs(
michael@0 65 [new mockTab("a", false), new mockTab("b", true), new mockTab("c", true), new mockTab("d", true), new mockTab("e", false)], 4);
michael@0 66 ok(fakeGetNextTab(fiveTabsLastNotClosingLastSelected._selectedTab).name == "a", "get previous non-closing tab");
michael@0 67 }
michael@0 68 });
michael@0 69
michael@0 70 function test() {
michael@0 71 runTests();
michael@0 72 }

mercurial