@Test
public void testParseAndPrintComputeShader() throws Exception {

  final String program = ""
      + "layout(std430, binding = 2) buffer abuf {\n"
      + " int data[];\n"
      + "};\n"
      + "layout(local_size_x = 128, local_size_y = 1) in;\n"
      + "void main()\n"
      + "{\n"
      + " for(uint d = gl_WorkGroupSize.x / 2u; d > 0u; d >>= 1u)\n"
      + "  {\n"
      + "   if(gl_LocalInvocationID.x < d)\n"
      + "    {\n"
      + "     data[gl_LocalInvocationID.x] += data[d + gl_LocalInvocationID.x];\n"
      + "    }\n"
      + "   barrier();\n"
      + "  }\n"
      + "}\n";
  assertEquals(program, PrettyPrinterVisitor.prettyPrintAsString(ParseHelper.parse(program
  )));
}