Files
sbox-public/engine/Sandbox.Test/Addon/PackageTests.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

117 lines
3.4 KiB
C#

namespace Addon
{
[TestClass]
public partial class PackageTests
{
[TestMethod]
public void ParseIdent()
{
Assert.IsFalse( Package.TryParseIdent( "assetparty", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( "asset_party", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( "asset-party", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( ".", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( "@", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( "#", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( "/", out var _ ) );
{
Assert.IsTrue( Package.TryParseIdent( "asset.party", out var p ) );
Assert.AreEqual( "asset", p.org );
Assert.AreEqual( "party", p.package );
Assert.IsNull( p.version );
}
{
Assert.IsTrue( Package.TryParseIdent( "asset/party", out var p ) );
Assert.AreEqual( "asset", p.org );
Assert.AreEqual( "party", p.package );
Assert.IsNull( p.version );
}
}
[TestMethod]
public void ParseIdentWithVersion()
{
Assert.IsFalse( Package.TryParseIdent( "asset.party#poop", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( "asset.party#!!", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( "asset.party#0.234", out var _ ) );
Assert.IsFalse( Package.TryParseIdent( "asset.party#", out var _ ) );
{
Assert.IsTrue( Package.TryParseIdent( "asset.party#45366", out var p ) );
Assert.AreEqual( "asset", p.org );
Assert.AreEqual( "party", p.package );
Assert.AreEqual( 45366, p.version );
}
{
Assert.IsTrue( Package.TryParseIdent( "asset/party#45366", out var p ) );
Assert.AreEqual( "asset", p.org );
Assert.AreEqual( "party", p.package );
Assert.AreEqual( 45366, p.version );
}
}
[TestMethod]
public void ParseIdentWithUrl()
{
Assert.IsFalse( Package.TryParseIdent( "https://www.google.com/", out var _ ) );
{
Assert.IsTrue( Package.TryParseIdent( "https://asset.party/facepunch/sandbox", out var p ) );
Assert.AreEqual( "facepunch", p.org );
Assert.AreEqual( "sandbox", p.package );
Assert.IsNull( p.version );
}
{
Assert.IsTrue( Package.TryParseIdent( "https://sbox.game/facepunch/sandbox", out var p ) );
Assert.AreEqual( "facepunch", p.org );
Assert.AreEqual( "sandbox", p.package );
Assert.IsNull( p.version );
}
{
Assert.IsTrue( Package.TryParseIdent( "https://asset.party/facepunch/sandbox/", out var p ) );
Assert.AreEqual( "facepunch", p.org );
Assert.AreEqual( "sandbox", p.package );
Assert.IsNull( p.version );
}
{
Assert.IsTrue( Package.TryParseIdent( "https://asset.party/facepunch/sandbox#45366", out var p ) );
Assert.AreEqual( "facepunch", p.org );
Assert.AreEqual( "sandbox", p.package );
Assert.AreEqual( 45366, p.version );
}
{
Assert.IsTrue( Package.TryParseIdent( "https://asset.party/facepunch/sandbox/#45366", out var p ) );
Assert.AreEqual( "facepunch", p.org );
Assert.AreEqual( "sandbox", p.package );
Assert.AreEqual( 45366, p.version );
}
}
[TestMethod]
public void ParseIdentWithLocal()
{
Assert.IsTrue( Package.TryParseIdent( "asset.party#local", out var p ) );
Assert.IsTrue( p.local );
Assert.IsNull( p.version );
}
[TestMethod]
public async Task PackageFindAsync()
{
var result = await Package.FindAsync( "type:game", 200, 0 );
Assert.IsNotNull( result.Packages );
Assert.IsTrue( result.Packages.Length > 0 );
}
}
}