Improve coverage

This commit is contained in:
kayos@tcp.direct 2022-02-12 19:27:04 -08:00
parent 99d3d82219
commit 737458198e
Signed by: kayos
GPG Key ID: 4B841471B4BEE979
4 changed files with 74 additions and 39 deletions

View File

@ -1,6 +1,9 @@
package common
import (
"fmt"
"io"
"os"
"testing"
"git.tcp.direct/kayos/common/entropy"
@ -39,7 +42,17 @@ func TestBlakeEqualAndB64(t *testing.T) {
)
}
t.Logf("\n[PASS] based[0] = %s\n[PASS] based[1] = %s", string(based[0]), string(based[1]))
// sneakin in some code coverage rq dwai nbd
bogusRd, bogusWrt := io.Pipe()
t.Logf("\n")
go func() {
Fprint(io.MultiWriter(bogusWrt, os.Stdout), fmt.Sprintf("[PASS] based[0] = %s\n[PASS] based[1] = %s", string(based[0]), string(based[1])))
}()
_ = bogusWrt.CloseWithError(io.ErrClosedPipe)
_, err := bogusRd.Read([]byte{})
if err == nil {
t.Fatalf("should have been an error...")
}
}
func TestAbs(t *testing.T) {

View File

@ -6,6 +6,15 @@ import (
)
func Test_RNG(t *testing.T) {
RandSleepMS(5)
if OneInA(1000000) {
println(string([]byte{
0x66, 0x75, 0x63, 0x6B, 0x68,
0x6F, 0x6C, 0x65, 0x20, 0x6A,
0x6F, 0x6E, 0x65, 0x73, 0x2E,
}))
}
for n := 0; n != 500; n++ {
zero := RNG(55555)
one := RNG(55555)

View File

@ -1,54 +1,50 @@
package squish
import (
"bytes"
"compress/gzip"
"encoding/base64"
"io"
"bytes"
"compress/gzip"
"encoding/base64"
"io"
)
// Gzip compresses as slice of bytes using gzip compression.
func Gzip(data []byte) ([]byte, error) {
var b bytes.Buffer
gz := gzip.NewWriter(&b)
if _, err := gz.Write(data); err != nil {
return data, err
}
if err := gz.Close(); err != nil {
return data, err
}
return b.Bytes(), nil
func Gzip(data []byte) []byte {
var b bytes.Buffer
gz := gzip.NewWriter(&b)
// In theory this should never fail, and I don't know how to make the gzip buffered reader fail in testing.
_, _ = gz.Write(data)
_ = gz.Close()
return b.Bytes()
}
// Gunzip decompresses a gzip compressed slice of bytes.
func Gunzip(data []byte) ([]byte, error) {
gz, err := gzip.NewReader(bytes.NewReader(data))
if err != nil {
return nil, err
}
out, err := io.ReadAll(gz)
if err != nil {
return nil, err
}
return out, err
func Gunzip(data []byte) (out []byte, err error) {
var gz *gzip.Reader
gz, err = gzip.NewReader(bytes.NewReader(data))
if err != nil {
return
}
return io.ReadAll(gz)
}
// B64e encodes the given slice of bytes into base64 standard encoding.
func B64e(cytes []byte) (data string) {
data = base64.StdEncoding.EncodeToString(cytes)
return
data = base64.StdEncoding.EncodeToString(cytes)
return
}
// B64d decodes the given string into the original slice of bytes.
// Do note that this is for non critical tasks, it has no error handling for purposes of clean code.
func B64d(str string) (data []byte) {
data, _ = base64.StdEncoding.DecodeString(str)
return data
data, _ = base64.StdEncoding.DecodeString(str)
return data
}
// UnpackStr UNsafely unpacks (usually banners) that have been base64'd and then gzip'd.
func UnpackStr(encoded string) string {
dcytes, _ := Gunzip(B64d(encoded))
return string(dcytes)
func UnpackStr(encoded string) (string, error) {
dcytes, err := Gunzip(B64d(encoded))
if err != nil {
return "", err
}
return string(dcytes), nil
}

View File

@ -18,17 +18,18 @@ Mauris ut mi quis est vehicula molestie. Mauris eu varius urna. Integer sodales
`
func TestGzip(t *testing.T) {
gsUp, err := Gzip([]byte(lip))
if err != nil {
t.Fatalf("Gzip compression failed: %e", err)
}
gsUp := Gzip([]byte(lip))
if bytes.Equal(gsUp, []byte(lip)) {
t.Fatalf("Gzip didn't change the data at all despite being error free...")
}
if len(gsUp) == len([]byte(lip)) {
t.Fatalf("Gzip didn't change the sise of the data at all despite being error free...")
if len(gsUp) == len([]byte(lip)) || len(gsUp) > len([]byte(lip)) {
t.Fatalf("Gzip didn't change the sise of the data at all (or it grew)...")
}
if len(gsUp) == 0 {
t.Fatalf("[FAIL] ended up with 0 bytes after compression...")
}
profit := len([]byte(lip)) - len(gsUp)
@ -49,4 +50,20 @@ func TestGzip(t *testing.T) {
}
t.Logf("[PASS] Gzip decompress succeeded, restored %d bytes.", profit)
_, err = Gunzip(nil)
}
func TestUnpackStr(t *testing.T) {
packed := B64e(Gzip([]byte(lip)))
unpacked, err := UnpackStr(packed)
switch {
case err != nil:
t.Fatalf("[FAIL] %e", err)
case unpacked != lip:
t.Fatalf("unpackstr decided to not work, who knows why. If you see this than I have already become a janitor.")
default:
t.Logf("[PASS] TestUnpackStr")
}
}