(listView, expectedItemsPerBlock?)
| 196 | } |
| 197 | |
| 198 | function validateGroupedTree(listView, expectedItemsPerBlock?) { |
| 199 | expectedItemsPerBlock = expectedItemsPerBlock || STRUCTURENODE_SIZE; |
| 200 | |
| 201 | var containers, |
| 202 | itemsContainers = listView.element.querySelectorAll(".win-itemscontainer"), |
| 203 | headers = listView.element.querySelectorAll(".win-groupheadercontainer"); |
| 204 | |
| 205 | LiveUnit.Assert.areEqual(listView.groupDataSource.list.length, itemsContainers.length); |
| 206 | LiveUnit.Assert.areEqual(listView.groupDataSource.list.length, headers.length); |
| 207 | |
| 208 | if (!listView._view.tree[0].itemsContainer.itemsBlocks) { |
| 209 | containers = listView.element.querySelectorAll(".win-container"); |
| 210 | |
| 211 | LiveUnit.Assert.areEqual(listView.itemDataSource.list.length, containers.length); |
| 212 | for (var i = 0, len = containers.length; i < len; i++) { |
| 213 | var container = containers[i], |
| 214 | itemBox = container.firstElementChild; |
| 215 | |
| 216 | LiveUnit.Assert.areEqual(container, listView._view.containers[i]); |
| 217 | |
| 218 | if (itemBox) { |
| 219 | LiveUnit.Assert.isTrue(WinJS.Utilities.hasClass(itemBox, "win-itembox")); |
| 220 | LiveUnit.Assert.areEqual(listView.selection._isIncluded(i), WinJS.Utilities.hasClass(container, "win-selected")); |
| 221 | LiveUnit.Assert.areEqual(listView.selection._isIncluded(i), WinJS.Utilities.hasClass(itemBox, "win-selected")); |
| 222 | } else { |
| 223 | LiveUnit.Assert.isFalse(WinJS.Utilities.hasClass(container, "win-selected")); |
| 224 | } |
| 225 | } |
| 226 | |
| 227 | |
| 228 | LiveUnit.Assert.areEqual(containers.length - 1, listView._view.lastItemIndex()); |
| 229 | } else { |
| 230 | verifyContainerStripesByIndex(listView); |
| 231 | } |
| 232 | |
| 233 | var prevElement = listView.element.querySelector("._win-proxy"); |
| 234 | for (var i = 0, itemIndex = 0, blockIndex = 0, len = listView._view.tree.length; i < len; i++) { |
| 235 | var group = listView._view.tree[i]; |
| 236 | |
| 237 | LiveUnit.Assert.areEqual(headers[i], group.header); |
| 238 | LiveUnit.Assert.areEqual(itemsContainers[i], group.itemsContainer.element); |
| 239 | |
| 240 | LiveUnit.Assert.areEqual(prevElement.nextElementSibling, group.header); |
| 241 | LiveUnit.Assert.areEqual(group.header.nextElementSibling, group.itemsContainer.element); |
| 242 | |
| 243 | if (group.itemsContainer.itemsBlocks) { |
| 244 | var blocks = group.itemsContainer.itemsBlocks; |
| 245 | for (var j = 0; j < blocks.length; j++) { |
| 246 | var block = blocks[j]; |
| 247 | |
| 248 | LiveUnit.Assert.isTrue(j + 1 >= blocks.length || block.element.children.length === expectedItemsPerBlock); |
| 249 | |
| 250 | for (var n = 0; n < block.items.length; n++) { |
| 251 | LiveUnit.Assert.areEqual(listView._view.containers[itemIndex++], block.items[n]); |
| 252 | } |
| 253 | } |
| 254 | } else { |
| 255 | for (var n = 0; n < group.itemsContainer.items.length; n++) { |
no test coverage detected