ABC
ABC
ABC
ABC
ABC
This is a test of the SVGLengthList::initialize() API.

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


Check initial list state of text1
PASS text1.x.baseVal.numberOfItems is 3
PASS text1.x.baseVal.getItem(0).value is 500
PASS text1.x.baseVal.getItem(1).value is 1000
PASS text1.x.baseVal.getItem(2).value is 1500
PASS text1.x.baseVal.getItem(3) threw exception IndexSizeError: The index is not in the allowed range..

Check initial list state of text2
PASS text2.x.baseVal.numberOfItems is 2
PASS text2.x.baseVal.getItem(0).value is 50
PASS text2.x.baseVal.getItem(1).value is 500
PASS text2.x.baseVal.getItem(2) threw exception IndexSizeError: The index is not in the allowed range..

Check initial list state of text3
PASS text3.x.baseVal.numberOfItems is 3
PASS text3.x.baseVal.getItem(0).value is 50
PASS text3.x.baseVal.getItem(1).value is 500
PASS text3.x.baseVal.getItem(2).value is 50
PASS text3.x.baseVal.getItem(3) threw exception IndexSizeError: The index is not in the allowed range..

Check initial list state of text4
PASS text4.x.baseVal.numberOfItems is 1
PASS text4.x.baseVal.getItem(0).value is 500
PASS text4.x.baseVal.getItem(1) threw exception IndexSizeError: The index is not in the allowed range..

Create a new SVGLength object, that will be the only x coordinate in the first text element.
PASS newLength.value is 50

Initialize SVGLengthList with 'newLength'
PASS text1.x.baseVal.initialize(newLength) is newLength
PASS text1.x.baseVal.getItem(0) is newLength

Take the second x item '500' of the second text element, store it in 'itemInAnotherList' change it to '50'
PASS text2.x.baseVal.getItem(1).value is 500
PASS text2.x.baseVal.getItem(1).value is 50

Override the third text elements x list with the item x=50 from the second text element, where it should be removed afterwards
PASS text3.x.baseVal.initialize(itemInAnotherList) is text3.x.baseVal.getItem(0)
PASS text2.x.baseVal.removeItem(1).toString() is "[object SVGLength]"
PASS text3.x.baseVal.getItem(0).value is 50
PASS text2.x.baseVal.getItem(0).value is 50
PASS text2.x.baseVal.getItem(1) threw exception IndexSizeError: The index is not in the allowed range..

Assure that the 'itemInAnotherList' item is still live anymore, set value to 999 then back to 50
PASS itemInAnotherList.value = 999; is 999
PASS itemInAnotherList.value is 999
PASS text3.x.baseVal.getItem(0).value is 999
PASS itemInAnotherList.value = 50; is 50
PASS itemInAnotherList.value is 50
PASS text3.x.baseVal.getItem(0).value is 50

Move item from text3 to text4
PASS text4.x.baseVal.initialize(text3.x.baseVal.getItem(0)) is text4.x.baseVal.getItem(0)
PASS text3.x.baseVal.removeItem(0).toString() is "[object SVGLength]"
PASS text4.x.baseVal.getItem(0).value is 50
PASS text3.x.baseVal.getItem(0) threw exception IndexSizeError: The index is not in the allowed range..

Initialize text3 using setAttribute('x', '50')
PASS text3.x.baseVal.getItem(0).value is 50

Final check whether the lists all look like expected
PASS text1.x.baseVal.getItem(0).value is 50
PASS text2.x.baseVal.getItem(0).value is 50
PASS text3.x.baseVal.getItem(0).value is 50
PASS text4.x.baseVal.getItem(0).value is 50
PASS text1.x.baseVal.numberOfItems is 1
PASS text2.x.baseVal.numberOfItems is 1
PASS text3.x.baseVal.numberOfItems is 1
PASS text4.x.baseVal.numberOfItems is 1
PASS text1.x.baseVal.getItem(1) threw exception IndexSizeError: The index is not in the allowed range..
PASS text2.x.baseVal.getItem(1) threw exception IndexSizeError: The index is not in the allowed range..
PASS text3.x.baseVal.getItem(1) threw exception IndexSizeError: The index is not in the allowed range..
PASS text4.x.baseVal.getItem(1) threw exception IndexSizeError: The index is not in the allowed range..

The test passes if you only see 'PASS' messages, and all five text elements on top look the same

PASS successfullyParsed is true

TEST COMPLETE

