address_test.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package net_test
  2. import (
  3. "net"
  4. "testing"
  5. v2net "github.com/v2ray/v2ray-core/common/net"
  6. v2testing "github.com/v2ray/v2ray-core/testing"
  7. "github.com/v2ray/v2ray-core/testing/assert"
  8. )
  9. func TestIPv4Address(t *testing.T) {
  10. v2testing.Current(t)
  11. ip := []byte{byte(1), byte(2), byte(3), byte(4)}
  12. addr := v2net.IPAddress(ip)
  13. assert.Address(addr).IsIPv4()
  14. assert.Address(addr).IsNotIPv6()
  15. assert.Address(addr).IsNotDomain()
  16. assert.Bytes(addr.IP()).Equals(ip)
  17. assert.String(addr).Equals("1.2.3.4")
  18. }
  19. func TestIPv6Address(t *testing.T) {
  20. v2testing.Current(t)
  21. ip := []byte{
  22. byte(1), byte(2), byte(3), byte(4),
  23. byte(1), byte(2), byte(3), byte(4),
  24. byte(1), byte(2), byte(3), byte(4),
  25. byte(1), byte(2), byte(3), byte(4),
  26. }
  27. addr := v2net.IPAddress(ip)
  28. assert.Address(addr).IsIPv6()
  29. assert.Address(addr).IsNotIPv4()
  30. assert.Address(addr).IsNotDomain()
  31. assert.Bytes(addr.IP()).Equals(ip)
  32. assert.String(addr).Equals("[102:304:102:304:102:304:102:304]")
  33. }
  34. func TestIPv4Asv6(t *testing.T) {
  35. v2testing.Current(t)
  36. ip := []byte{
  37. byte(0), byte(0), byte(0), byte(0),
  38. byte(0), byte(0), byte(0), byte(0),
  39. byte(0), byte(0), byte(255), byte(255),
  40. byte(1), byte(2), byte(3), byte(4),
  41. }
  42. addr := v2net.IPAddress(ip)
  43. assert.String(addr).Equals("1.2.3.4")
  44. }
  45. func TestDomainAddress(t *testing.T) {
  46. v2testing.Current(t)
  47. domain := "v2ray.com"
  48. addr := v2net.DomainAddress(domain)
  49. assert.Address(addr).IsDomain()
  50. assert.Address(addr).IsNotIPv6()
  51. assert.Address(addr).IsNotIPv4()
  52. assert.StringLiteral(addr.Domain()).Equals(domain)
  53. assert.String(addr).Equals("v2ray.com")
  54. }
  55. func TestNetIPv4Address(t *testing.T) {
  56. v2testing.Current(t)
  57. ip := net.IPv4(1, 2, 3, 4)
  58. addr := v2net.IPAddress(ip)
  59. assert.Address(addr).IsIPv4()
  60. assert.String(addr).Equals("1.2.3.4")
  61. }
  62. func TestIPv4AddressEquals(t *testing.T) {
  63. v2testing.Current(t)
  64. addr := v2net.IPAddress([]byte{1, 2, 3, 4})
  65. assert.Bool(addr.Equals(nil)).IsFalse()
  66. addr2 := v2net.IPAddress([]byte{1, 2, 3, 4})
  67. assert.Bool(addr.Equals(addr2)).IsTrue()
  68. addr3 := v2net.IPAddress([]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6})
  69. assert.Bool(addr.Equals(addr3)).IsFalse()
  70. addr4 := v2net.IPAddress([]byte{1, 2, 3, 5})
  71. assert.Bool(addr.Equals(addr4)).IsFalse()
  72. }
  73. func TestIPv6AddressEquals(t *testing.T) {
  74. v2testing.Current(t)
  75. addr := v2net.IPAddress([]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6})
  76. assert.Bool(addr.Equals(nil)).IsFalse()
  77. addr2 := v2net.IPAddress([]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6})
  78. assert.Bool(addr.Equals(addr2)).IsTrue()
  79. addr3 := v2net.IPAddress([]byte{1, 2, 3, 4})
  80. assert.Bool(addr.Equals(addr3)).IsFalse()
  81. addr4 := v2net.IPAddress([]byte{1, 3, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6})
  82. assert.Bool(addr.Equals(addr4)).IsFalse()
  83. }
  84. func TestDomainAddressEquals(t *testing.T) {
  85. v2testing.Current(t)
  86. addr := v2net.DomainAddress("v2ray.com")
  87. assert.Bool(addr.Equals(nil)).IsFalse()
  88. addr2 := v2net.DomainAddress("v2ray.com")
  89. assert.Bool(addr.Equals(addr2)).IsTrue()
  90. addr3 := v2net.DomainAddress("www.v2ray.com")
  91. assert.Bool(addr.Equals(addr3)).IsFalse()
  92. addr4 := v2net.IPAddress([]byte{1, 3, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6})
  93. assert.Bool(addr.Equals(addr4)).IsFalse()
  94. }