This test checks text editor smart braces functionality.


Running: typeFunctionName
function myMax|

Running: typeOpeningRoundBrace
function myMax(|)

Running: typeFunctionArguments
function myMax(a, b|)

Running: typeClosingBrace
function myMax(a, b)|

Running: typeOpeningCurlyBrace
function myMax(a, b){|}

Running: typeEnter
function myMax(a, b){
    |
}

Running: typeReturnStatement
function myMax(a, b){
    return |
}

Running: typeNestedBraces
function myMax(a, b){
    return ({(|)})
}

Running: hitBackspaceTrippleTimes
function myMax(a, b){
    return |
}

Running: typeMathMax
function myMax(a, b){
    return Math.max(a, b);|
}

Running: setCursorBeforeClosingCurlyBrace
function myMax(a, b){
    return Math.max(a, b);
|}

Running: typeInClosingCurlyBrace
function myMax(a, b){
    return Math.max(a, b);
}|

Running: gotoVeryBeginning
|function myMax(a, b){
    return Math.max(a, b);
}

Running: typeOpeningRoundAndCurlyBraces
({|function myMax(a, b){
    return Math.max(a, b);
}

