%% vim:ft=erlang:

%% TEST
{setup,
  fun() ->
      application:start(yamerl)
  end,
  [
    ?_assertMatch(
      [
        ["~", "null", "Null", "NULL", "", "Not a null"]
      ],
      yamerl_constr:file("${FILENAME}",
        [{detailed_constr, false}, {schema, failsafe}])
    ),
    ?_assertThrow(
      {yamerl_exception, [
          {yamerl_parsing_error,error, "Invalid string", 1, 3, not_a_string,
            {yamerl_scalar, 1, 3,
              {yamerl_tag, 1, 3, {non_specific, "?"}},
              flow, plain, "~"},
            []}]},
      yamerl_constr:file("${FILENAME}",
        [{detailed_constr, false}, {schema, json}])
    ),
    ?_assertMatch(
      [
        [null, null, null, null, null, "Not a null"]
      ],
      yamerl_constr:file("${FILENAME}",
        [{detailed_constr, false}, {schema, core}])
    ),
    ?_assertMatch(
      [
        {yamerl_doc,
          {yamerl_seq,yamerl_node_seq,"tag:yaml.org,2002:seq",
            [{line,1},{column,1}],
            [{yamerl_str,yamerl_node_str,"tag:yaml.org,2002:str",
                [{line,1},{column,3}],
                "~"},
              {yamerl_str,yamerl_node_str,"tag:yaml.org,2002:str",
                [{line,2},{column,3}],
                "null"},
              {yamerl_str,yamerl_node_str,"tag:yaml.org,2002:str",
                [{line,3},{column,3}],
                "Null"},
              {yamerl_str,yamerl_node_str,"tag:yaml.org,2002:str",
                [{line,4},{column,3}],
                "NULL"},
              {yamerl_str,yamerl_node_str,"tag:yaml.org,2002:str",
                [{line,5},{column,1}],
                ""},
              {yamerl_str,yamerl_node_str,"tag:yaml.org,2002:str",
                [{line,7},{column,3}],
                "Not a null"}],
            6}}
      ],
      yamerl_constr:file("${FILENAME}",
        [{detailed_constr, true}, {schema, failsafe}])
    ),
    ?_assertThrow(
      {yamerl_exception, [
          {yamerl_parsing_error,error, "Invalid string", 1, 3, not_a_string,
            {yamerl_scalar, 1, 3,
              {yamerl_tag, 1, 3, {non_specific, "?"}},
              flow, plain, "~"},
            []}]},
      yamerl_constr:file("${FILENAME}",
        [{detailed_constr, true}, {schema, json}])
    ),
    ?_assertMatch(
      [
        {yamerl_doc,
          {yamerl_seq,yamerl_node_seq,"tag:yaml.org,2002:seq",
            [{line,1},{column,1}],
            [{yamerl_null,yamerl_node_null,"tag:yaml.org,2002:null",
                [{line,1},{column,3}]},
              {yamerl_null,yamerl_node_null,"tag:yaml.org,2002:null",
                [{line,2},{column,3}]},
              {yamerl_null,yamerl_node_null,"tag:yaml.org,2002:null",
                [{line,3},{column,3}]},
              {yamerl_null,yamerl_node_null,"tag:yaml.org,2002:null",
                [{line,4},{column,3}]},
              {yamerl_null,yamerl_node_null,"tag:yaml.org,2002:null",
                [{line,5},{column,1}]},

              {yamerl_str,yamerl_node_str,"tag:yaml.org,2002:str",
                [{line,7},{column,3}],
                "Not a null"}],
            6}}
      ],
      yamerl_constr:file("${FILENAME}",
        [{detailed_constr, true}, {schema, core}])
    )
  ]
}
