github.com/gofiber/fiber/v2@v2.47.0/utils/ips_test.go (about) 1 // ⚡️ Fiber is an Express inspired web framework written in Go with ☕️ 2 // 🤖 Github Repository: https://github.com/gofiber/fiber 3 // 📌 API Documentation: https://docs.gofiber.io 4 5 package utils 6 7 import ( 8 "net" 9 "testing" 10 ) 11 12 func Test_IsIPv4(t *testing.T) { 13 t.Parallel() 14 15 AssertEqual(t, true, IsIPv4("174.23.33.100")) 16 AssertEqual(t, true, IsIPv4("127.0.0.1")) 17 AssertEqual(t, true, IsIPv4("0.0.0.0")) 18 19 AssertEqual(t, false, IsIPv4(".0.0.0")) 20 AssertEqual(t, false, IsIPv4("0.0.0.")) 21 AssertEqual(t, false, IsIPv4("0.0.0")) 22 AssertEqual(t, false, IsIPv4(".0.0.0.")) 23 AssertEqual(t, false, IsIPv4("0.0.0.0.0")) 24 AssertEqual(t, false, IsIPv4("0")) 25 AssertEqual(t, false, IsIPv4("")) 26 AssertEqual(t, false, IsIPv4("2345:0425:2CA1::0567:5673:23b5")) 27 AssertEqual(t, false, IsIPv4("invalid")) 28 AssertEqual(t, false, IsIPv4("189.12.34.260")) 29 AssertEqual(t, false, IsIPv4("189.12.260.260")) 30 AssertEqual(t, false, IsIPv4("189.260.260.260")) 31 AssertEqual(t, false, IsIPv4("999.999.999.999")) 32 AssertEqual(t, false, IsIPv4("9999.9999.9999.9999")) 33 } 34 35 // go test -v -run=^$ -bench=UnsafeString -benchmem -count=2 36 37 func Benchmark_IsIPv4(b *testing.B) { 38 ip := "174.23.33.100" 39 var res bool 40 41 b.Run("fiber", func(b *testing.B) { 42 for n := 0; n < b.N; n++ { 43 res = IsIPv4(ip) 44 } 45 AssertEqual(b, true, res) 46 }) 47 48 b.Run("default", func(b *testing.B) { 49 for n := 0; n < b.N; n++ { 50 res = net.ParseIP(ip) != nil 51 } 52 AssertEqual(b, true, res) 53 }) 54 } 55 56 func Test_IsIPv6(t *testing.T) { 57 t.Parallel() 58 59 AssertEqual(t, true, IsIPv6("9396:9549:b4f7:8ed0:4791:1330:8c06:e62d")) 60 AssertEqual(t, true, IsIPv6("2345:0425:2CA1::0567:5673:23b5")) 61 AssertEqual(t, true, IsIPv6("2001:1:2:3:4:5:6:7")) 62 63 AssertEqual(t, false, IsIPv6("1.1.1.1")) 64 AssertEqual(t, false, IsIPv6("2001:1:2:3:4:5:6:")) 65 AssertEqual(t, false, IsIPv6(":1:2:3:4:5:6:")) 66 AssertEqual(t, false, IsIPv6("1:2:3:4:5:6:")) 67 AssertEqual(t, false, IsIPv6("")) 68 AssertEqual(t, false, IsIPv6("invalid")) 69 } 70 71 // go test -v -run=^$ -bench=UnsafeString -benchmem -count=2 72 73 func Benchmark_IsIPv6(b *testing.B) { 74 ip := "9396:9549:b4f7:8ed0:4791:1330:8c06:e62d" 75 var res bool 76 77 b.Run("fiber", func(b *testing.B) { 78 for n := 0; n < b.N; n++ { 79 res = IsIPv6(ip) 80 } 81 AssertEqual(b, true, res) 82 }) 83 84 b.Run("default", func(b *testing.B) { 85 for n := 0; n < b.N; n++ { 86 res = net.ParseIP(ip) != nil 87 } 88 AssertEqual(b, true, res) 89 }) 90 }