group custom "Custom loop tests"

	case continue_in_fragment_for_loop
		version 300 es
		vertex ""
			#version 300 es
			${VERTEX_DECLARATIONS}
			void main()
			{
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 300 es
			${FRAGMENT_DECLARATIONS}
			void main()
			{
				int count1 = 0;
				for(int i=0;i<4;i++)
				{
					if (count1 == 2)
						continue;
				}
				${FRAG_COLOR} = vec4(1.0);
			}
		""
	end

end # custom

# https://github.com/KhronosGroup/WebGL/blob/master/sdk/tests/conformance2/glsl3/short-circuiting-in-loop-condition.html
group short_circuit "Short-circuiting operator in a loop using a function call with side effects"

	case while
		version 300 es
		values
		{
			input bool in0 = [ false | true ];
			output int sideEffectCounter = [ 0 | 10 ];
		}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			bool foo() {
				++sideEffectCounter;
				return true;
			}

			void main()
			{
				${SETUP}
				sideEffectCounter = 0;
				int iterations = 0;
				while (in0 && foo()) {
					++iterations;
					if (iterations >= 10) {
						break;
					}
				}
				${OUTPUT}
			}
		""
	end

	case for
		version 300 es
		values
		{
			input bool in0 = [ false | true ];
			output int sideEffectCounter = [ 0 | 10 ];
		}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			bool foo() {
				++sideEffectCounter;
				return true;
			}

			void main()
			{
				${SETUP}
				sideEffectCounter = 0;
				for (int iterations = 0; true; in0 && foo()) {
					++iterations;
					if (iterations > 10) {
						break;
					}
				}
				${OUTPUT}
			}
		""
	end

	case do_while
		version 300 es
		values
		{
			input bool in0 = [ false | true ];
			output int sideEffectCounter = [ 0 | 10 ];
		}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			bool foo() {
				++sideEffectCounter;
				return true;
			}

			void main()
			{
				${SETUP}
				sideEffectCounter = 0;
				int iterations = 0;
				do {
					++iterations;
					if (iterations > 10) {
						break;
					}
				} while (in0 && foo());
				${OUTPUT}
			}
		""
	end

	case while_sequence
		version 300 es
		values
		{
			input bool in0 = [ false | true ];
			output int sideEffectCounter = [ 0 | 10 ];
		}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			bool foo() {
				++sideEffectCounter;
				return true;
			}

			void main()
			{
				${SETUP}
				sideEffectCounter = 0;
				int iterations = 0;
				while ((in0, in0 && foo())) {
					++iterations;
					if (iterations >= 10) {
						break;
					}
				}
				${OUTPUT}
			}
		""
	end

end # short_circuit
