Created
September 6, 2016 16:15
-
-
Save nosoop/b81d32c04a3c75292b7e7f56ab411381 to your computer and use it in GitHub Desktop.
A few tests to make sure quirks are worked out.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma semicolon 1 | |
#include <sourcemod> | |
#include <tf2itemsinfo> | |
#pragma newdecls required | |
#define PLUGIN_VERSION "0.0.0" | |
public Plugin myinfo = { | |
name = "[TF2] TF2ItemsInfo Tests", | |
author = "nosoop", | |
description = "Ensure TF2II (or shims) properly handle odd quirks in the schema. Or not.", | |
version = PLUGIN_VERSION, | |
url = "https://gist.github.com/nosoop/" | |
} | |
public void OnPluginStart() { | |
RegAdminCmd("sm_tf2ii_test", AdminCmd_Test, ADMFLAG_ROOT, "Tests TF2ItemsInfo."); | |
} | |
public Action AdminCmd_Test(int client, int argc) { | |
// weapon we will query information for | |
int iDefIndex; | |
char buffer[256]; | |
SetTestContext("Single-slot items"); | |
// #TF_WEAPON_BAT | |
iDefIndex = 0; | |
AssertEq("Slot value for single-class melee (Scout bat)", | |
TF2II_GetItemSlot(iDefIndex, TFClass_Scout), TF2ItemSlot_Melee); | |
SetTestContext("Multi-slot items"); | |
// #pyroland_shotgun_flowerpower | |
iDefIndex = 15109; | |
TF2II_GetItemClass(iDefIndex, buffer, sizeof(buffer), TFClass_Heavy); | |
AssertStrEq("Entity class for shotgun (as Heavy)", | |
buffer, "tf_weapon_shotgun_hwg"); | |
AssertEq("Slot value for shotgun (as Pyro)", | |
TF2II_GetItemSlot(iDefIndex, TFClass_Pyro), TF2ItemSlot_Secondary); | |
// #TF_Weapon_BaseJumper | |
iDefIndex = 1101; | |
AssertEq("B.A.S.E. Jumper slot (Soldier)", | |
TF2II_GetItemSlot(iDefIndex, TFClass_Soldier), TF2ItemSlot_Secondary); | |
AssertEq("B.A.S.E. Jumper slot (Demoman)", | |
TF2II_GetItemSlot(iDefIndex, TFClass_DemoMan), TF2ItemSlot_Primary); | |
return Plugin_Handled; | |
} | |
/* testing.inc */ | |
/* no way to add custom assertion functions so we'll just copy/paste for now */ | |
/** | |
* vim: set ts=4 sw=4 tw=99 noet : | |
* ============================================================================= | |
* SourceMod (C)2004-2014 AlliedModders LLC. All rights reserved. | |
* ============================================================================= | |
* | |
* This file is part of the SourceMod/SourcePawn SDK. | |
* | |
* This program is free software; you can redistribute it and/or modify it under | |
* the terms of the GNU General Public License, version 3.0, as published by the | |
* Free Software Foundation. | |
* | |
* This program is distributed in the hope that it will be useful, but WITHOUT | |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | |
* details. | |
* | |
* You should have received a copy of the GNU General Public License along with | |
* this program. If not, see <http://www.gnu.org/licenses/>. | |
* | |
* As a special exception, AlliedModders LLC gives you permission to link the | |
* code of this program (as well as its derivative works) to "Half-Life 2," the | |
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software | |
* by the Valve Corporation. You must obey the GNU General Public License in | |
* all respects for all other code used. Additionally, AlliedModders LLC grants | |
* this exception to all derivative works. AlliedModders LLC defines further | |
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), | |
* or <http://www.sourcemod.net/license.php>. | |
* | |
* Version: $Id$ | |
*/ | |
static int TestNumber = 0; | |
static char TestContext[255]; | |
stock void SetTestContext(const char[] context) { | |
strcopy(TestContext, sizeof(TestContext), context); | |
} | |
stock void AssertEq(const char[] text, int cell1, int cell2) { | |
TestNumber++; | |
if (cell1 == cell2) { | |
PrintToServer("[%d] %s: %s == %d OK", TestNumber, TestContext, text, cell2); | |
} else { | |
PrintToServer("[%d] %s FAIL: %s should be %d, got %d", TestNumber, TestContext, text, cell2, cell1); | |
ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); | |
} | |
} | |
stock void AssertFalse(const char[] text, bool value) { | |
TestNumber++; | |
if (!value) { | |
PrintToServer("[%d] %s: %s == false OK", TestNumber, TestContext, text, value); | |
} else { | |
PrintToServer("[%d] %s FAIL: %s should be false, got true", TestNumber, TestContext, text); | |
ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); | |
} | |
} | |
stock void AssertTrue(const char[] text, bool value) { | |
TestNumber++; | |
if (value) { | |
PrintToServer("[%d] %s: %s == true OK", TestNumber, TestContext, text, value); | |
} else { | |
PrintToServer("[%d] %s FAIL: %s should be true, got false", TestNumber, TestContext, text); | |
ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); | |
} | |
} | |
stock void AssertStrEq(const char[] text, const char[] str1, const char[] str2) { | |
TestNumber++; | |
if (StrEqual(str1, str2)) { | |
PrintToServer("[%d] %s: %s == %s OK", TestNumber, TestContext, text, str2); | |
} else { | |
PrintToServer("[%d] %s FAIL: %s should be %s, got %s", TestNumber, TestContext, text, str2, str1); | |
ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment