diff --git a/examples/base64.c b/examples/base64.c
index beb2484f9dcbbf2add81c2295572731ca06fa487..0a8f613df3f779ca6abdee8aa8b26a7ea63267bf 100644
--- a/examples/base64.c
+++ b/examples/base64.c
@@ -29,6 +29,35 @@ void init_parser(void)
 }
 
 
+#include <string.h>
+#include <assert.h>
+#define TRUE (1)
+#define FALSE (0)
+
+void assert_parse(int expected, char *data) {
+    const HParseResult *result;
+
+    size_t datasize = strlen(data);
+    result = h_parse(document, (void*)data, datasize);
+    if((result != NULL) != expected) {
+        printf("Test failed: %s\n", data);
+    }
+}
+
+void test() {
+    assert_parse(TRUE, "");
+    assert_parse(TRUE, "YQ==");
+    assert_parse(TRUE, "YXU=");
+    assert_parse(TRUE, "YXVy");
+    assert_parse(TRUE, "QVVSIFNBUkFG");
+    assert_parse(TRUE, "QVVSIEhFUlUgU0FSQUY=");
+    assert_parse(FALSE, "A");
+    assert_parse(FALSE, "A=");
+    assert_parse(FALSE, "A==");
+    assert_parse(FALSE, "AAA==");
+}
+
+
 #include <stdio.h>
 
 int main(int argc, char **argv)
@@ -39,6 +68,8 @@ int main(int argc, char **argv)
 
     init_parser();
 
+    test();
+
     inputsize = fread(input, 1, sizeof(input), stdin);
     fprintf(stderr, "inputsize=%lu\ninput=", inputsize);
     fwrite(input, 1, inputsize, stderr);