polserver/pol-core/pol/testing/testexpansion.cpp
turleypol 21577d8e5b
Clang Tidy concat namespaces (#855)
* tidy

* Automated clang-tidy change: modernize-concat-nested-namespaces

* compile test

* fix namespace

---------

Co-authored-by: Clang Tidy <clang-tidy@users.noreply.github.com>
2026-01-17 10:30:21 +01:00

155 lines
5.7 KiB
C++

/** @file
*
* @par History
*/
#include <algorithm>
#include <array>
#include <cstring>
#include <limits>
#include <string>
#include "../../clib/logfacility.h"
#include "../../clib/rawtypes.h"
#include "../../plib/uoexpansion.h"
#include "testenv.h"
namespace Pol::Testing
{
void uoextension_test()
{
using namespace Plib;
UnitTest( []() { return getExpansionName( getExpansionVersion( "T2A" ) ); }, "T2A",
"t2a expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "LBR" ) ); }, "LBR",
"lbr expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "AOS" ) ); }, "AOS",
"aos expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "SE" ) ); }, "SE",
"se expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "ML" ) ); }, "ML",
"ml expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "KR" ) ); }, "KR",
"kr expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "SA" ) ); }, "SA",
"sa expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "HSA" ) ); }, "HSA",
"hsa expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "TOL" ) ); }, "TOL",
"tol expansion" );
UnitTest( []() { return getExpansionName( getExpansionVersion( "unknown" ) ); }, "T2A",
"unknown expansion" );
{
ServerFeatures server;
server.updateFromPolCfg( 7 );
server.updateFromSSOpt( A9Feature::AOS, "AOS", 0 );
UnitTest(
[&]()
{
server.updateFromSSOpt( A9Feature::AOS, "AOS", 0 );
return server.supportsAOS();
},
true, "server: aos support true" );
UnitTest(
[&]()
{
server.updateFromSSOpt( A9Feature::None, "T2A", 0 );
return server.supportsAOS();
},
false, "server: aos support false" );
UnitTest(
[&]()
{
server.updateFromSSOpt( A9Feature::None, "T2A", 0 );
return server.faceSupport();
},
FaceSupport::None, "server: face support none" );
UnitTest(
[&]()
{
server.updateFromSSOpt( A9Feature::None, "T2A", 1 );
return server.faceSupport();
},
FaceSupport::Basic, "server: face support basic" );
UnitTest(
[&]()
{
server.updateFromSSOpt( A9Feature::None, "T2A", 2 );
return server.faceSupport();
},
FaceSupport::RolePlay, "server: face support roleplay" );
UnitTest(
[&]()
{
server.updateFromSSOpt( A9Feature::None, "T2A", 10 );
return server.faceSupport();
},
FaceSupport::RolePlay, "server: face support roleplay clamp" );
}
{
ServerFeatures server;
server.updateFromPolCfg( 7 );
UnitTest( [&]() { return AccountExpansion( "AOS" ).getCharSlots( server ); }, 7,
"account AOS chr slots 7" );
UnitTest( [&]() { return AccountExpansion( "T2A" ).getCharSlots( server ); }, 5,
"account T2A chr slots 5" );
}
{
ServerFeatures server;
server.updateFromPolCfg( 7 );
UnitTest( [&]() { return AccountExpansion( "AOS" ).calculatedExtensionFlags( server ); },
B9Feature::DefaultAOS | B9Feature::Has7thSlot, "account AOS chr slots 7 feature" );
UnitTest( [&]() { return AccountExpansion( "T2A" ).calculatedExtensionFlags( server ); },
B9Feature::DefaultT2A, "account T2A chr slots 7 feature" );
server.updateFromPolCfg( 6 );
UnitTest( [&]() { return AccountExpansion( "AOS" ).calculatedExtensionFlags( server ); },
B9Feature::DefaultAOS | B9Feature::Has6thSlot, "account AOS chr slots 6 feature" );
UnitTest( [&]() { return AccountExpansion( "T2A" ).calculatedExtensionFlags( server ); },
B9Feature::DefaultT2A, "account T2A chr slots 6 feature" );
server.updateFromPolCfg( 5 );
UnitTest( [&]() { return AccountExpansion( "AOS" ).calculatedExtensionFlags( server ); },
B9Feature::DefaultAOS, "account AOS chr slots 5 feature" );
UnitTest( [&]() { return AccountExpansion( "T2A" ).calculatedExtensionFlags( server ); },
B9Feature::DefaultT2A, "account T2A chr slots 5 feature" );
}
{
ServerFeatures server;
server.updateFromSSOpt( A9Feature::AOS, "KR", 2 );
UnitTest( [&]() { return AccountExpansion( "KR" ).calculatedExtensionFlags( server ); },
B9Feature::DefaultKR | B9Feature::KRFaces, "account KR faces feature" );
}
{
ServerFeatures server;
server.updateFromSSOpt( A9Feature::AOS, "AOS", 0 );
UnitTest( [&]() { return AccountExpansion( "AOS" ).calculateFeatureFlags( server ); },
A9Feature::AOS | A9Feature::UO3DClientType, "account A9Feature 5 chars" );
UnitTest(
[&]()
{
server.updateFromPolCfg( 7 );
return AccountExpansion( "AOS" ).calculateFeatureFlags( server );
},
A9Feature::AOS | A9Feature::UO3DClientType | A9Feature::Has7thSlot,
"account A9Feature 7 chars" );
UnitTest(
[&]()
{
server.updateFromPolCfg( 6 );
return AccountExpansion( "AOS" ).calculateFeatureFlags( server );
},
A9Feature::AOS | A9Feature::UO3DClientType | A9Feature::Has6thSlot,
"account A9Feature 6 chars" );
UnitTest(
[&]()
{
server.updateFromPolCfg( 1 );
return AccountExpansion( "AOS" ).calculateFeatureFlags( server );
},
A9Feature::AOS | A9Feature::UO3DClientType | A9Feature::SingleCharacter |
A9Feature::LimitSlots,
"account A9Feature 1 chars" );
}
}
} // namespace Pol::Testing