# Generic invalid cases that don't fall into other categories

group c_cast "C-style casts"

	case float_0
		expect compile_fail
		version 300 es
		both ""
			#version 300 es
			precision highp float;
			${DECLARATIONS}
			void main ()
			{
				float a = 0.0;
				float b = (float)a;
				${POSITION_FRAG_COLOR} = vec4(0.0);
			}
		""
	end

	case float_1
		expect compile_fail
		version 300 es
		both ""
			#version 300 es
			precision highp float;
			${DECLARATIONS}
			void main ()
			{
				int a = 0;
				float b = (float)a;
				${POSITION_FRAG_COLOR} = vec4(b);
			}
		""
	end

	case float_2
		expect compile_fail
		version 300 es
		both ""
			#version 300 es
			${DECLARATIONS}
			void main ()
			{
				highp float a = 0.0;
				mediump float b = (mediump float)a;
				${POSITION_FRAG_COLOR} = vec4(0.0);
			}
		""
	end

	case int
		expect compile_fail
		version 300 es
		both ""
			#version 300 es
			precision highp float;
			${DECLARATIONS}
			void main ()
			{
				float a = 0.0;
				int b = (int)a;
				${POSITION_FRAG_COLOR} = vec4(0.0);
			}
		""
	end

	case uint
		expect compile_fail
		version 300 es
		both ""
			#version 300 es
			precision highp float;
			${DECLARATIONS}
			void main ()
			{
				float a = 0.0;
				uint b = (uint)a;
				${POSITION_FRAG_COLOR} = vec4(0.0);
			}
		""
	end

	case bool
		expect compile_fail
		version 300 es
		both ""
			#version 300 es
			precision highp float;
			${DECLARATIONS}
			void main ()
			{
				int a = 1;
				bool b = (bool)a;
				${POSITION_FRAG_COLOR} = vec4(0.0);
			}
		""
	end

end # casts
