Browse Source

Added official test vectors from the RFC

zhibog 5 years ago
parent
commit
614ea5c168
1 changed files with 36 additions and 1 deletions
  1. 36 1
      core/encoding/base64/base64.odin

+ 36 - 1
core/encoding/base64/base64.odin

@@ -90,4 +90,39 @@ decode :: proc(data: string, DEC_TBL := DEC_TABLE, allocator := context.allocato
         out[j + 2] = byte(b2);
         out[j + 2] = byte(b2);
     }
     }
     return out;
     return out;
-}
+}
+
+// @note(zh): Test inputs. Taken from RFC4648
+/*
+import "core:fmt"
+main :: proc() {
+    Test :: struct {
+        plain: string,
+        encoded: string,
+    };
+
+    test_vectors := [?]Test {
+        Test{"", ""},
+        Test{"f", "Zg=="},
+        Test{"fo", "Zm8="},
+        Test{"foo", "Zm9v"},
+        Test{"foob", "Zm9vYg=="},
+        Test{"fooba", "Zm9vYmE="},
+        Test{"foobar", "Zm9vYmFy"},
+    };
+
+    // Encode test
+    for v in test_vectors {
+        enc := encode(([]byte)(v.plain));
+        fmt.printf("encode(\"%s\") => \"%s\" \t| want: \"%s\"\n", v.plain, enc, v.encoded);
+        delete(enc);
+    }
+
+    // Decode test
+    for v in test_vectors {
+        dec := decode(v.encoded);
+        fmt.printf("decode(\"%s\") => \"%s\" \t| want: \"%s\"\n", v.encoded, string(dec), v.plain);
+        delete(dec);
+    }
+}
+*/