<!DOCTYPE html>
<style>
.transitionTest {
    background-color: green;
    height: 100px;
    -webkit-transition: all 1s linear;
    -moz-transition: all 1s linear;
}

#startCalcEndCalc, #startCalcEndPx, #startCalcEndPercent {
    width: calc(10% + 50px);
    width: -moz-calc(10% + 50px);
}

#startPxEndCalc {
    width: 100px;
}

#startPercentEndCalc {
    width: 20%;
}

#startCalcEndCalc.go, #startPxEndCalc.go, #startPercentEndCalc.go {
    width: calc(100% - 100px);
    width: -moz-calc(100% - 100px);
}

#startCalcEndPx.go {
    width: 400px;
}

#startCalcEndPercent.go {
    width: 80%;
}
</style>

This tests that transitions containing calc() expressions transition correctly.
<div style="width:500px; border: 1px solid black;">
    <div class="transitionTest" id="startCalcEndCalc"></div>
    <div class="transitionTest" id="startPxEndCalc"></div>
    <div class="transitionTest" id="startPercentEndCalc"></div>
    <div class="transitionTest" id="startCalcEndPx"></div>
    <div class="transitionTest" id="startCalcEndPercent"></div>
</div>
<div id="result"></div>

<script src="../../transitions/resources/transition-test-helpers.js"></script>
<script>

const tests = ["startCalcEndCalc", "startPxEndCalc", "startPercentEndCalc", "startCalcEndPx", "startCalcEndPercent"];

expectedValues = [];

for (var i = 0; i < tests.length; i++) {
    expectedValues = expectedValues.concat([[0.25, tests[i], 'width', 175, 2]]);
    expectedValues = expectedValues.concat([[0.5, tests[i], 'width', 250, 2]]);
    expectedValues = expectedValues.concat([[0.75, tests[i], 'width', 325, 2]]);
    expectedValues = expectedValues.concat([[1.0, tests[i], 'width', 400, 2]]);
}

function initialize(id)
{
    var expectedStartWidth = 100;
    var element = document.getElementById(id);
    var width = element.offsetWidth;
    if (width == expectedStartWidth)
        element.innerHTML += 'PASS - "width" property for "' + id +'" element at 0.0s was: ' + width;
    else
        element.innerHTML += 'FAIL  - "width" property for "' + id +'" element at 0.0s expected: ' + expectedStartWidth + ' but saw: ' + width;
    
    element.className += " go";
}

function setupTest()
{
    for (var i = 0; i < tests.length; i++)
        initialize(tests[i]);
}

runTransitionTest(expectedValues, setupTest, true, false /* pixel test */);

</script>
