uniform float2x2 testMatrix2x2;
uniform half4 colorRed, colorGreen;
uniform half unknownInput;

bool test() {
    bool ok = true;
    ok = ok &&  (float2x2(float2(1.0, 0.0), float2(0.0, 1.0)) ==
                 float2x2(float2(1.0, 0.0), float2(0.0, 1.0)));
    ok = ok && !(float2x2(float2(1.0, 0.0), float2(1.0, 1.0)) ==
                 float2x2(float2(1.0, 0.0), float2(0.0, 1.0)));

    ok = ok &&  ( float2x2(1)  == float2x2(1));
    ok = ok && !( float2x2(1)  == float2x2(0));
    ok = ok &&  ( float2x2(-1) == -float2x2(1));
    ok = ok &&  ( float2x2(0)  == -float2x2(0));
    ok = ok &&  (-float2x2(-1) ==  float2x2(1));
    ok = ok &&  (-float2x2(0)  == -float2x2(-0));

    ok = ok &&  (float2x2(1) == float2x2(float2(1.0, 0.0), float2(0.0, 1.0)));
    ok = ok && !(float2x2(2) == float2x2(float2(1.0, 0.0), float2(0.0, 1.0)));

    ok = ok && !(float2x2(1) != float2x2(1));
    ok = ok &&  (float2x2(1) != float2x2(0));
    ok = ok &&  (float3x3(float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0)) ==
                 float3x3(float2x2(1.0)));
    ok = ok &&  (float3x3(float3(9.0, 0.0, 0.0), float3(0.0, 9.0, 0.0), float3(0.0, 0.0, 1.0)) ==
                 float3x3(float2x2(9.0)));
    ok = ok &&  (float3x3(unknownInput) == float3x3(float2x2(1.0)));
    ok = ok &&  (float3x3(float3(9).x00, float3(9).0x0, float3(unknownInput).00x) ==
                 float3x3(float2x2(9.0)));
    ok = ok &&  (float2x2(float3x3(1.0)) == float2x2(1.0));
    ok = ok &&  (float2x2(float3x3(1.0)) == float2x2(1.0));
    ok = ok &&  (float2x2(float4(1.0, 0.0, 0.0, 1.0)) == float2x2(1.0));
    ok = ok &&  (float2x2(1.0, 0.0, float2(0.0, 1.0)) == float2x2(1.0));
    ok = ok &&  (float2x2(float2(1.0, 0.0), 0.0, 1.0) == float2x2(1.0));

    ok = ok &&  (float4(testMatrix2x2) * float4(1)) == float4(1, 2, 3, 4);
    ok = ok &&  (float4(testMatrix2x2) * float4(1)) == float4(testMatrix2x2);
    ok = ok &&  (float4(testMatrix2x2) * float4(0)) == float4(0);

    return ok;
}

half4 main(float2 coords) {
    return test() ? colorGreen : colorRed;
}
