GRAILS-1019: Allowing expressions to be used with the 'disabled' attribute for g...
[grails.git] / test / commons / grails / util / JSonBuilderTests.java
blob641e0ad7038ccfd2a165b7f99804887b8c8702c3
1 package grails.util;
3 import groovy.lang.Closure;
4 import groovy.lang.GroovyClassLoader;
5 import groovy.lang.GroovyObject;
7 import java.io.PrintWriter;
8 import java.io.StringWriter;
9 import java.io.UnsupportedEncodingException;
10 import java.io.Writer;
12 import javax.servlet.http.HttpServletResponse;
14 import org.codehaus.groovy.runtime.InvokerInvocationException;
16 import junit.framework.TestCase;
18 public class JSonBuilderTests extends TestCase {
20 private HttpServletResponse getResponse(Writer writer) {
21 final PrintWriter printer = new PrintWriter(writer);
22 return new MockHttpServletResponse() {
23 public PrintWriter getWriter() throws UnsupportedEncodingException {
24 return printer;
29 private String parse(String groovy) throws Exception {
30 GroovyClassLoader cl = new GroovyClassLoader();
31 Class clazz = cl.parseClass("import grails.util.*; class TestClass { List names = [\"Steven\", \"Hans\", \"Erwin\"]; Closure test = { response -> new JSonBuilder(response)." + groovy + "; } }");
32 GroovyObject go = (GroovyObject)clazz.newInstance();
33 Closure closure = (Closure)go.getProperty("test");
34 StringWriter sw = new StringWriter();
35 closure.call(getResponse(sw));
36 System.out.println(sw.getBuffer().toString());
37 return sw.getBuffer().toString();
40 public void testOpenRicoBuilderElement() throws Exception {
42 assertEquals( "{\"message\":\"Hello World\"}",
43 parse("json(){ message('Hello World') }"));
45 assertEquals( "{\"integer\":10}",
46 parse("json{ integer 5+5 }"));
48 assertEquals( "{\"message\":5.1}",
49 parse("json{ message 5.1 }"));
51 assertEquals( "{\"names\":[{\"firstName\":\"Steven\"},{\"firstName\":\"Hans\"},{\"firstName\":\"Erwin\"}]}",
52 parse("json(){ names{ for( cc in names ){ name( \"firstName\" : cc ) } } }"));
54 assertEquals( "{\"names\":[\"Steven\",\"Hans\",\"Erwin\"]}",
55 parse("json(){ names(names) }"));
57 assertEquals("{\"book\":{\"title\":\"test1\",\"title2\":\"test2\"}}",
58 parse("json(){book(title:\"test1\",title2:\"test2\")}"));
61 try {
62 parse("json{ message( \"Hello World\" ){ item() } }");
63 fail();
64 } catch (InvokerInvocationException e) {
65 // expected
68 try {
69 parse("json{ message( \"Hello World\" ){ item(\"test\") } }");
70 fail();
71 } catch (InvokerInvocationException e) {
72 // expected