#include <stdio.h>
#include <wchar.h>

/* mingw-w64 headers */
#include "libtest.h"

int main() {
  int i;
  wchar_t buffer[11] = L"XXXXXXXXXX";
  int ret;
  mingw_test_init ();
  ret = swprintf(buffer, 3, L"%ls", L"AAA");
  if (ret >= 0 || wmemcmp(buffer, L"AA\0XXXXXXX", 10) != 0) {
    fprintf(stderr, "ret: expected<0 got=%d\n", ret);
    fprintf(stderr, "buffer:");
    for (i = 0; i < 10; i++) {
      fprintf(stderr, " 0x%02x", (int)(wint_t)buffer[i]);
    }
    fprintf(stderr, "\n");
    return 1;
  }

  /* ISO C95+: output of 9 wide chars plus terminator must succeed when n=10.
   * Regression for __mingw_vswprintf exact-fit check (retval == n-1). */
  {
    wchar_t exact[16] = L"XXXXXXXXXXXXXXX";
    ret = swprintf(exact, 10, L".%8x", 0xd8c7bc89U);
    if (ret != 9 || wcscmp(exact, L".d8c7bc89") != 0) {
      fprintf(stderr, "exact-fit n=10: ret expected=9 got=%d\n", ret);
      fprintf(stderr, "exact-fit buffer: %ls\n", exact);
      return 1;
    }
    ret = swprintf(exact, 9, L".%8x", 0xd8c7bc89U);
    if (ret >= 0) {
      fprintf(stderr, "exact-fit n=9: ret expected<0 got=%d\n", ret);
      return 1;
    }
  }

  return 0;
}
