Tests modifying attributes of a TextTrackCue


** Test initial values.
RUN(textCue = cues.getCueById('1'))
EXPECTED (textCue.startTime == '0') OK
EXPECTED (textCue.endTime == '1') OK
EXPECTED (textCue.pauseOnExit == 'false') OK
EXPECTED (textCue.vertical == '') OK
EXPECTED (textCue.snapToLines == 'true') OK
EXPECTED (textCue.line == '-1') OK
EXPECTED (textCue.position == '50') OK
EXPECTED (textCue.size == '100') OK
EXPECTED (textCue.align == 'middle') OK

** Modify cue values.
RUN(textCue.startTime = 1.1)
EXPECTED (textCue.startTime == '1.1') OK

RUN(textCue.endTime = 3.9)
EXPECTED (textCue.endTime == '3.9') OK

RUN(textCue.pauseOnExit = true)
EXPECTED (textCue.pauseOnExit == 'true') OK

On setting, the text track cue writing direction must be set to the value ... is a case-sensitive match for the new value, if any. If none of the values match, then the user agent must instead throw a SyntaxError exception.
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-vertical
TEST(textCue.vertical = 'RL') THROWS(DOMException.SYNTAX_ERR) OK
EXPECTED (textCue.vertical == '') OK
RUN(textCue.vertical = 'rl')
EXPECTED (textCue.vertical == 'rl') OK

RUN(textCue.snapToLines = false)
EXPECTED (textCue.snapToLines == 'false') OK

On setting, if the text track cue snap-to-lines flag is not set, and the new value is negative or greater than 100, then throw an IndexSizeError exception.
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-line
TEST(textCue.line = -2) THROWS(DOMException.INDEX_SIZE_ERR) OK
TEST(textCue.line = 102) THROWS(DOMException.INDEX_SIZE_ERR) OK
EXPECTED (textCue.line == '-1') OK
RUN(textCue.line = 42)
EXPECTED (textCue.line == '42') OK
RUN(textCue.snapToLines = true)
RUN(textCue.line = -2)
EXPECTED (textCue.line == '-2') OK
RUN(textCue.line = 102)
EXPECTED (textCue.line == '102') OK

On setting, if the new value is negative or greater than 100, then throw an IndexSizeError exception. Otherwise, set the text track cue text position to the new value.
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-line
TEST(textCue.position = -200) THROWS(DOMException.INDEX_SIZE_ERR) OK
TEST(textCue.position = 110) THROWS(DOMException.INDEX_SIZE_ERR) OK
RUN(textCue.position = 11)
EXPECTED (textCue.position == '11') OK

On setting, if the new value is negative or greater than 100, then throw an IndexSizeError exception. Otherwise, set the text track cue size to the new value.
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-size
TEST(textCue.size = -200) THROWS(DOMException.INDEX_SIZE_ERR) OK
TEST(textCue.size = 110) THROWS(DOMException.INDEX_SIZE_ERR) OK
RUN(textCue.size = 57)
EXPECTED (textCue.size == '57') OK

On setting, the text track cue alignment must be set to the value ... is a case-sensitive match for the new value, if any. If none of the values match, then the user agent must instead throw a SyntaxError exception.
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-align
TEST(textCue.align = 'End') THROWS(DOMException.SYNTAX_ERR) OK
EXPECTED (textCue.align == 'middle') OK
RUN(textCue.align = 'end')
EXPECTED (textCue.align == 'end') OK

END OF TEST

