case float_input
	version 310 es
	values
	{
		input float in0		= [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 | -1.123 | -0.75 | 512.0 | -72.13 | -199.91 ];
		output float out0	= [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 | -1.123 | -0.75 | 512.0 | -72.13 | -199.91 ];
	}

	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = in0;
			${OUTPUT}
		}
	""
end

case float_uniform
	version 310 es
	values
	{
		uniform float uni0	= [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 ];
		output float out0	= [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 ];
	}

	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = uni0;
			${OUTPUT}
		}
	""
end

case float_0
	version 310 es
	values { output float out0 = 1.123; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = +1.123;
			${OUTPUT}
		}
	""
end

case float_1
	version 310 es
	values { output float out0 = -1.123; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = -1.123;
			${OUTPUT}
		}
	""
end

case float_2
	version 310 es
	values { output float out0 = 123.0; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = 123.;
			${OUTPUT}
		}
	""
end

case float_3
	version 310 es
	values { output float out0 = 0.123; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = .123;
			${OUTPUT}
		}
	""
end

case float_4
	version 310 es
	values { output float out0 = 123.0; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = 1.23e+2;
			${OUTPUT}
		}
	""
end

case float_5
	version 310 es
	values { output float out0 = -123.0; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = -1.23E+2;
			${OUTPUT}
		}
	""
end

case float_6
	version 310 es
	values { output float out0 = -123.0; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = -1.23e2;
			${OUTPUT}
		}
	""
end

case float_7
	version 310 es
	values { output float out0 = 0.123; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = 1.23e-1;
			${OUTPUT}
		}
	""
end

case float_8
	version 310 es
	values { output float out0 = 1000.0; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = 1e3;
			${OUTPUT}
		}
	""
end

case float_f_suffix_0
	version 310 es
	values { output float out0 = 1.0; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			float value = 1.0f;
			out0 = value;
			${OUTPUT}
		}
	""
end

case float_f_suffix_1
	version 310 es
	values { output float out0 = 1.0; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			float value = 1.0F;
			out0 = value;
			${OUTPUT}
		}
	""
end

case int_0
	version 310 es
	values { output int out0 = 123; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = 123;
			${OUTPUT}
		}
	""
end

case int_1
	version 310 es
	values { output int out0 = -321; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = -321;
			${OUTPUT}
		}
	""
end

case int_2
	version 310 es
	values { output int out0 = 123; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = 0x7B;
			${OUTPUT}
		}
	""
end

case int_3
	version 310 es
	values { output int out0 = 123; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = 0X7b;
			${OUTPUT}
		}
	""
end

case int_4
	version 310 es
	values { output int out0 = 123; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = 0173;
			${OUTPUT}
		}
	""
end

case bool_0
	version 310 es
	values { output bool out0 = true; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = true;
			${OUTPUT}
		}
	""
end

case bool_1
	version 310 es
	values { output bool out0 = false; }
	both ""
		#version 310 es
		precision highp float;
		${DECLARATIONS}
		void main()
		{
			out0 = false;
			${OUTPUT}
		}
	""
end

