address_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package windivert
  2. import (
  3. "testing"
  4. "unsafe"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestAddressSize(t *testing.T) {
  8. t.Parallel()
  9. require.Equal(t, uintptr(80), unsafe.Sizeof(Address{}))
  10. }
  11. func TestAddressIPv6(t *testing.T) {
  12. t.Parallel()
  13. var addr Address
  14. require.False(t, addr.IPv6())
  15. addr.bits = 1 << addrBitIPv6
  16. require.True(t, addr.IPv6())
  17. }
  18. func TestAddressSetIPChecksum(t *testing.T) {
  19. t.Parallel()
  20. var addr Address
  21. addr.SetIPChecksum(true)
  22. require.Equal(t, uint32(1<<addrBitIPChecksum), addr.bits)
  23. addr.SetIPChecksum(false)
  24. require.Equal(t, uint32(0), addr.bits)
  25. }
  26. func TestAddressSetTCPChecksum(t *testing.T) {
  27. t.Parallel()
  28. var addr Address
  29. addr.SetTCPChecksum(true)
  30. require.Equal(t, uint32(1<<addrBitTCPChecksum), addr.bits)
  31. addr.SetTCPChecksum(false)
  32. require.Equal(t, uint32(0), addr.bits)
  33. }
  34. // Setters must not disturb sibling bits.
  35. func TestAddressFlagBitsIndependent(t *testing.T) {
  36. t.Parallel()
  37. var addr Address
  38. addr.SetIPChecksum(true)
  39. addr.SetTCPChecksum(true)
  40. addr.bits |= 1 << addrBitIPv6
  41. addr.SetIPChecksum(false)
  42. require.False(t, addr.bits&(1<<addrBitIPChecksum) != 0)
  43. require.True(t, addr.bits&(1<<addrBitTCPChecksum) != 0)
  44. require.True(t, addr.bits&(1<<addrBitIPv6) != 0)
  45. }