/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */

#include "cmConfigure.h" // IWYU pragma: keep

#include <sstream>
#include <string>

#include <stdio.h>

#include "cmXMLSafe.h"

struct test_pair
{
  const char* in;
  const char* out;
};

static test_pair const pairs[] = {
  { "copyright \xC2\xA9", "copyright \xC2\xA9" },
  { "form-feed \f", "form-feed [NON-XML-CHAR-0xC]" },
  { "angles <>", "angles &lt;&gt;" },
  { "ampersand &", "ampersand &amp;" },
  { "bad-byte \x80", "bad-byte [NON-UTF-8-BYTE-0x80]" },
  { nullptr, nullptr }
};

int testXMLSafe(int /*unused*/, char* /*unused*/ [])
{
  int result = 0;
  for (test_pair const* p = pairs; p->in; ++p) {
    cmXMLSafe xs(p->in);
    std::ostringstream oss;
    oss << xs;
    std::string out = oss.str();
    if (out != p->out) {
      printf("expected [%s], got [%s]\n", p->out, out.c_str());
      result = 1;
    }
  }
  return result;
}
