uniform half4 testInputs;
uniform half4 colorGreen, colorRed;

half4 main() {
    half4 expectedA = half4(0.5, 0.5, 0.75, 2.25);
    half4 expectedB = half4(0, 1, 0.75, 2.25);
    return (max(testInputs.x,    0.5)             == expectedA.x     &&
            max(testInputs.xy,   0.5)             == expectedA.xy    &&
            max(testInputs.xyz,  0.5)             == expectedA.xyz   &&
            max(testInputs.xyzw, 0.5)             == expectedA.xyzw  &&
            max(testInputs.x,    colorGreen.x)    == expectedB.x     &&
            max(testInputs.xy,   colorGreen.xy)   == expectedB.xy    &&
            max(testInputs.xyz,  colorGreen.xyz)  == expectedB.xyz   &&
            max(testInputs.xyzw, colorGreen.xyzw) == expectedB.xyzw) ? colorGreen : colorRed;
}
