expose fewer internals in packages, for easier software reuse

- prometheus is now behind an interface, they aren't dependencies for the
  reusable components anymore.
- some dependencies have been inverted: instead of packages importing a main
  package to get configuration, the main package now sets configuration in
  these packages. that means fewer internals are pulled in.
- some functions now have new parameters for values that were retrieved from
  package "mox-".
This commit is contained in:
Mechiel Lukkien
2023-12-05 21:13:57 +01:00
parent fcaa504878
commit 72ac1fde29
51 changed files with 696 additions and 568 deletions

24
message/decode_test.go Normal file
View File

@ -0,0 +1,24 @@
package message
import (
"io"
"strings"
"testing"
)
func TestDecodeReader(t *testing.T) {
check := func(charset, input, output string) {
t.Helper()
buf, err := io.ReadAll(DecodeReader(charset, strings.NewReader(input)))
tcheck(t, err, "decode")
if string(buf) != output {
t.Fatalf("decoding %q with charset %q, got %q, expected %q", input, charset, buf, output)
}
}
check("", "☺", "☺") // No decoding.
check("us-ascii", "☺", "☺") // No decoding.
check("utf-8", "☺", "☺")
check("iso-8859-1", string([]byte{0xa9}), "©")
check("iso-8859-5", string([]byte{0xd0}), "а")
}