magicpacket/magicpacket_test.go
Rama main · réplica de lectura del repositorio original.
package magicpacket
import (
"bytes"
"net"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestMagicPacketBytes(t *testing.T) {
tests := []struct {
name string
mac string
}{
{name: "typical mac", mac: "01:02:03:04:05:06"},
{name: "all ones mac", mac: "ff:ff:ff:ff:ff:ff"},
{name: "zero mac", mac: "00:00:00:00:00:00"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mac, err := net.ParseMAC(tt.mac)
require.NoError(t, err)
packet := NewMagicPacket(mac).Bytes()
require.Len(t, packet, 102)
assert.Equal(t, bytes.Repeat([]byte{0xFF}, 6), packet[:6])
// MAC repeated 16 times after the sync stream.
for i := 0; i < 16; i++ {
start := 6 + i*6
assert.Equalf(t, []byte(mac), packet[start:start+6],
"MAC repetition %d at offset %d", i+1, start)
}
})
}
}
func TestMagicPacketWriteTo(t *testing.T) {
mac, err := net.ParseMAC("01:02:03:04:05:06")
require.NoError(t, err)
mp := NewMagicPacket(mac)
var buf bytes.Buffer
n, err := mp.WriteTo(&buf)
require.NoError(t, err)
assert.Equal(t, int64(102), n)
assert.Equal(t, mp.Bytes(), buf.Bytes())
}