uniform half4 colorGreen, colorRed;

half4 main(float2 coords) {
    const bool TRUE = true;
    const bool FALSE = false;

    bool ok = true;

    // Literal test
    ok = ok && (true ? true : false);
    ok = ok && (false ? false : true);

    // Constant boolean test
    ok = ok && (TRUE ? true : false);
    ok = ok && (FALSE ? false : true);

    // Constant-foldable test
    ok = ok && (1 == 1 ? true : false);
    ok = ok && (0 == 1 ? false : true);

    // Unknown-value test
    ok = ok && (colorGreen.g == 1 ? true : false);
    ok = ok && (colorGreen.r == 1 ? false : true);

    // Composite comparison test.
    ok = ok && (colorGreen.gr == colorRed.rg ? true : false);
    ok = ok && (colorGreen.gr != colorRed.rg ? false : true);

    // Test simplification of ternaries to logical-and/logical-or.
    ok = ok && (colorGreen.gr == colorRed.rg ? true : (colorGreen.a != colorRed.a));
    ok = ok && (colorGreen.gr != colorRed.rg ? (colorGreen.a == colorRed.a) : false);

    return ok ? colorGreen : colorRed;
}
