diff --git a/.phpunit.result.cache b/.phpunit.result.cache
index 806c301..0981ac6 100644
--- a/.phpunit.result.cache
+++ b/.phpunit.result.cache
@@ -1 +1 @@
-{"version":1,"defects":{"Yiisoft\\Html\\Tests\\Tag\\BaseMathML\\MathTest::testInline":5,"Yiisoft\\Html\\Tests\\Tag\\BaseMathML\\MathTest::testBlock":3,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testImmutability":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelNull":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabelWithId":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelWithAttributes":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabel":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueDisabled":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelId":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabel":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabelNoWrap":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValue":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testChecked":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueWithLabel":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelWithId":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueForm":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testWithoutLabelEncode":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelEmpty":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testDisabled":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testRequired":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testForm":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testImmutability":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testName":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testValue":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testReadonly":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testClose":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testBase":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testOpen":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #2":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #0":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #1":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #1":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #0":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #3":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #2":5,"Error":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #0":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #1":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #3":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #2":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #0":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #1":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #0":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #1":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #2":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #3":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testImmutable":4},"times":{"Yiisoft\\Html\\Tests\\Tag\\BaseMathML\\MathTest::testInline":0.003,"Yiisoft\\Html\\Tests\\Tag\\BaseMathML\\MathTest::testBlock":0,"Yiisoft\\Html\\Tests\\Widget\\RadioListTest::testIndividualInputAttributesMerge":0.004,"Yiisoft\\Html\\Tests\\Widget\\RadioListTest::testIndividualUncheckInputAttributes":0,"Yiisoft\\Html\\Tests\\Widget\\RadioListTest::testIndividualInputAttributes":0,"Yiisoft\\Html\\Tests\\Widget\\RadioListTest::testIndividualInputAttributesReplace":0,"Yiisoft\\Html\\Tests\\Tag\\DivTest::testBase":0,"Yiisoft\\Html\\Tests\\HtmlTest::testDiv":0,"Yiisoft\\Html\\Tests\\Widget\\CheckboxListTest::testIndividualInputAttributesReplace":0.001,"Yiisoft\\Html\\Tests\\Widget\\CheckboxListTest::testIndividualUncheckInputAttributes":0,"Yiisoft\\Html\\Tests\\Widget\\CheckboxListTest::testAddIndividualInputAttributes":0,"Yiisoft\\Html\\Tests\\Widget\\CheckboxListTest::testIndividualInputAttributesMerge":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testImmutability":0.001,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelNull":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabelWithId":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelWithAttributes":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabel":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueDisabled":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelId":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabel":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabelNoWrap":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValue":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testChecked":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueWithLabel":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelWithId":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueForm":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testWithoutLabelEncode":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelEmpty":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testDisabled":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testRequired":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testForm":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testImmutability":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testName":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testValue":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testReadonly":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testClose":0.002,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testBase":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testOpen":0,"Yiisoft\\Html\\Tests\\HtmlTest::testNormalTag":0.002,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MathTest::testBlock":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MathTest::testInline":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar":0.002,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #1":0.003,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testIdentifier with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testIdentifier with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testIdentifier with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testNormal with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testNormal with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testOperator with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testOperator with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testOperator with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testOperator with data set #1":0,"Error":0.001,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderoverTest::testAccent with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderoverTest::testAccent with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderoverTest::testAccentunder with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderoverTest::testAccentunder with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MathTest::testImmutable":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLargeop with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLargeop with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLargeop with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLspace with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLspace with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLspace with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLspace with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMinSize with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMinSize with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMinSize with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMinSize with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMovablelimits with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMovablelimits with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMovablelimits with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testRspace with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testRspace with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testRspace with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testRspace with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSeparator with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSeparator with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSeparator with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testStretchy with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testStretchy with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testStretchy with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSymmetric with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSymmetric with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSymmetric with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testImmutable":0}}
\ No newline at end of file
+{"version":1,"defects":{"Yiisoft\\Html\\Tests\\Tag\\BaseMathML\\MathTest::testInline":5,"Yiisoft\\Html\\Tests\\Tag\\BaseMathML\\MathTest::testBlock":3,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testImmutability":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelNull":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabelWithId":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelWithAttributes":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabel":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueDisabled":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelId":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabel":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabelNoWrap":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValue":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testChecked":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueWithLabel":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelWithId":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueForm":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testWithoutLabelEncode":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelEmpty":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testDisabled":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testRequired":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testForm":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testImmutability":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testName":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testValue":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testReadonly":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testClose":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testBase":4,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testOpen":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #2":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #0":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #1":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #1":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #0":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #3":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #2":5,"Error":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #0":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #1":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #3":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #2":5,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #0":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #1":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #0":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #1":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #2":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #3":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testImmutable":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MmultiscriptsTest::testAbcd":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MmultiscriptsTest::testCustomMprescripts":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoverTest::testMover with data set #2":3,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoverTest::testMover with data set #0":4,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoverTest::testMover with data set #1":3},"times":{"Yiisoft\\Html\\Tests\\Tag\\BaseMathML\\MathTest::testInline":0.003,"Yiisoft\\Html\\Tests\\Tag\\BaseMathML\\MathTest::testBlock":0,"Yiisoft\\Html\\Tests\\Widget\\RadioListTest::testIndividualInputAttributesMerge":0.004,"Yiisoft\\Html\\Tests\\Widget\\RadioListTest::testIndividualUncheckInputAttributes":0,"Yiisoft\\Html\\Tests\\Widget\\RadioListTest::testIndividualInputAttributes":0,"Yiisoft\\Html\\Tests\\Widget\\RadioListTest::testIndividualInputAttributesReplace":0,"Yiisoft\\Html\\Tests\\Tag\\DivTest::testBase":0,"Yiisoft\\Html\\Tests\\HtmlTest::testDiv":0,"Yiisoft\\Html\\Tests\\Widget\\CheckboxListTest::testIndividualInputAttributesReplace":0.001,"Yiisoft\\Html\\Tests\\Widget\\CheckboxListTest::testIndividualUncheckInputAttributes":0,"Yiisoft\\Html\\Tests\\Widget\\CheckboxListTest::testAddIndividualInputAttributes":0,"Yiisoft\\Html\\Tests\\Widget\\CheckboxListTest::testIndividualInputAttributesMerge":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testImmutability":0.001,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelNull":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabelWithId":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelWithAttributes":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabel":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueDisabled":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelId":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabel":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testLabelNoWrap":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValue":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testChecked":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueWithLabel":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelWithId":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testUncheckValueForm":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testWithoutLabelEncode":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\BooleanInputTagTest::testSideLabelEmpty":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testDisabled":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testRequired":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testForm":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testImmutability":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testName":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testValue":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\InputTagTest::testReadonly":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testClose":0.002,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testBase":0,"Yiisoft\\Html\\Tests\\Tag\\Base\\NormalTagTest::testOpen":0,"Yiisoft\\Html\\Tests\\HtmlTest::testNormalTag":0.002,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MathTest::testBlock":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MathTest::testInline":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar":0.002,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MfracTest::testBar with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MnTest::testValue with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testIdentifier with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testIdentifier with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testIdentifier with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testNormal with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MiTest::testNormal with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testOperator with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testOperator with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testOperator with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testOperator with data set #1":0,"Error":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testForm with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderoverTest::testAccent with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderoverTest::testAccent with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderoverTest::testAccentunder with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderoverTest::testAccentunder with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MathTest::testImmutable":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testFence with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLargeop with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLargeop with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLargeop with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLspace with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLspace with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLspace with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testLspace with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMaxSize with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMinSize with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMinSize with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMinSize with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMinSize with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMovablelimits with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMovablelimits with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testMovablelimits with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testRspace with data set #3":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testRspace with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testRspace with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testRspace with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSeparator with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSeparator with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSeparator with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testStretchy with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testStretchy with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testStretchy with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSymmetric with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSymmetric with data set #1":0.003,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testSymmetric with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoTest::testImmutable":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MmultiscriptsTest::testAbcd":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MmultiscriptsTest::testSimple":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MmultiscriptsTest::testWithoutPre":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MmultiscriptsTest::testCustomMprescripts":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoverTest::testMover with data set #2":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoverTest::testMover with data set #0":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MoverTest::testMover with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderTest::testMunder with data set #1":0,"Yiisoft\\Html\\Tests\\Tag\\MathML\\MunderTest::testMunder with data set #0":0}}
\ No newline at end of file
diff --git a/src/Tag/MathML/Mmultiscripts.php b/src/Tag/MathML/Mmultiscripts.php
new file mode 100644
index 0000000..5a64b75
--- /dev/null
+++ b/src/Tag/MathML/Mmultiscripts.php
@@ -0,0 +1,77 @@
+base . "\n" . implode("\n", $this->post) . "\n";
+
+ if ($this->pre) {
+ $mprescripts = $this->mprescripts ?? Mprescripts::tag();
+ $content .= $mprescripts . "\n" . implode("\n", $this->pre) . "\n";
+ }
+
+ return $content;
+ }
+
+ public function base(MathItemInterface $base): self
+ {
+ $new = clone $this;
+ $new->base = $base;
+
+ return $new;
+ }
+
+ public function post(MathItemInterface $item, MathItemInterface ...$items): self
+ {
+ $new = clone $this;
+
+ if ($items) {
+ $new->post = [...[$item], ...$items];
+ } else {
+ $new->post = [$item];
+ }
+
+ return $new;
+ }
+
+ public function pre(MathItemInterface ...$items): self
+ {
+ $new = clone $this;
+ $new->pre = $items;
+
+ return $new;
+ }
+
+ public function mprescripts(Mprescripts|null $mprescripts): self
+ {
+ $new = clone $this;
+ $new->mprescripts = $mprescripts;
+
+ return $new;
+ }
+}
diff --git a/src/Tag/MathML/Mover.php b/src/Tag/MathML/Mover.php
new file mode 100644
index 0000000..8bb188e
--- /dev/null
+++ b/src/Tag/MathML/Mover.php
@@ -0,0 +1,24 @@
+attributes['accent'] = $accent ? 'true' : 'false';
+
+ return $new;
+ }
+}
diff --git a/src/Tag/MathML/Mprescripts.php b/src/Tag/MathML/Mprescripts.php
new file mode 100644
index 0000000..b6a4a71
--- /dev/null
+++ b/src/Tag/MathML/Mprescripts.php
@@ -0,0 +1,15 @@
+attributes['accentunder'] = $accentunder ? 'true' : 'false';
+
+ return $new;
+ }
+}
diff --git a/tests/Tag/MathML/MmultiscriptsTest.php b/tests/Tag/MathML/MmultiscriptsTest.php
new file mode 100644
index 0000000..068cffc
--- /dev/null
+++ b/tests/Tag/MathML/MmultiscriptsTest.php
@@ -0,0 +1,94 @@
+base(Mi::tag()->identifier('X'))
+ ->post(
+ Mi::tag()->identifier('a'),
+ Mi::tag()->identifier('b'),
+ )
+ ->pre(
+ Mi::tag()->identifier('c'),
+ Mi::tag()->identifier('d'),
+ );
+
+ $this->assertSame(
+ '' . "\n" .
+ 'X' . "\n" .
+ 'a' . "\n" .
+ 'b' . "\n" .
+ '' . "\n" .
+ 'c' . "\n" .
+ 'd' . "\n" .
+ '',
+ (string) $mmultiscripts
+ );
+ }
+
+ public function testWithoutPre(): void
+ {
+ $mmultiscripts = Mmultiscripts::tag()
+ ->base(Mi::tag()->identifier('X'))
+ ->post(
+ Mi::tag()->identifier('a'),
+ Mi::tag()->identifier('b'),
+ );
+
+ $this->assertSame(
+ '' . "\n" .
+ 'X' . "\n" .
+ 'a' . "\n" .
+ 'b' . "\n" .
+ '',
+ (string) $mmultiscripts
+ );
+ }
+
+ public function testCustomMprescripts(): void
+ {
+ $mmultiscripts = Mmultiscripts::tag()
+ ->base(Mi::tag()->identifier('X'))
+ ->mprescripts(Mprescripts::tag()->id('test-id'))
+ ->post(
+ Mn::tag()->value(1),
+ Mn::tag()->value(2),
+ Mn::tag()->value(3),
+ Mn::tag()->value(4),
+ )
+ ->pre(
+ Mn::tag()->value(5),
+ Mn::tag()->value(6),
+ Mn::tag()->value(7),
+ Mn::tag()->value(8),
+ );
+
+ $this->assertSame(
+ '' . "\n" .
+ 'X' . "\n" .
+ '1' . "\n" .
+ '2' . "\n" .
+ '3' . "\n" .
+ '4' . "\n" .
+ '' . "\n" .
+ '5' . "\n" .
+ '6' . "\n" .
+ '7' . "\n" .
+ '8' . "\n" .
+ '',
+ (string) $mmultiscripts
+ );
+ }
+}
diff --git a/tests/Tag/MathML/MoverTest.php b/tests/Tag/MathML/MoverTest.php
new file mode 100644
index 0000000..d30fea8
--- /dev/null
+++ b/tests/Tag/MathML/MoverTest.php
@@ -0,0 +1,56 @@
+accent($accent)
+ ->items(
+ Mrow::tag()
+ ->items(
+ Mi::tag()->identifier('x'),
+ Mo::tag()->operator('+'),
+ Mi::tag()->identifier('y'),
+ Mo::tag()->operator('+'),
+ Mi::tag()->identifier('z'),
+ ),
+ Mo::tag()->operator('⏞'),
+ );
+
+ $this->assertSame(
+ '' . "\n" .
+ '' . "\n" .
+ 'x' . "\n" .
+ '+' . "\n" .
+ 'y' . "\n" .
+ '+' . "\n" .
+ 'z' . "\n" .
+ '' . "\n" .
+ '⏞' . "\n" .
+ '',
+ (string) $mover
+ );
+ }
+}
diff --git a/tests/Tag/MathML/MunderTest.php b/tests/Tag/MathML/MunderTest.php
new file mode 100644
index 0000000..96d1a63
--- /dev/null
+++ b/tests/Tag/MathML/MunderTest.php
@@ -0,0 +1,56 @@
+accentunder($accentunder)
+ ->items(
+ Mrow::tag()
+ ->items(
+ Mi::tag()->identifier('x'),
+ Mo::tag()->operator('+'),
+ Mi::tag()->identifier('y'),
+ Mo::tag()->operator('+'),
+ Mi::tag()->identifier('z'),
+ ),
+ Mo::tag()->operator('⏞'),
+ );
+
+ $this->assertSame(
+ '' . "\n" .
+ '' . "\n" .
+ 'x' . "\n" .
+ '+' . "\n" .
+ 'y' . "\n" .
+ '+' . "\n" .
+ 'z' . "\n" .
+ '' . "\n" .
+ '⏞' . "\n" .
+ '',
+ (string) $mover
+ );
+ }
+}