mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-28 17:04:34 +00:00
53 lines
994 B
Odin
53 lines
994 B
Odin
package test_encoding_base64
|
|
|
|
import "base:intrinsics"
|
|
import "core:encoding/base64"
|
|
import "core:testing"
|
|
|
|
Test :: struct {
|
|
vector: string,
|
|
base64: string,
|
|
}
|
|
|
|
tests :: []Test{
|
|
{"", ""},
|
|
{"f", "Zg=="},
|
|
{"fo", "Zm8="},
|
|
{"foo", "Zm9v"},
|
|
{"foob", "Zm9vYg=="},
|
|
{"fooba", "Zm9vYmE="},
|
|
{"foobar", "Zm9vYmFy"},
|
|
}
|
|
|
|
@(test)
|
|
test_encoding :: proc(t: ^testing.T) {
|
|
for test in tests {
|
|
v := base64.encode(transmute([]byte)test.vector)
|
|
defer delete(v)
|
|
testing.expect_value(t, v, test.base64)
|
|
}
|
|
}
|
|
|
|
@(test)
|
|
test_decoding :: proc(t: ^testing.T) {
|
|
for test in tests {
|
|
v := string(base64.decode(test.base64))
|
|
defer delete(v)
|
|
testing.expect_value(t, v, test.vector)
|
|
}
|
|
}
|
|
|
|
@(test)
|
|
test_roundtrip :: proc(t: ^testing.T) {
|
|
values: [1024]u8
|
|
for &v, i in values[:] {
|
|
v = u8(i)
|
|
}
|
|
|
|
encoded := base64.encode(values[:]); defer delete(encoded)
|
|
decoded := base64.decode(encoded); defer delete(decoded)
|
|
|
|
for v, i in decoded {
|
|
testing.expect_value(t, v, values[i])
|
|
}
|
|
} |