synapsecns/sanguine

View on GitHub
core/bytes_test.go

Summary

Maintainability
A
1 hr
Test Coverage
package core_test

import (
    "github.com/synapsecns/sanguine/core"
    "reflect"
    "strings"
    "testing"
)

func TestBytesToSlice(t *testing.T) {
    tests := []struct {
        name  string
        bytes [32]byte
        want  []byte
    }{
        {
            name:  "all zeros",
            bytes: [32]byte{},
            want:  make([]byte, 32),
        },
        {
            name:  "random bytes",
            bytes: [32]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31},
            want:  []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31},
        },
    }

    for i := range tests {
        tt := tests[i]
        t.Run(tt.name, func(t *testing.T) {
            if got := core.BytesToSlice(tt.bytes); !reflect.DeepEqual(got, tt.want) {
                t.Errorf("BytesToSlice() = %v, want %v", got, tt.want)
            }
        })
    }
}

func TestBytesToJSONString(t *testing.T) {
    tests := []struct {
        name      string
        input     []byte
        want      string
        wantErr   bool
        errString string
    }{
        {
            name:    "Valid JSON",
            input:   []byte(`{"key1":"value1","key2":2}`),
            want:    `{"key1":"value1","key2":2}`,
            wantErr: false,
        },
        {
            name:      "Invalid JSON",
            input:     []byte(`{"key1":"value1",`),
            want:      "",
            wantErr:   true,
            errString: "failed to unmarshal JSON",
        },
        {
            name:    "Empty JSON",
            input:   []byte(`{}`),
            want:    `{}`,
            wantErr: false,
        },
        {
            name:    "Nested JSON",
            input:   []byte(`{"key1":{"nestedKey1":"nestedValue1"},"key2":[1,2,3]}`),
            want:    `{"key1":{"nestedKey1":"nestedValue1"},"key2":[1,2,3]}`,
            wantErr: false,
        },
        {
            name:    "JSON with special characters",
            input:   []byte(`{"key1":"value1\nvalue2","key2":"value3\tvalue4"}`),
            want:    `{"key1":"value1\nvalue2","key2":"value3\tvalue4"}`,
            wantErr: false,
        },
    }

    for i := range tests {
        tt := tests[i]
        t.Run(tt.name, func(t *testing.T) {
            got, err := core.BytesToJSONString(tt.input)
            if (err != nil) != tt.wantErr {
                t.Errorf("BytesToJSONString() error = %v, wantErr %v", err, tt.wantErr)
                return
            }
            if err != nil && tt.wantErr && tt.errString != "" && !strings.Contains(err.Error(), tt.errString) {
                t.Errorf("BytesToJSONString() error = %v, expected error to contain %v", err, tt.errString)
            }
            if got != tt.want {
                t.Errorf("BytesToJSONString() = %v, want %v", got, tt.want)
            }
        })
    }
}