File: helper_test.go

package info (click to toggle)
golang-github-lucas-clemente-quic-go 0.50.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 4,496 kB
  • sloc: sh: 54; makefile: 7
file content (71 lines) | stat: -rw-r--r-- 1,756 bytes parent folder | download
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package helper

import (
	"os"
	"path/filepath"
	"testing"

	"github.com/stretchr/testify/require"
)

func createTempDir(t *testing.T) string {
	t.Helper()
	dir, err := os.MkdirTemp("", "fuzzing-helper")
	require.NoError(t, err)
	t.Cleanup(func() { os.RemoveAll(dir) })
	return dir
}

func TestWriteCorpusFile(t *testing.T) {
	const data = "lorem ipsum"
	const expectedShaSum = "bfb7759a67daeb65410490b4d98bb9da7d1ea2ce"

	dir := createTempDir(t)
	require.NoError(t, WriteCorpusFile(dir, []byte(data)))

	path := filepath.Join(dir, expectedShaSum)
	require.FileExists(t, path)

	b, err := os.ReadFile(path)
	require.NoError(t, err)
	require.Equal(t, data, string(b))
}

func TestWriteCorpusFileWithPrefix(t *testing.T) {
	const data = "lorem ipsum"
	const expectedShaSum = "523f5cab80fab0c7889dbf50dd310ab8c8879f9c"
	const prefixLen = 7

	dir := createTempDir(t)
	require.NoError(t, WriteCorpusFileWithPrefix(dir, []byte(data), prefixLen))

	path := filepath.Join(dir, expectedShaSum)
	require.FileExists(t, path)

	b, err := os.ReadFile(path)
	require.NoError(t, err)
	require.Equal(t, make([]byte, prefixLen), b[:prefixLen])
	require.Equal(t, data, string(b[prefixLen:]))
}

func TestCreateDirectoryIfNotExists(t *testing.T) {
	dir := createTempDir(t)
	subdir := filepath.Join(dir, "corpus")
	require.NoDirExists(t, subdir)

	require.NoError(t, WriteCorpusFile(subdir, []byte("lorem ipsum")))
	require.DirExists(t, subdir)
}

func TestNthBit(t *testing.T) {
	const val = 0b10010001

	require.True(t, NthBit(val, 0))
	require.False(t, NthBit(val, 1))
	require.False(t, NthBit(val, 2))
	require.False(t, NthBit(val, 3))
	require.True(t, NthBit(val, 4))
	require.False(t, NthBit(val, 5))
	require.False(t, NthBit(val, 6))
	require.True(t, NthBit(val, 7))
}