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

