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") } }