uniform half4 colorGreen, colorRed, colorBlack, colorWhite, testInputs;

half4 main(float2 coords) {
    half4 expectedBW = half4(0.5, 0.5, 0.5, 1);
    half4 expectedWT = half4(1,   0.5, 1,   2.25);

    return (mix(colorGreen,      colorRed,        0)                   == half4(0,    1,    0, 1) &&
            mix(colorGreen,      colorRed,        0.25)                == half4(0.25, 0.75, 0, 1) &&
            mix(colorGreen,      colorRed,        0.75)                == half4(0.75, 0.25, 0, 1) &&
            mix(colorGreen,      colorRed,        1)                   == half4(1,    0,    0, 1) &&
            mix(colorBlack.x,    colorWhite.x,    0.5)                 == expectedBW.x            &&
            mix(colorBlack.xy,   colorWhite.xy,   0.5)                 == expectedBW.xy           &&
            mix(colorBlack.xyz,  colorWhite.xyz,  0.5)                 == expectedBW.xyz          &&
            mix(colorBlack.xyzw, colorWhite.xyzw, 0.5)                 == expectedBW.xyzw         &&
            mix(colorWhite.x,    testInputs.x,    0)                   == expectedWT.x            &&
            mix(colorWhite.xy,   testInputs.xy,   half2(0, 0.5))       == expectedWT.xy           &&
            mix(colorWhite.xyz,  testInputs.xyz,  half3(0, 0.5, 0))    == expectedWT.xyz          &&
            mix(colorWhite.xyzw, testInputs.xyzw, half4(0, 0.5, 0, 1)) == expectedWT.xyzw)
                ? colorGreen : colorRed;
}
