<!DOCTYPE html>
<style>
#target {
    border: 1px solid;
}
</style>
<div id="target"></div>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
const target = document.getElementById("target");
const style = target.style;
const cs = getComputedStyle(target);

test(() => {
    style.cssText = "border-image: url(\"\");";

    assert_equals(style.cssText, "border-image: url(\"\");", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "initial", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "initial", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "url(\"\")", "Specified border-image");
    assert_equals(style.webkitBorderImage, "url(\"\")", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "100%", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "1", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "url(\"\") 100% / 1 / 0 stretch", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "url(\"\") 100% / 1 / 0 stretch", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px", "Computed border-width");
}, "border-image: url(\"\")");

test(() => {
    style.cssText = "-webkit-border-image: url(\"\");";

    assert_equals(style.cssText, "border-image: url(\"\");", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "initial", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "initial", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "url(\"\")", "Specified border-image");
    assert_equals(style.webkitBorderImage, "url(\"\")", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "100%", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "1", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "url(\"\") 100% / 1 / 0 stretch", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "url(\"\") 100% / 1 / 0 stretch", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px", "Computed border-width");
}, "-webkit-border-image: url(\"\")");

test(() => {
    style.cssText = "border-image: url(\"\") 50%;";

    assert_equals(style.cssText, "border-image: url(\"\") 50%;", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "50%", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "initial", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "url(\"\") 50%", "Specified border-image");
    assert_equals(style.webkitBorderImage, "url(\"\") 50%", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50%", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "1", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "url(\"\") 50% / 1 / 0 stretch", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "url(\"\") 50% / 1 / 0 stretch", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px", "Computed border-width");
}, "border-image: url(\"\") 50%");

test(() => {
    style.cssText = "-webkit-border-image: url(\"\") 50%;";

    assert_equals(style.cssText, "border-image: url(\"\") 50% fill;", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "50% fill", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "initial", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "url(\"\") 50% fill", "Specified border-image");
    assert_equals(style.webkitBorderImage, "url(\"\") 50% fill", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50% fill", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "1", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "url(\"\") 50% fill / 1 / 0 stretch", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "url(\"\") 50% fill / 1 / 0 stretch", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px", "Computed border-width");
}, "-webkit-border-image: url(\"\") 50%");

test(() => {
    style.cssText = "border-image: url(\"\") 50% / 11 22% calc(33% + 33px) auto;";

    assert_equals(style.cssText, "border-image: url(\"\") 50% / 11 22% calc(33% + 33px) auto;", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "50%", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "11 22% calc(33% + 33px) auto", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "url(\"\") 50% / 11 22% calc(33% + 33px) auto", "Specified border-image");
    assert_equals(style.webkitBorderImage, "url(\"\") 50% / 11 22% calc(33% + 33px) auto", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50%", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "11 22% calc(33% + 33px) auto", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "url(\"\") 50% / 11 22% calc(33% + 33px) auto / 0 stretch", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "url(\"\") 50% / 11 22% calc(33% + 33px) auto / 0 stretch", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px", "Computed border-width");
}, "border-image: url(\"\") 50% / 11 22% calc(33% + 33px) auto");

test(() => {
    style.cssText = "border-image: url(\"\") 50% / 11 22% calc(33% + 33px) calc(22px * 2);";

    assert_equals(style.cssText, "border-image: url(\"\") 50% / 11 22% calc(33% + 33px) calc(44px);", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "50%", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "11 22% calc(33% + 33px) calc(44px)", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "url(\"\") 50% / 11 22% calc(33% + 33px) calc(44px)", "Specified border-image");
    assert_equals(style.webkitBorderImage, "", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50%", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "11 22% calc(33% + 33px) 44px", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "url(\"\") 50% / 11 22% calc(33% + 33px) 44px / 0 stretch", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px", "Computed border-width");
}, "border-image: url(\"\") 50% / 11 22% calc(33% + 33px) calc(22px * 2)");

test(() => {
    style.cssText = "-webkit-border-image: url(\"\") 50% / 11 22% calc(33% + 33px) calc(22px * 2);";

    assert_equals(style.cssText, "-webkit-border-image: url(\"\") 50% fill / 11 22% calc(33% + 33px) calc(44px);", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "50% fill", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "", "Specified border-image");
    assert_equals(style.webkitBorderImage, "url(\"\") 50% fill / 11 22% calc(33% + 33px) calc(44px)", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50% fill", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "url(\"\") 50% fill / 11 22% calc(33% + 33px) 44px / 0 stretch", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px 1px 1px 44px", "Computed border-width");
}, "-webkit-border-image: url(\"\") 50% fill / 11 22% calc(33% + 33px) calc(22px * 2)");

test(() => {
    style.cssText = "border-image: url(\"\") 50% / 11px 22px 33px 44px;";

    assert_equals(style.cssText, "border-image: url(\"\") 50% / 11px 22px 33px 44px;", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "50%", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "11px 22px 33px 44px", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "url(\"\") 50% / 11px 22px 33px 44px", "Specified border-image");
    assert_equals(style.webkitBorderImage, "", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50%", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "11px 22px 33px 44px", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "url(\"\") 50% / 11px 22px 33px 44px / 0 stretch", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px", "Computed border-width");
}, "border-image: url(\"\") 50% / 11px 22px 33px 44px");

test(() => {
    style.cssText = "-webkit-border-image: url(\"\") 50% / 11px 22px 33px 44px;";

    assert_equals(style.cssText, "-webkit-border-image: url(\"\") 50% fill / 11px 22px 33px 44px;", "cssText");
    assert_array_equals([...style], ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "url(\"\")", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "50% fill", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "initial", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "initial", "Specified border-image-repeat");
    assert_equals(style.borderImage, "", "Specified border-image");
    assert_equals(style.webkitBorderImage, "url(\"\") 50% fill / 11px 22px 33px 44px", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50% fill", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "url(\"\") 50% fill / 11px 22px 33px 44px / 0 stretch", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "11px 22px 33px 44px", "Computed border-width");
}, "-webkit-border-image: url(\"\") 50% fill / 11px 22px 33px 44px");

test(() => {
    style.cssText = "--v: 50px; border-image: url(\"\") 50% / var(--v);";

    assert_equals(style.cssText, "--v: 50px; border-image: url(\"\") 50% / var(--v);", "cssText");
    assert_array_equals([...style], ["--v", "border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "", "Specified border-image-repeat");
    assert_equals(style.borderImage, "url(\"\") 50% / var(--v)", "Specified border-image");
    assert_equals(style.webkitBorderImage, "", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50%", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "50px", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "url(\"\") 50% / 50px / 0 stretch", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "1px", "Computed border-width");
}, "--v: 50px; border-image: url(\"\") 50% / var(--v)");

test(() => {
    style.cssText = "--v: 50px; -webkit-border-image: url(\"\") 50% / var(--v);";

    assert_equals(style.cssText, "--v: 50px; -webkit-border-image: url(\"\") 50% / var(--v);", "cssText");
    assert_array_equals([...style], ["--v", "border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"]);

    assert_equals(style.borderImageSource, "", "Specified border-image-source");
    assert_equals(style.borderImageSlice, "", "Specified border-image-slice");
    assert_equals(style.borderImageWidth, "", "Specified border-image-width");
    assert_equals(style.borderImageOutset, "", "Specified border-image-outset");
    assert_equals(style.borderImageRepeat, "", "Specified border-image-repeat");
    assert_equals(style.borderImage, "", "Specified border-image");
    assert_equals(style.webkitBorderImage, "url(\"\") 50% / var(--v)", "Specified -webkit-border-image");

    assert_equals(cs.borderImageSource, "url(\"\")", "Computed border-image-source");
    assert_equals(cs.borderImageSlice, "50% fill", "Computed border-image-slice");
    assert_equals(cs.borderImageWidth, "", "Computed border-image-width");
    assert_equals(cs.borderImageOutset, "0", "Computed border-image-outset");
    assert_equals(cs.borderImageRepeat, "stretch", "Computed border-image-repeat");
    assert_equals(cs.borderImage, "", "Computed border-image");
    assert_equals(cs.webkitBorderImage, "url(\"\") 50% fill / 50px / 0 stretch", "Computed -webkit-border-image");

    assert_equals(cs.borderWidth, "50px", "Computed border-width");
}, "--v: 50px; -webkit-border-image: url(\"\") 50% / var(--v)");
</script>
