mirror of
https://github.com/lionsoul2014/ip2region.git
synced 2025-12-08 19:25:22 +00:00
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
// Copyright 2022 The Ip2Region Authors. All rights reserved.
|
|
// Use of this source code is governed by a Apache2.0-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package xdb
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"fmt"
|
|
"net"
|
|
"testing"
|
|
)
|
|
|
|
func TestCheckIP(t *testing.T) {
|
|
var str = "29.34.191.255"
|
|
ip, err := CheckIP(str)
|
|
if err != nil {
|
|
t.Errorf("check ip `%s`: %s\n", str, err)
|
|
}
|
|
|
|
netIP := net.ParseIP(str).To4()
|
|
if netIP == nil {
|
|
t.Fatalf("parse ip `%s` failed", str)
|
|
}
|
|
|
|
u32 := binary.BigEndian.Uint32(netIP)
|
|
fmt.Printf("checkip: %d, parseip: %d, isEqual: %v\n", ip, u32, ip == u32)
|
|
}
|
|
|
|
func TestLong2IP(t *testing.T) {
|
|
var str = "29.34.191.255"
|
|
netIP := net.ParseIP(str).To4()
|
|
if netIP == nil {
|
|
t.Fatalf("parse ip `%s` failed", str)
|
|
}
|
|
|
|
u32 := binary.BigEndian.Uint32(netIP)
|
|
ipStr := Long2IP(u32)
|
|
fmt.Printf("originIP: %s, Long2IP: %s, isEqual: %v\n", str, ipStr, ipStr == str)
|
|
}
|
|
|
|
func TestSplitSegment(t *testing.T) {
|
|
// var str = "1.1.0.0|1.3.3.24|中国|广东|深圳|电信"
|
|
// var str = "0.0.0.0|1.255.225.254|0|0|0|内网IP|内网IP"
|
|
var str = "28.201.224.0|29.34.191.255|美国|0|0|0|0"
|
|
seg, err := SegmentFrom(str)
|
|
if err != nil {
|
|
t.Fatalf("failed to parser segment '%s': %s", str, err)
|
|
}
|
|
|
|
fmt.Printf("idx: src, seg: %s\n", seg.String())
|
|
var segList = seg.Split()
|
|
err = CheckSegments(segList)
|
|
if err != nil {
|
|
t.Fatalf("check segments: %s", err.Error())
|
|
}
|
|
|
|
for i, s := range segList {
|
|
fmt.Printf("idx: %3d, seg: %s\n", i, s.String())
|
|
}
|
|
}
|