case const_float_global
	 version 310 es
	 values { output float out0 = 1000.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant = 1000.0;
			void main()
			{
				out0 = theConstant;
				${OUTPUT}
			}
	 ""
end

case const_float_main
	 version 310 es
	 values { output float out0 = -1000.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			void main()
			{
					const float theConstant = -1000.0;
				out0 = theConstant;
				${OUTPUT}
			}
	 ""
end

case const_float_function
	 version 310 es
	 values { output float out0 = -0.012; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			float func()
			{
					const float theConstant = -0.012;
				return theConstant;
			}
			void main()
			{
				out0 = func();
				${OUTPUT}
			}
	 ""
end

case const_float_scope
	 version 310 es
	 values { output float out0 = 1.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			void main()
			{
				{
					 const float theConstant = 1.0;
					 out0 = theConstant;
				}
				${OUTPUT}
			}
	 ""
end

case const_float_scope_shawdowing_1
	 version 310 es
	 values { output float out0 = 1.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			void main()
			{
				const float theConstant = 100.0;
				{
					 const float theConstant = 1.0;
					 out0 = theConstant;
				}
				${OUTPUT}
			}
	 ""
end

case const_float_scope_shawdowing_2
	 version 310 es
	 values { output float out0 = 1.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant = 100.0;
			void main()
			{
				{
					 const float theConstant = 1.0;
					 out0 = theConstant;
				}
				${OUTPUT}
			}
	 ""
end

case const_float_scope_shawdowing_3
	 version 310 es
	 values { output float out0 = 1.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant = 100.0;
			void main()
			{
				const float theConstant = -100.0;
				{
					 const float theConstant = 1.0;
					 out0 = theConstant;
				}
				${OUTPUT}
			}
	 ""
end

case const_float_scope_shawdowing_4
	 version 310 es
	 values { output float out0 = 2.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant = 100.0;
			float func()
			{
				const float theConstant = 2.0;
				return theConstant;
			}
			void main()
			{
				const float theConstant = -100.0;
				{
					 const float theConstant = 1.0;
					 out0 = func();
				}
				${OUTPUT}
			}
	 ""
end

case const_float_operations_with_const
	 version 310 es
	 values { output float out0 = 21.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theGlobalConstant = 10.0;
			float func()
			{
				const float theConstant = 2.0;
				return theConstant;
			}
			void main()
			{
				const float theConstant = -100.0;
				{
					 const float theConstant = 1.0;
					 out0 = func() * theGlobalConstant + theConstant;
				}
				${OUTPUT}
			}
	 ""
end

case const_float_assignment_1
	 version 310 es
	 values { output float out0 = 10.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			void main()
			{
				const float theConstant1 = 10.0;
				const float theConstant2 = theConstant1;
				out0 = theConstant2;
				${OUTPUT}
			}
	 ""
end

case const_float_assignment_2
	 version 310 es
	 values { output float out0 = 10.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			void main()
			{
				const float theConstant1 = 10.0;
				{
					const float theConstant2 = theConstant1;
					out0 = theConstant2;
				}
				${OUTPUT}
			}
	 ""
end

case const_float_assignment_3
	 version 310 es
	 values { output float out0 = 10.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant1 = 10.0;
			void main()
			{
				const float theConstant2 = theConstant1;
				out0 = theConstant2;
				${OUTPUT}
			}
	 ""
end

case const_float_assignment_4
	 version 310 es
	 values { output float out0 = 10.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant1 = 10.0;
			float func()
			{
				const float theConstant2 = theConstant1;
				return theConstant2;
			}
			void main()
			{
				out0 = func();
				${OUTPUT}
			}
	 ""
end

case const_float_from_int
	 version 310 es
	 values { output float out0 = 10.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant = float(10);
			void main()
			{
				out0 = theConstant;
				${OUTPUT}
			}
	 ""
end

case const_float_from_vec2
	 version 310 es
	 values { output float out0 = 10.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant = vec2(1.0, 10.0).y;
			void main()
			{
				out0 = theConstant;
				${OUTPUT}
			}
	 ""
end

case const_float_from_vec3
	 version 310 es
	 values { output float out0 = 10.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant = vec3(1.0, 10.0, 20.0).y;
			void main()
			{
				out0 = theConstant;
				${OUTPUT}
			}
	 ""
end

case const_float_from_vec4
	 version 310 es
	 values { output float out0 = 10.0; }

	 both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}
			const float theConstant = vec4(1.0, 10.0, 20.0, -10.0).y;
			void main()
			{
				out0 = theConstant;
				${OUTPUT}
			}
	 ""
end

case int_decimal
	version 310 es
	values { output int out0 = 7; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			int value = 7;
			out0 = value;
			${OUTPUT}
		}
	""
end

case int_octal
	version 310 es
	values { output int out0 = 15; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			int value = 017;
			out0 = value;
			${OUTPUT}
		}
	""
end

case int_hexadecimal_0
	version 310 es
	values { output int out0 = 47; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			int value = 0x2f;
			out0 = value;
			${OUTPUT}
		}
	""
end

case int_hexadecimal_1
	version 310 es
	values { output int out0 = 47; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			int value = 0X2f;
			out0 = value;
			${OUTPUT}
		}
	""
end

case uint_decimal_0
	version 310 es
	values { output uint out0 = 7; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			uint value = 7u;
			out0 = value;
			${OUTPUT}
		}
	""
end

case uint_decimal_1
	version 310 es
	values { output uint out0 = 7; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			uint value = 7U;
			out0 = value;
			${OUTPUT}
		}
	""
end

case uint_decimal_2
	version 310 es
	values { output uint out0 = 0; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			uint value = 0u;
			out0 = value;
			${OUTPUT}
		}
	""
end

case uint_decimal_3
	version 310 es
	values { output uint out0 = 0; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			uint value = 0U;
			out0 = value;
			${OUTPUT}
		}
	""
end

case uint_octal_0
	version 310 es
	values { output uint out0 = 15; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			uint value = 017u;
			out0 = value;
			${OUTPUT}
		}
	""
end

case uint_octal_1
	version 310 es
	values { output uint out0 = 15; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			uint value = 017U;
			out0 = value;
			${OUTPUT}
		}
	""
end

case uint_hexadecimal_0
	version 310 es
	values { output uint out0 = 47; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			uint value = 0x2fU;
			out0 = value;
			${OUTPUT}
		}
	""
end

case uint_hexadecimal_1
	version 310 es
	values { output uint out0 = 47; }
	both ""
		#version 310 es
		${DECLARATIONS}
		void main ()
		{
			${SETUP}
			uint value = 0X2fu;
			out0 = value;
			${OUTPUT}
		}
	""
end
