テスト追加

git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@5275 599a83e7-65a4-db11-8015-0010dcdd6dc2
This commit is contained in:
piro 2009-10-26 16:49:02 +00:00
parent 91e0cbbf59
commit 088ca43386
2 changed files with 128 additions and 27 deletions

View File

@ -648,16 +648,19 @@ var TreeStyleTabService = {
).singleNodeValue;
},
getTabBrowserFromChild : function(aTab)
getTabBrowserFromChild : function(aTabBrowserChild)
{
if (!aTab) return null;
if (!aTabBrowserChild) return null;
if (aTab.__treestyletab__linkedTabBrowser)
return aTab.__treestyletab__linkedTabBrowser;
if (aTabBrowserChild.__treestyletab__linkedTabBrowser)
return aTabBrowserChild.__treestyletab__linkedTabBrowser;
if (aTabBrowserChild.localName == 'tabbrowser')
return aTabBrowserChild;
return this.evaluateXPath(
'ancestor-or-self::xul:tabbrowser',
aTab,
'ancestor::xul:tabbrowser[1]',
aTabBrowserChild,
XPathResult.FIRST_ORDERED_NODE_TYPE
).singleNodeValue;
},
@ -751,17 +754,18 @@ var TreeStyleTabService = {
).booleanValue;
},
getTabs : function(aTabBrowser)
getTabs : function(aTabBrowserChild)
{
var b = this.getTabBrowserFromChild(aTabBrowserChild);
return this.evaluateXPath(
'descendant::xul:tab',
aTabBrowser.mTabContainer
b.mTabContainer
);
},
getTabsArray : function(aTabBrowser)
getTabsArray : function(aTabBrowserChild)
{
var tabs = this.getTabs(aTabBrowser);
var tabs = this.getTabs(aTabBrowserChild);
var array = [];
for (var i = 0, maxi = tabs.snapshotLength; i < maxi; i++)
{
@ -770,20 +774,22 @@ var TreeStyleTabService = {
return array;
},
getFirstTab : function(aTabBrowser)
getFirstTab : function(aTabBrowserChild)
{
var b = this.getTabBrowserFromChild(aTabBrowserChild);
return this.evaluateXPath(
'descendant::xul:tab[1]',
aTabBrowser.mTabContainer,
'child::xul:tab[1]',
b.mTabContainer,
XPathResult.FIRST_ORDERED_NODE_TYPE
).singleNodeValue;
},
getLastTab : function(aTabBrowser)
getLastTab : function(aTabBrowserChild)
{
var b = this.getTabBrowserFromChild(aTabBrowserChild);
return this.evaluateXPath(
'descendant::xul:tab[last()]',
aTabBrowser.mTabContainer,
'child::xul:tab[last()]',
b.mTabContainer,
XPathResult.FIRST_ORDERED_NODE_TYPE
).singleNodeValue;
},
@ -846,28 +852,30 @@ var TreeStyleTabService = {
).singleNodeValue;
},
getLastVisibleTab : function(aTab)
getLastVisibleTab : function(aTabBrowserChild)
{
if (!aTab) return null;
var b = this.getTabBrowserFromChild(aTabBrowserChild);
if (!b) return null;
if (!this.canCollapseSubtree(aTab))
return this.getLastTab(aTab);
if (!this.canCollapseSubtree(b))
return this.getLastTab(b);
return this.evaluateXPath(
'child::xul:tab[not(@'+this.kCOLLAPSED+'="true")][last()]',
aTab.parentNode,
b.mTabContainer,
XPathResult.FIRST_ORDERED_NODE_TYPE
).singleNodeValue;
},
getVisibleTabs : function(aTab)
getVisibleTabs : function(aTabBrowserChild)
{
if (!this.canCollapseSubtree(aTab))
var b = this.getTabBrowserFromChild(aTabBrowserChild);
if (!this.canCollapseSubtree(b))
return this.getTabs(b);
var xpathResult = this.evaluateXPath(
'child::xul:tab[not(@'+this.kCOLLAPSED+'="true")]',
aTab.parentNode
b.mTabContainer
);
return xpathResult;
},

View File

@ -139,43 +139,136 @@ function test_getTabs()
assert.isNull(sv.getNextTab(tabs[3]));
assert.equals(tabs[1], sv.getPreviousTab(tabs[2]));
assert.isNull(sv.getPreviousTab(tabs[0]));
assert.equals(0, sv.getTabIndex(tabs[0]));
assert.equals(1, sv.getTabIndex(tabs[1]));
assert.equals(2, sv.getTabIndex(tabs[2]));
assert.equals(3, sv.getTabIndex(tabs[3]));
}
function test_tabsVisibility()
function test_canCollapseSubtree()
{
gBrowser.setAttribute(sv.kALLOW_COLLAPSE, true);
assert.isTrue(sv.canCollapseSubtree(gBrowser));
gBrowser.removeAttribute(sv.kALLOW_COLLAPSE);
assert.isFalse(sv.canCollapseSubtree(gBrowser));
}
function test_isCollapsed()
{
tabs[1].setAttribute(sv.kCOLLAPSED, true);
tabs[3].setAttribute(sv.kCOLLAPSED, true);
gBrowser.setAttribute(sv.kALLOW_COLLAPSE, true);
assert.isFalse(sv.isCollapsed(tabs[0]));
assert.isTrue(sv.isCollapsed(tabs[1]));
assert.isFalse(sv.isCollapsed(tabs[2]));
assert.isTrue(sv.isCollapsed(tabs[3]));
gBrowser.removeAttribute(sv.kALLOW_COLLAPSE);
assert.isFalse(sv.isCollapsed(tabs[0]));
assert.isFalse(sv.isCollapsed(tabs[1]));
assert.isFalse(sv.isCollapsed(tabs[2]));
assert.isFalse(sv.isCollapsed(tabs[3]));
}
function test_getNextVisibleTab()
{
tabs[1].setAttribute(sv.kCOLLAPSED, true);
tabs[3].setAttribute(sv.kCOLLAPSED, true);
gBrowser.setAttribute(sv.kALLOW_COLLAPSE, true);
assert.equals(tabs[2], sv.getNextVisibleTab(tabs[0]));
assert.equals(tabs[2], sv.getNextVisibleTab(tabs[1]));
assert.isNull(sv.getNextVisibleTab(tabs[2]));
assert.isNull(sv.getNextVisibleTab(tabs[3]));
gBrowser.removeAttribute(sv.kALLOW_COLLAPSE);
assert.equals(tabs[1], sv.getNextVisibleTab(tabs[0]));
assert.equals(tabs[2], sv.getNextVisibleTab(tabs[1]));
assert.equals(tabs[3], sv.getNextVisibleTab(tabs[2]));
assert.isNull(sv.getNextVisibleTab(tabs[3]));
}
function test_getPreviousVisibleTab()
{
tabs[1].setAttribute(sv.kCOLLAPSED, true);
tabs[3].setAttribute(sv.kCOLLAPSED, true);
gBrowser.setAttribute(sv.kALLOW_COLLAPSE, true);
assert.isNull(sv.getPreviousVisibleTab(tabs[0]));
assert.equals(tabs[0], sv.getPreviousVisibleTab(tabs[1]));
assert.equals(tabs[0], sv.getPreviousVisibleTab(tabs[2]));
assert.equals(tabs[2], sv.getPreviousVisibleTab(tabs[3]));
gBrowser.removeAttribute(sv.kALLOW_COLLAPSE);
assert.equals(tabs[1], sv.getNextVisibleTab(tabs[0]));
assert.equals(tabs[2], sv.getNextVisibleTab(tabs[1]));
assert.equals(tabs[3], sv.getNextVisibleTab(tabs[2]));
assert.isNull(sv.getNextVisibleTab(tabs[3]));
}
function test_getLastVisibleTab()
{
tabs[1].setAttribute(sv.kCOLLAPSED, true);
tabs[3].setAttribute(sv.kCOLLAPSED, true);
gBrowser.setAttribute(sv.kALLOW_COLLAPSE, true);
assert.equals(tabs[2], sv.getLastVisibleTab(tabs[0]));
assert.equals(tabs[2], sv.getLastVisibleTab(tabs[1]));
assert.equals(tabs[2], sv.getLastVisibleTab(tabs[2]));
assert.equals(tabs[2], sv.getLastVisibleTab(tabs[3]));
gBrowser.removeAttribute(sv.kALLOW_COLLAPSE);
assert.equals(tabs[3], sv.getLastVisibleTab(tabs[0]));
assert.equals(tabs[3], sv.getLastVisibleTab(tabs[1]));
assert.equals(tabs[3], sv.getLastVisibleTab(tabs[2]));
assert.equals(tabs[3], sv.getLastVisibleTab(tabs[3]));
}
function test_getVisibleTabs()
{
tabs[1].setAttribute(sv.kCOLLAPSED, true);
tabs[3].setAttribute(sv.kCOLLAPSED, true);
gBrowser.setAttribute(sv.kALLOW_COLLAPSE, true);
var visibleResult = sv.getVisibleTabs(tabs[0]);
assert.isTrue(visibleResult instanceof XPathResult);
assert.implementsInterface(Ci.nsIDOMXPathResult, visibleResult);
assert.equals(2, visibleResult.snapshotLength);
var visibleTabs = [];
for (var i = 0, maxi = visibleResult.snapshotLength; i < maxi; i++)
for (let i = 0, maxi = visibleResult.snapshotLength; i < maxi; i++)
{
visibleTabs.push(visibleResult.snapshotItem(i));
}
assert.equals(2, visibleTabs.length);
assert.equals([tabs[0], tabs[2]], visibleTabs);
gBrowser.removeAttribute(sv.kALLOW_COLLAPSE);
visibleResult = sv.getVisibleTabs(tabs[0]);
assert.implementsInterface(Ci.nsIDOMXPathResult, visibleResult);
assert.equals(4, visibleResult.snapshotLength);
}
function test_getVisibleIndex()
{
tabs[1].setAttribute(sv.kCOLLAPSED, true);
tabs[3].setAttribute(sv.kCOLLAPSED, true);
gBrowser.setAttribute(sv.kALLOW_COLLAPSE, true);
assert.equals(0, sv.getVisibleIndex(tabs[0]));
assert.equals(-1, sv.getVisibleIndex(tabs[1]));
assert.equals(1, sv.getVisibleIndex(tabs[2]));
assert.equals(-1, sv.getVisibleIndex(tabs[3]));
gBrowser.removeAttribute(sv.kALLOW_COLLAPSE);
assert.equals(0, sv.getVisibleIndex(tabs[0]));
assert.equals(1, sv.getVisibleIndex(tabs[1]));
assert.equals(2, sv.getVisibleIndex(tabs[2]));
assert.equals(3, sv.getVisibleIndex(tabs[3]));
}
var randomKey = 'key-'+parseInt(Math.random() * 65000);