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