Skip to content

Instantly share code, notes, and snippets.

@nosoop
Created September 6, 2016 16:15
Show Gist options
  • Save nosoop/b81d32c04a3c75292b7e7f56ab411381 to your computer and use it in GitHub Desktop.
Save nosoop/b81d32c04a3c75292b7e7f56ab411381 to your computer and use it in GitHub Desktop.
A few tests to make sure quirks are worked out.
#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