summaryrefslogtreecommitdiff
path: root/internal/base64_test.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-01-29 02:15:13 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-01-29 02:15:13 -0700
commit0b57145421e7e4f165f64e73ee7c5d8102945569 (patch)
tree25584309e42bb53469959a3725393bdbc8b225c7 /internal/base64_test.go
parentffee5c8516f3f55f82ed5bb8f0a4f340d485fa92 (diff)
parent7e00adcf43b18a22ffbbadc79b8681a5d871f448 (diff)
Merge branch 'lukeshu/quality'
This branch works to improve code quality, without making any substantive changes.
Diffstat (limited to 'internal/base64_test.go')
-rw-r--r--internal/base64_test.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/internal/base64_test.go b/internal/base64_test.go
new file mode 100644
index 0000000..f18bcd7
--- /dev/null
+++ b/internal/base64_test.go
@@ -0,0 +1,44 @@
+// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com>
+//
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package internal
+
+import (
+ "bytes"
+ "encoding/base64"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func b64encode(t *testing.T, input []byte) []byte {
+ var encoded bytes.Buffer
+ enc := base64.NewEncoder(base64.StdEncoding, &encoded)
+ _, err := enc.Write(input)
+ require.NoError(t, err)
+ require.NoError(t, enc.Close())
+ return encoded.Bytes()
+}
+
+func b64decode(t *testing.T, input []byte) []byte {
+ var decoded bytes.Buffer
+ dec := NewBase64Decoder(&decoded)
+ _, err := dec.Write(input)
+ require.NoError(t, err)
+ require.NoError(t, dec.Close())
+ return decoded.Bytes()
+}
+
+func FuzzBase64Decoder(f *testing.F) {
+ f.Fuzz(func(t *testing.T, input []byte) {
+ encoded := b64encode(t, input)
+ decoded := b64decode(t, encoded)
+ t.Logf("input b64 = %q", encoded)
+ t.Logf("expected decoded = %#v", input)
+ t.Logf("actual decoded = %#v", decoded)
+ if !bytes.Equal(input, decoded) {
+ t.Fail()
+ }
+ })
+}