text
text
This verifies usage of isTextMarkerValid, indexForTextMarker and textMarkerForIndex.

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


PASS item1.isTextMarkerValid(firstTextMarker) is true
PASS item1.indexForTextMarker(firstTextMarker) is 0
PASS item1.textMarkerForIndex(0).isEqual(firstTextMarker) is true
PASS item1.isTextMarkerValid(firstTextMarker) is false
PASS item2.isTextMarkerValid(secondTextMarker) is true
PASS item2.indexForTextMarker(secondTextMarker) is 5
PASS item2.textMarkerForIndex(item2.indexForTextMarker(secondTextMarker)).isEqual(secondTextMarker) is true
PASS successfullyParsed is true

TEST COMPLETE

