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

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



Create a new SVGLength object, with value=150
PASS newLength1.value is 150

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

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

Append fourth item x=900 to the text1 x list
PASS text1.x.baseVal.appendItem(text1.x.baseVal.getItem(3)) is text1.x.baseVal.getItem(5)
PASS text1.x.baseVal.removeItem(3).toString() is "[object SVGLength]"
PASS text1.x.baseVal.numberOfItems is 5
PASS text1.x.baseVal.getItem(0).value is 500
PASS text1.x.baseVal.getItem(1).value is 50
PASS text1.x.baseVal.getItem(2).value is 100
PASS text1.x.baseVal.getItem(3).value is 1000
PASS text1.x.baseVal.getItem(4).value is 900
PASS text1.x.baseVal.getItem(5) threw exception IndexSizeError: The index is not in the allowed range..

Append first item x=500 to the text1 x list
PASS text1.x.baseVal.appendItem(text1.x.baseVal.getItem(0)) is text1.x.baseVal.getItem(5)
PASS text1.x.baseVal.removeItem(0).toString() is "[object SVGLength]"
PASS text1.x.baseVal.numberOfItems is 5
PASS text1.x.baseVal.getItem(0).value is 50
PASS text1.x.baseVal.getItem(1).value is 100
PASS text1.x.baseVal.getItem(2).value is 1000
PASS text1.x.baseVal.getItem(3).value is 900
PASS text1.x.baseVal.getItem(4).value is 500
PASS text1.x.baseVal.getItem(5) threw exception IndexSizeError: The index is not in the allowed range..

Append 'newLength1' to the text1 x list
PASS text1.x.baseVal.appendItem(newLength1) is text1.x.baseVal.getItem(5)
PASS text1.x.baseVal.numberOfItems is 6
PASS text1.x.baseVal.getItem(0).value is 50
PASS text1.x.baseVal.getItem(1).value is 100
PASS text1.x.baseVal.getItem(2).value is 1000
PASS text1.x.baseVal.getItem(3).value is 900
PASS text1.x.baseVal.getItem(4).value is 500
PASS text1.x.baseVal.getItem(5).value is 150
PASS text1.x.baseVal.getItem(6) threw exception IndexSizeError: The index is not in the allowed range..

Append third and fourth item of the text1 x list to the text2 x list
PASS text2.x.baseVal.appendItem(text1.x.baseVal.getItem(2)).value is 1000
PASS text1.x.baseVal.removeItem(2).toString() is "[object SVGLength]"
PASS text2.x.baseVal.appendItem(text1.x.baseVal.getItem(2)).value is 900
PASS text1.x.baseVal.removeItem(2).toString() is "[object SVGLength]"
PASS text1.x.baseVal.numberOfItems is 4
PASS text1.x.baseVal.getItem(0).value is 50
PASS text1.x.baseVal.getItem(1).value is 100
PASS text1.x.baseVal.getItem(2).value is 500
PASS text1.x.baseVal.getItem(3).value is 150
PASS text1.x.baseVal.getItem(4) threw exception IndexSizeError: The index is not in the allowed range..
PASS text2.x.baseVal.numberOfItems is 5
PASS text2.x.baseVal.getItem(0).value is 50
PASS text2.x.baseVal.getItem(1).value is 100
PASS text2.x.baseVal.getItem(2).value is 1000
PASS text2.x.baseVal.getItem(3).value is 1000
PASS text2.x.baseVal.getItem(4).value is 900
PASS text2.x.baseVal.getItem(5) threw exception IndexSizeError: The index is not in the allowed range..
PASS newLength2.value is 150

Shuffle around items in text1 and text2 list using appendItem, to get x=50,100,150,... in both lists
PASS text1.x.baseVal.appendItem(text1.x.baseVal.getItem(2)).value is 500
PASS text1.x.baseVal.removeItem(2).toString() is "[object SVGLength]"
PASS text2.x.baseVal.appendItem(newLength2).value is 150
PASS text2.x.baseVal.appendItem(text2.x.baseVal.getItem(2)).value is 1000
PASS text2.x.baseVal.removeItem(2).toString() is "[object SVGLength]"
PASS text2.x.baseVal.appendItem(text2.x.baseVal.getItem(3)).value is 900
PASS text2.x.baseVal.removeItem(3).toString() is "[object SVGLength]"
PASS text2.x.baseVal.appendItem(text2.x.baseVal.getItem(2)).value is 1000
PASS text2.x.baseVal.removeItem(2).toString() is "[object SVGLength]"
PASS text1.x.baseVal.numberOfItems is 4
PASS text1.x.baseVal.getItem(0).value is 50
PASS text1.x.baseVal.getItem(1).value is 100
PASS text1.x.baseVal.getItem(2).value is 150
PASS text1.x.baseVal.getItem(3).value is 500
PASS text1.x.baseVal.getItem(4) threw exception IndexSizeError: The index is not in the allowed range..
PASS text2.x.baseVal.numberOfItems is 6
PASS text2.x.baseVal.getItem(0).value is 50
PASS text2.x.baseVal.getItem(1).value is 100
PASS text2.x.baseVal.getItem(2).value is 150
PASS text2.x.baseVal.getItem(3).value is 1000
PASS text2.x.baseVal.getItem(4).value is 900
PASS text2.x.baseVal.getItem(5).value is 1000
PASS text2.x.baseVal.getItem(6) threw exception IndexSizeError: The index is not in the allowed range..

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

PASS successfullyParsed is true

TEST COMPLETE

