--- /dev/null
+#include <string.h>
+#include <errno.h>
+#include <iconv.h>
+#include "test.h"
+
+int main(void)
+{
+ iconv_t cd;
+ char buf[100];
+ char *inbuf = "test";
+ char *outbuf = buf;
+ size_t inlen = strlen(inbuf);
+ size_t outlen;
+ size_t r;
+
+ cd = iconv_open("", "");
+ if (cd != (iconv_t)-1)
+ t_error("iconv_open(\"\",\"\") didn't fail\n");
+ if (errno != EINVAL)
+ t_error("iconv_open(\"\",\"\") did not fail with EINVAL, got %s\n", strerror(errno));
+
+ errno = 0;
+ cd = iconv_open("UTF-8", "UTF-8");
+ if (cd == (iconv_t)-1)
+ t_error("iconv_open(\"\",\"\") failed: %s\n", strerror(errno));
+
+ errno = 0;
+ outlen = 0;
+ r = iconv(cd, &inbuf, &inlen, &outbuf, &outlen);
+ if (r != -1)
+ t_error("iconv() did not fail with 0 output length\n");
+ if (errno != E2BIG)
+ t_error("iconv() did not fail with E2BIG, got %s\n", strerror(errno));
+
+ errno = 0;
+ outlen = sizeof buf;
+ r = iconv(cd, &inbuf, &inlen, &outbuf, &outlen);
+ if (r)
+ t_error("iconv() did not return 0 when converting utf8 to utf8, got %d\n", r);
+ if (errno)
+ t_error("iconv() failed: %s\n", strerror(errno));
+
+ r = iconv_close(cd);
+ if (r == -1)
+ t_error("iconv_close failed: %s\n", strerror(errno));
+
+ return t_status;
+}