Test touch adjustment over pseudo elements. Pseudo elements should be candidates for adjustment, but should not themselves be returned as valid target nodes.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Test touch area contained within the pseudo element.
PASS adjustedNode.id is element.id
PASS adjustedPoint.x >= targetBounds.left is true
PASS adjustedPoint.x <= targetBounds.left + targetBounds.width is true
PASS adjustedPoint.y >= targetBounds.top is true
PASS adjustedPoint.y <= targetBounds.top + targetBounds.height is true
PASS adjustedPoint.x >= touchBounds.x is true
PASS adjustedPoint.x <= touchBounds.x + touchBounds.width is true
PASS adjustedPoint.y >= touchBounds.y is true
PASS adjustedPoint.y <= touchBounds.y + touchBounds.height is true

Overlapping touch above the target should snap to the top of the pseudo element.
PASS adjustedNode.id is element.id
PASS adjustedPoint.x >= targetBounds.left is true
PASS adjustedPoint.x <= targetBounds.left + targetBounds.width is true
PASS adjustedPoint.y >= targetBounds.top is true
PASS adjustedPoint.y <= targetBounds.top + targetBounds.height is true
PASS adjustedPoint.x >= touchBounds.x is true
PASS adjustedPoint.x <= touchBounds.x + touchBounds.width is true
PASS adjustedPoint.y >= touchBounds.y is true
PASS adjustedPoint.y <= touchBounds.y + touchBounds.height is true

Overlapping touch below the target should snap to the bottom of the pseudo element.
PASS adjustedNode.id is element.id
PASS adjustedPoint.x >= targetBounds.left is true
PASS adjustedPoint.x <= targetBounds.left + targetBounds.width is true
PASS adjustedPoint.y >= targetBounds.top is true
PASS adjustedPoint.y <= targetBounds.top + targetBounds.height is true
PASS adjustedPoint.x >= touchBounds.x is true
PASS adjustedPoint.x <= touchBounds.x + touchBounds.width is true
PASS adjustedPoint.y >= touchBounds.y is true
PASS adjustedPoint.y <= touchBounds.y + touchBounds.height is true

Overlapping touch left of the target should snap to the left side of the pseudo element.
PASS adjustedNode.id is element.id
PASS adjustedPoint.x >= targetBounds.left is true
PASS adjustedPoint.x <= targetBounds.left + targetBounds.width is true
PASS adjustedPoint.y >= targetBounds.top is true
PASS adjustedPoint.y <= targetBounds.top + targetBounds.height is true
PASS adjustedPoint.x >= touchBounds.x is true
PASS adjustedPoint.x <= touchBounds.x + touchBounds.width is true
PASS adjustedPoint.y >= touchBounds.y is true
PASS adjustedPoint.y <= touchBounds.y + touchBounds.height is true

Overlapping touch right of the target should snap to the right side of the pseudo element.
PASS adjustedNode.id is element.id
PASS adjustedPoint.x >= targetBounds.left is true
PASS adjustedPoint.x <= targetBounds.left + targetBounds.width is true
PASS adjustedPoint.y >= targetBounds.top is true
PASS adjustedPoint.y <= targetBounds.top + targetBounds.height is true
PASS adjustedPoint.x >= touchBounds.x is true
PASS adjustedPoint.x <= touchBounds.x + touchBounds.width is true
PASS adjustedPoint.y >= touchBounds.y is true
PASS adjustedPoint.y <= touchBounds.y + touchBounds.height is true

PASS successfullyParsed is true

TEST COMPLETE

