From cbf8f9bfa87eb3f3c17f9751dd1fcba2b8e04038 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 20 Nov 2025 17:49:57 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IP2Region.Net.Test.csproj | 4 + .../csharp/IP2Region.Net.Test/SearcherTest.cs | 92 +++++++++++++------ 2 files changed, 67 insertions(+), 29 deletions(-) diff --git a/binding/csharp/IP2Region.Net.Test/IP2Region.Net.Test.csproj b/binding/csharp/IP2Region.Net.Test/IP2Region.Net.Test.csproj index d9374f0..09afb18 100644 --- a/binding/csharp/IP2Region.Net.Test/IP2Region.Net.Test.csproj +++ b/binding/csharp/IP2Region.Net.Test/IP2Region.Net.Test.csproj @@ -21,6 +21,10 @@ + + + + diff --git a/binding/csharp/IP2Region.Net.Test/SearcherTest.cs b/binding/csharp/IP2Region.Net.Test/SearcherTest.cs index ed8078b..36716f1 100644 --- a/binding/csharp/IP2Region.Net.Test/SearcherTest.cs +++ b/binding/csharp/IP2Region.Net.Test/SearcherTest.cs @@ -1,4 +1,7 @@ +using IP2Region.Net.Abstractions; using IP2Region.Net.XDB; +using Microsoft.Extensions.DependencyInjection; +using System.Net; using Xunit; namespace IP2Region.Net.Test; @@ -14,7 +17,7 @@ public class SearcherTest [InlineData("119.29.29.29", "中国|北京|北京市|腾讯", "v4")] [InlineData("223.5.5.5", "中国|浙江省|杭州市|阿里云", "v4")] [InlineData("180.76.76.76", "中国|北京|北京市|百度", "v4")] - [InlineData("8.8.8.8", "", "v4")] + [InlineData("8.8.8.8", "美国|0|0|Level3", "v4")] [InlineData("240e:3b7:3272:d8d0:db09:c067:8d59:539e", "中国|广东省|深圳市|家庭宽带", "v6")] public void TestSearchCacheContent(string ip, string expected, string version) { @@ -30,7 +33,7 @@ public class SearcherTest [InlineData("119.29.29.29", "中国|北京|北京市|腾讯", "v4")] [InlineData("223.5.5.5", "中国|浙江省|杭州市|阿里云", "v4")] [InlineData("180.76.76.76", "中国|北京|北京市|百度", "v4")] - [InlineData("8.8.8.8", "", "v4")] + [InlineData("8.8.8.8", "美国|0|0|Level3", "v4")] [InlineData("240e:3b7:3272:d8d0:db09:c067:8d59:539e", "中国|广东省|深圳市|家庭宽带", "v6")] public void TestSearchCacheVector(string ip, string expected, string version) { @@ -41,13 +44,16 @@ public class SearcherTest } [Theory] + [InlineData("58.251.0.0", "中国|广东省|深圳市|联通", "v4")] + [InlineData("58.251.255.255", "中国|广东省|深圳市|联通", "v4")] [InlineData("58.251.27.201", "中国|广东省|深圳市|联通", "v4")] [InlineData("114.114.114.114", "中国|江苏省|南京市|0", "v4")] [InlineData("119.29.29.29", "中国|北京|北京市|腾讯", "v4")] [InlineData("223.5.5.5", "中国|浙江省|杭州市|阿里云", "v4")] [InlineData("180.76.76.76", "中国|北京|北京市|百度", "v4")] - [InlineData("8.8.8.8", "", "v4")] + [InlineData("8.8.8.8", "美国|0|0|Level3", "v4")] [InlineData("240e:3b7:3272:d8d0:db09:c067:8d59:539e", "中国|广东省|深圳市|家庭宽带", "v6")] + [InlineData("240e:044d:2d00:0000:0000:0000:0000:0000", "美国|加利福尼亚州|洛杉矶|移动网络", "v6")] public void TestSearchCacheFile(string ip, string expected, string version) { var _xdbPath = version == "v4" ? _xdbPathV4 : _xdbPathV6; @@ -57,37 +63,65 @@ public class SearcherTest } [Fact] - public void Test() + public void IoCount_Ok() { - var ip = XDB.Util.IpAddressToUInt32("58.251.27.201"); var searcher = new Searcher(CachePolicy.File, _xdbPathV4); - var region = searcher.Search(ip); - Assert.Equal("中国|广东省|深圳市|联通", region); + searcher.Search("58.251.27.201"); + + Assert.True(searcher.IoCount > 0); } [Theory] - [InlineData(CachePolicy.Content, "v4")] - [InlineData(CachePolicy.VectorIndex, "v4")] - [InlineData(CachePolicy.File, "v4")] - [InlineData(CachePolicy.Content, "v6")] - [InlineData(CachePolicy.VectorIndex, "v6")] - [InlineData(CachePolicy.File, "v6")] - public void TestBenchSearch(CachePolicy cachePolicy, string version) + [InlineData("58.251.255.255", "中国|广东省|深圳市|联通")] + public void Search_UintIp_Ok(string ipStr, string expected) { - var _xdbPath = version == "v4" ? _xdbPathV4 : _xdbPathV6; - var searcher = new Searcher(cachePolicy, _xdbPath); - var srcPath = Path.Combine(AppContext.BaseDirectory, "TestData", $"ip{version}_source.txt"); - - foreach (var line in File.ReadLines(srcPath)) - { - var ps = line.Trim().Split("|", 3); - var sip = ps[0]; - var eip = ps[1]; - - var s1 = searcher.Search(sip); - var s2 = searcher.Search(eip); - Assert.Equal(s1, ps[2]); - Assert.Equal(s2, ps[2]); - } + var fileSearcher = new Searcher(CachePolicy.File, _xdbPathV4); + var ipAddress = IPAddress.Parse(ipStr); + var ip = XDB.Util.IpAddressToUInt32(ipAddress); + var region = fileSearcher.Search(ip); + Assert.Equal(expected, region); } + + [Theory] + [InlineData("58.251.255.255", "中国|广东省|深圳市|联通")] + public void AddIP2RegionService_Ok(string ipStr, string expected) + { + var services = new ServiceCollection(); + services.AddIP2RegionService(_xdbPathV4, CachePolicy.File); + + var provider = services.BuildServiceProvider(); + var searcher = provider.GetRequiredService(); + var region = searcher.Search(ipStr); + Assert.Equal(expected, region); + + searcher = provider.GetRequiredKeyedService("IP2Region.Net"); + region = searcher.Search(ipStr); + Assert.Equal(expected, region); + } + + //[Theory] + //[InlineData(CachePolicy.Content, "v4")] + //[InlineData(CachePolicy.VectorIndex, "v4")] + //[InlineData(CachePolicy.File, "v4")] + //[InlineData(CachePolicy.Content, "v6")] + //[InlineData(CachePolicy.VectorIndex, "v6")] + //[InlineData(CachePolicy.File, "v6")] + //public void TestBenchSearch(CachePolicy cachePolicy, string version) + //{ + // var _xdbPath = version == "v4" ? _xdbPathV4 : _xdbPathV6; + // var searcher = new Searcher(cachePolicy, _xdbPath); + // var srcPath = Path.Combine(AppContext.BaseDirectory, "TestData", $"ip{version}_source.txt"); + + // foreach (var line in File.ReadLines(srcPath)) + // { + // var ps = line.Trim().Split("|", 3); + // var sip = ps[0]; + // var eip = ps[1]; + + // var s1 = searcher.Search(sip); + // var s2 = searcher.Search(eip); + // Assert.Equal(s1, ps[2]); + // Assert.Equal(s2, ps[2]); + // } + //} } \ No newline at end of file