mirror of
https://github.com/netchx/netch.git
synced 2026-04-05 19:45:05 +08:00
Update Test project
This commit is contained in:
@@ -7,7 +7,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Netch", "Netch\Netch.csproj
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SearchComboBox", "SearchComboBox\SearchComboBox.csproj", "{A8715AF4-ACC6-43F9-9381-4294C5360623}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Test", "Test\Test.csproj", "{53397641-35CA-4336-8E22-2CE12EF476AC}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTest", "UnitTest\UnitTest.csproj", "{53397641-35CA-4336-8E22-2CE12EF476AC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
||||
@@ -34,6 +34,12 @@ namespace Netch
|
||||
|
||||
public static readonly Mutex Mutex = new(false, "Global\\Netch");
|
||||
|
||||
#if DEBUG
|
||||
public static bool Testing = false;
|
||||
#else
|
||||
public const bool Testing = false;
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// 用于读取和写入的配置
|
||||
/// </summary>
|
||||
|
||||
@@ -39,8 +39,15 @@ namespace Netch.Utils
|
||||
|
||||
private static void Write(string text, LogLevel logLevel)
|
||||
{
|
||||
var contents = $@"[{DateTime.Now}][{logLevel.ToString()}] {text}{Global.EOF}";
|
||||
if (Global.Testing)
|
||||
{
|
||||
Console.WriteLine(contents);
|
||||
return;
|
||||
}
|
||||
|
||||
lock (FileLock)
|
||||
File.AppendAllText(LogFile, $@"[{DateTime.Now}][{logLevel.ToString()}] {text}{Global.EOF}");
|
||||
File.AppendAllText(LogFile, contents);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<Platforms>x64</Platforms>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove=".gitignore" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Netch\Netch.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework.TrimEnd(`0123456789`))' == 'net'">
|
||||
<!-- NET Framework -->
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NUnit" Version="3.13.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using Netch.Servers.ShadowsocksR;
|
||||
using Netch.Servers.VLESS;
|
||||
using Netch.Servers.VMess;
|
||||
using Netch.Servers.VMess.Form;
|
||||
using Netch.Utils;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace Test
|
||||
{
|
||||
[TestFixture]
|
||||
public class Tests
|
||||
{
|
||||
[Test]
|
||||
public void TestServerForm()
|
||||
{
|
||||
i18N.Load("zh-CN");
|
||||
|
||||
var server = ParseVMessUri();
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new VMessForm(server));
|
||||
}
|
||||
|
||||
private static ShadowsocksR ParseSSRUri()
|
||||
{
|
||||
return (ShadowsocksR) new SSRUtil().ParseUri(@"ssr://MTI3LjAuMC4xOjEyMzQ6YXV0aF9hZXMxMjhfbWQ1OmFlcy0xMjgtY2ZiOnRsczEuMl90aWNrZXRfYXV0aDpZV0ZoWW1KaS8_b2Jmc3BhcmFtPVluSmxZV3QzWVRFeExtMXZaUSZyZW1hcmtzPTVyV0w2Sy1WNUxpdDVwYUg").First();
|
||||
}
|
||||
|
||||
private static VMess ParseVMessUri()
|
||||
{
|
||||
/*
|
||||
{
|
||||
"v": "2",
|
||||
"ps": "备注别名",
|
||||
"add": "111.111.111.111",
|
||||
"port": "32000",
|
||||
"id": "1386f85e-657b-4d6e-9d56-78badb75e1fd",
|
||||
"aid": "100",
|
||||
"net": "tcp",
|
||||
"type": "none",
|
||||
"host": "www.bbb.com",
|
||||
"path": "/",
|
||||
"tls": "tls"
|
||||
}
|
||||
*/
|
||||
return (VMess) new VMessUtil().ParseUri(@"vmess://eyAidiI6ICIyIiwgInBzIjogIuWkh+azqOWIq+WQjSIsICJhZGQiOiAiMTExLjExMS4xMTEuMTExIiwgInBvcnQiOiAiMzIwMDAiLCAiaWQiOiAiMTM4NmY4NWUtNjU3Yi00ZDZlLTlkNTYtNzhiYWRiNzVlMWZkIiwgImFpZCI6ICIxMDAiLCAibmV0IjogInRjcCIsICJ0eXBlIjogIm5vbmUiLCAiaG9zdCI6ICJ3d3cuYmJiLmNvbSIsICJwYXRoIjogIi8iLCAidGxzIjogInRscyIgfQ==").First();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ParseVLESSUri()
|
||||
{
|
||||
var server = new VLESSUtil().ParseUri(@"vless://399ce595-894d-4d40-add1-7d87f1a3bd10@qv2ray.net:41971?type=kcp&headerType=wireguard&seed=69f04be3-d64e-45a3-8550-af3172c63055#VLESSmKCPSeedWG").First();
|
||||
}
|
||||
}
|
||||
}
|
||||
0
Test/.gitignore → UnitTest/.gitignore
vendored
0
Test/.gitignore → UnitTest/.gitignore
vendored
32
UnitTest/FunctionTest.cs
Normal file
32
UnitTest/FunctionTest.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Netch.Utils;
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
[TestClass]
|
||||
public class FunctionTest : TestBase
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestLoadI18N()
|
||||
{
|
||||
void TestLoad(string t)
|
||||
{
|
||||
Console.WriteLine($"Load: {t}");
|
||||
i18N.Load(t);
|
||||
Console.WriteLine($"Result: {i18N.LangCode}\n");
|
||||
}
|
||||
|
||||
Directory.CreateDirectory("logging");
|
||||
TestLoad("System");
|
||||
TestLoad("en-US");
|
||||
TestLoad("zh-CN");
|
||||
TestLoad("zh-HK");
|
||||
TestLoad("zh");
|
||||
TestLoad("HND123&*$_-^$@SAUI");
|
||||
TestLoad("");
|
||||
TestLoad("-");
|
||||
}
|
||||
}
|
||||
}
|
||||
69
UnitTest/ParseShareLinkTest.cs
Normal file
69
UnitTest/ParseShareLinkTest.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Netch.Servers.ShadowsocksR;
|
||||
using Netch.Servers.VLESS;
|
||||
using Netch.Servers.VMess;
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
[TestClass]
|
||||
public class TestParseShareLink : TestBase
|
||||
{
|
||||
[TestMethod]
|
||||
public void ParseSSR()
|
||||
{
|
||||
var server = (ShadowsocksR) new SSRUtil()
|
||||
.ParseUri(
|
||||
@"ssr://MTI3LjAuMC4xOjEyMzQ6YXV0aF9hZXMxMjhfbWQ1OmFlcy0xMjgtY2ZiOnRsczEuMl90aWNrZXRfYXV0aDpZV0ZoWW1KaS8_b2Jmc3BhcmFtPVluSmxZV3QzWVRFeExtMXZaUSZyZW1hcmtzPTVyV0w2Sy1WNUxpdDVwYUg")
|
||||
.First();
|
||||
|
||||
if (server == null)
|
||||
Assert.Fail();
|
||||
|
||||
Console.WriteLine(JsonSerializerFormatted(server));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ParseV2RayNFormatUri()
|
||||
{
|
||||
/*
|
||||
{
|
||||
"v": "2",
|
||||
"ps": "备注别名",
|
||||
"add": "111.111.111.111",
|
||||
"port": "32000",
|
||||
"id": "1386f85e-657b-4d6e-9d56-78badb75e1fd",
|
||||
"aid": "100",
|
||||
"net": "tcp",
|
||||
"type": "none",
|
||||
"host": "www.bbb.com",
|
||||
"path": "/",
|
||||
"tls": "tls"
|
||||
}
|
||||
*/
|
||||
var server = (VMess) new VMessUtil().ParseUri(
|
||||
@"vmess://eyAidiI6ICIyIiwgInBzIjogIuWkh+azqOWIq+WQjSIsICJhZGQiOiAiMTExLjExMS4xMTEuMTExIiwgInBvcnQiOiAiMzIwMDAiLCAiaWQiOiAiMTM4NmY4NWUtNjU3Yi00ZDZlLTlkNTYtNzhiYWRiNzVlMWZkIiwgImFpZCI6ICIxMDAiLCAibmV0IjogInRjcCIsICJ0eXBlIjogIm5vbmUiLCAiaG9zdCI6ICJ3d3cuYmJiLmNvbSIsICJwYXRoIjogIi8iLCAidGxzIjogInRscyIgfQ==")
|
||||
.First();
|
||||
|
||||
if (server == null)
|
||||
Assert.Fail();
|
||||
|
||||
Console.WriteLine(JsonSerializerFormatted(server));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ParseVLESSUri()
|
||||
{
|
||||
var server = new VLESSUtil()
|
||||
.ParseUri(
|
||||
@"vless://399ce595-894d-4d40-add1-7d87f1a3bd10@qv2ray.net:41971?type=kcp&headerType=wireguard&seed=69f04be3-d64e-45a3-8550-af3172c63055#VLESSmKCPSeedWG")
|
||||
.First();
|
||||
|
||||
if (server == null)
|
||||
Assert.Fail();
|
||||
|
||||
Console.WriteLine(JsonSerializerFormatted(server));
|
||||
}
|
||||
}
|
||||
}
|
||||
26
UnitTest/TestBase.cs
Normal file
26
UnitTest/TestBase.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using Netch;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
public class TestBase
|
||||
{
|
||||
private readonly JsonSerializerSettings _serializerSettings = new()
|
||||
{
|
||||
Formatting = Formatting.Indented,
|
||||
NullValueHandling = NullValueHandling.Ignore
|
||||
};
|
||||
|
||||
protected TestBase()
|
||||
{
|
||||
#if DEBUG
|
||||
Global.Testing = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
protected string JsonSerializerFormatted(object o)
|
||||
{
|
||||
return JsonConvert.SerializeObject(o, _serializerSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
18
UnitTest/Tests.cs
Normal file
18
UnitTest/Tests.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System.Windows.Forms;
|
||||
using Netch.Servers.VMess.Form;
|
||||
using Netch.Utils;
|
||||
|
||||
namespace UnitTest
|
||||
{
|
||||
public class Tests : TestBase
|
||||
{
|
||||
public static void TestServerForm()
|
||||
{
|
||||
i18N.Load("zh-CN");
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new VMessForm());
|
||||
}
|
||||
}
|
||||
}
|
||||
30
UnitTest/UnitTest.csproj
Normal file
30
UnitTest/UnitTest.csproj
Normal file
@@ -0,0 +1,30 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<Platforms>x64</Platforms>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove=".gitignore"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Netch\Netch.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework.TrimEnd(`0123456789`))' == 'net'">
|
||||
<!-- NET Framework -->
|
||||
<Reference Include="System.Windows.Forms"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1"/>
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="2.1.2"/>
|
||||
<PackageReference Include="MSTest.TestFramework" Version="2.1.2"/>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user