99 lines
2.3 KiB
Go
99 lines
2.3 KiB
Go
package encodingx
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestBase64AndBase85RoundTrip(t *testing.T) {
|
|
plain := []byte("encoding-roundtrip")
|
|
|
|
b64 := Base64Encode(plain)
|
|
d64, err := Base64Decode(b64)
|
|
if err != nil {
|
|
t.Fatalf("Base64Decode failed: %v", err)
|
|
}
|
|
if !bytes.Equal(d64, plain) {
|
|
t.Fatalf("base64 mismatch")
|
|
}
|
|
|
|
b85 := Base85Encode(plain)
|
|
d85, err := Base85Decode(b85)
|
|
if err != nil {
|
|
t.Fatalf("Base85Decode failed: %v", err)
|
|
}
|
|
if !bytes.Equal(d85, plain) {
|
|
t.Fatalf("base85 mismatch")
|
|
}
|
|
}
|
|
|
|
func TestBase91AndBase128RoundTrip(t *testing.T) {
|
|
plain := []byte("base91-base128")
|
|
|
|
e91 := Base91Encode(plain)
|
|
d91 := Base91Decode(e91)
|
|
if !bytes.Equal(d91, plain) {
|
|
t.Fatalf("base91 mismatch")
|
|
}
|
|
|
|
e128 := Base128EncodeToString(plain)
|
|
d128, err := Base128DecodeString(e128)
|
|
if err != nil {
|
|
t.Fatalf("Base128DecodeString failed: %v", err)
|
|
}
|
|
if !bytes.Equal(d128, plain) {
|
|
t.Fatalf("base128 mismatch")
|
|
}
|
|
}
|
|
|
|
func TestBase128DecodeInvalid(t *testing.T) {
|
|
_, err := Base128DecodeString(string([]byte{0x80}))
|
|
if err == nil {
|
|
t.Fatalf("expected base128 decode error")
|
|
}
|
|
}
|
|
|
|
func TestBase64AndBase85FileRoundTrip(t *testing.T) {
|
|
dir := t.TempDir()
|
|
src := filepath.Join(dir, "src.bin")
|
|
b64 := filepath.Join(dir, "src.b64")
|
|
dst64 := filepath.Join(dir, "src.64.out")
|
|
b85 := filepath.Join(dir, "src.b85")
|
|
dst85 := filepath.Join(dir, "src.85.out")
|
|
|
|
plain := []byte("file-roundtrip-encoding")
|
|
if err := os.WriteFile(src, plain, 0o644); err != nil {
|
|
t.Fatalf("WriteFile failed: %v", err)
|
|
}
|
|
|
|
if err := Base64EncodeFile(src, b64, nil); err != nil {
|
|
t.Fatalf("Base64EncodeFile failed: %v", err)
|
|
}
|
|
if err := Base64DecodeFile(b64, dst64, nil); err != nil {
|
|
t.Fatalf("Base64DecodeFile failed: %v", err)
|
|
}
|
|
got64, err := os.ReadFile(dst64)
|
|
if err != nil {
|
|
t.Fatalf("ReadFile dst64 failed: %v", err)
|
|
}
|
|
if !bytes.Equal(got64, plain) {
|
|
t.Fatalf("base64 file roundtrip mismatch")
|
|
}
|
|
|
|
if err := Base85EncodeFile(src, b85, nil); err != nil {
|
|
t.Fatalf("Base85EncodeFile failed: %v", err)
|
|
}
|
|
if err := Base85DecodeFile(b85, dst85, nil); err != nil {
|
|
t.Fatalf("Base85DecodeFile failed: %v", err)
|
|
}
|
|
got85, err := os.ReadFile(dst85)
|
|
if err != nil {
|
|
t.Fatalf("ReadFile dst85 failed: %v", err)
|
|
}
|
|
if !bytes.Equal(got85, plain) {
|
|
t.Fatalf("base85 file roundtrip mismatch")
|
|
}
|
|
}
|