1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/tests/mochitest/selectable.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,80 @@ 1.4 +/** 1.5 + * Test selection getter methods of nsIAccessibleSelectable. 1.6 + * 1.7 + * @param aIdentifier [in] selectable container accessible 1.8 + * @param aSelectedChildren [in] array of selected children 1.9 + */ 1.10 +function testSelectableSelection(aIdentifier, aSelectedChildren, aMsg) 1.11 +{ 1.12 + var acc = getAccessible(aIdentifier, [nsIAccessibleSelectable]); 1.13 + if (!acc) 1.14 + return; 1.15 + 1.16 + var msg = aMsg ? aMsg : ""; 1.17 + var len = aSelectedChildren.length; 1.18 + 1.19 + // getSelectedChildren 1.20 + var selectedChildren = acc.selectedItems; 1.21 + is(selectedChildren ? selectedChildren.length : 0, len, 1.22 + msg + "getSelectedChildren: wrong selected children count for " + 1.23 + prettyName(aIdentifier)); 1.24 + 1.25 + for (var idx = 0; idx < len; idx++) { 1.26 + var expectedAcc = getAccessible(aSelectedChildren[idx]); 1.27 + var actualAcc = selectedChildren.queryElementAt(idx, nsIAccessible); 1.28 + is(actualAcc, expectedAcc, 1.29 + msg + "getSelectedChildren: wrong selected child at index " + idx + 1.30 + " for " + prettyName(aIdentifier) + " { actual : " + 1.31 + prettyName(actualAcc) + ", expected: " + prettyName(expectedAcc) + "}"); 1.32 + } 1.33 + 1.34 + // selectedItemCount 1.35 + is(acc.selectedItemCount, aSelectedChildren.length, 1.36 + "selectedItemCount: wrong selected children count for " + prettyName(aIdentifier)); 1.37 + 1.38 + // getSelectedItemAt 1.39 + for (var idx = 0; idx < len; idx++) { 1.40 + var expectedAcc = getAccessible(aSelectedChildren[idx]); 1.41 + is(acc.getSelectedItemAt(idx), expectedAcc, 1.42 + msg + "getSelectedItemAt: wrong selected child at index " + idx + " for " + 1.43 + prettyName(aIdentifier)); 1.44 + } 1.45 + 1.46 + // isItemSelected 1.47 + testIsItemSelected(acc, acc, { value: 0 }, aSelectedChildren, msg); 1.48 +} 1.49 + 1.50 +/** 1.51 + * Test isItemSelected method, helper for testSelectableSelection 1.52 + */ 1.53 +function testIsItemSelected(aSelectAcc, aTraversedAcc, aIndexObj, aSelectedChildren, aMsg) 1.54 +{ 1.55 + var childCount = aTraversedAcc.childCount; 1.56 + for (var idx = 0; idx < childCount; idx++) { 1.57 + var child = aTraversedAcc.getChildAt(idx); 1.58 + var [state, extraState] = getStates(child); 1.59 + if (state & STATE_SELECTABLE) { 1.60 + var isSelected = false; 1.61 + var len = aSelectedChildren.length; 1.62 + for (var jdx = 0; jdx < len; jdx++) { 1.63 + if (child == getAccessible(aSelectedChildren[jdx])) { 1.64 + isSelected = true; 1.65 + break; 1.66 + } 1.67 + } 1.68 + 1.69 + // isItemSelected 1.70 + is(aSelectAcc.isItemSelected(aIndexObj.value++), isSelected, 1.71 + aMsg + "isItemSelected: wrong selected child " + prettyName(child) + 1.72 + " for " + prettyName(aSelectAcc)); 1.73 + 1.74 + // selected state 1.75 + testStates(child, isSelected ? STATE_SELECTED : 0, 0, 1.76 + !isSelected ? STATE_SELECTED : 0 , 0); 1.77 + 1.78 + continue; 1.79 + } 1.80 + 1.81 + testIsItemSelected(aSelectAcc, child, aIndexObj, aSelectedChildren); 1.82 + } 1.83 +}