///|
fn main {
  let src =
    #|http {
    #|    upstream app {
    #|        server 127.0.0.1:9000;
    #|    }
    #|    server {
    #|        listen 80;
    #|        server_name example.com;
    #|        location / {
    #|            proxy_pass http://app;
    #|        }
    #|    }
    #|}
    #|
  let parsed = @ngx.unwrap_ngx(@ngx.parse_and_validate(src))
  println("PARSE: " + @ngx.dump_conf(parsed).replace(old="\n", new=" / "))
  let built = @ngx.build_config([
    @ngx.ngx_http([
      @ngx.ngx_server([@ngx.ngx_listen("8080"), @ngx.ngx_root("/var/www")]),
    ]),
  ])
  println("BUILD: " + @ngx.dump_conf(built).replace(old="\n", new=" / "))
  let bad =
    #|http {
    #|    server {
    #|        location / {
    #|            listen 80;
    #|        }
    #|    }
    #|}
    #|
  match @ngx.parse_and_validate(bad) {
    Ok(_) => println("VALIDATE: unexpectedly ok")
    Err(e) => println("VALIDATE: " + e.message())
  }
  println("MoonNginx acceptance: 3 scenarios passed")
}