This is one line wrapped because of the maximum width of its container.

This is another line wrapped
because of one forced
line break in the middle.

This tests the ability to get element text for different granularities and offsets.

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


PASS paragraph.characterAtOffset(16) is ' , 16, 17'
PASS paragraph.wordAtOffset(16) is 'line , 12, 17'
PASS paragraph.lineAtOffset(17) is 'wrapped because , 17, 33'
PASS paragraph.characterAtOffset(28) is '\n, 28, 29'
PASS paragraph.wordAtOffset(28) is 'wrapped\n, 21, 29'
PASS paragraph.lineAtOffset(30) is 'because of one forced\n, 29, 51'
PASS successfullyParsed is true

TEST COMPLETE

