From fc54903fd0dcb01b4ef69dbac992fbfc7100713a Mon Sep 17 00:00:00 2001 From: Ryan Stecker <voidedweasel@gmail.com> Date: Sat, 5 Jul 2014 12:01:17 -0500 Subject: [PATCH] Add test. --- plugins/testsuite/keyvalues.sp | 58 ++++++++++++++++++++++++++++++++++ tools/buildbot/PackageScript | 1 + 2 files changed, 59 insertions(+) create mode 100644 plugins/testsuite/keyvalues.sp diff --git a/plugins/testsuite/keyvalues.sp b/plugins/testsuite/keyvalues.sp new file mode 100644 index 00000000..bef02fe7 --- /dev/null +++ b/plugins/testsuite/keyvalues.sp @@ -0,0 +1,58 @@ + +#include <sourcemod> + +public Plugin:myinfo = +{ + name = "KeyValues test", + author = "AlliedModders LLC", + description = "KeyValues test", + version = SOURCEMOD_VERSION, + url = "http://www.sourcemod.net/" +}; + + +public OnPluginStart() +{ + RegServerCmd("test_keyvalues", RunTests); +} + +public Action:RunTests(argc) +{ + new String:validKv[] = + "\"root\" \ + { \ + \"child\" \"value\" \ + \"subkey\" { \ + subchild subvalue \ + subfloat 1.0 \ + } \ + }"; + + new Handle:kv = CreateKeyValues(""); + + if (!StringToKeyValues(kv, validKv)) + ThrowError("Valid kv not read correctly!"); + + decl String:value[128]; + KvGetString(kv, "child", value, sizeof(value)); + + if (!StrEqual(value, "value")) + ThrowError("Child kv should have 'value' but has: '%s'", value); + + if (!KvJumpToKey(kv, "subkey")) + ThrowError("No sub kv subkey exists!"); + + KvGetString(kv, "subchild", value, sizeof(value)); + + if (!StrEqual(value, "subvalue")) + ThrowError("Subkv subvalue should have 'subvalue' but has: '%s'", value); + + new Float:subfloat = KvGetFloat(kv, "subfloat"); + + if (subfloat != 1.0) + ThrowError( "Subkv subfloat should have 1.0 but has: %f", subfloat) + + CloseHandle(kv); + + PrintToServer("KeyValue tests passed!"); +} diff --git a/tools/buildbot/PackageScript b/tools/buildbot/PackageScript index a24529aa..0729bfd9 100644 --- a/tools/buildbot/PackageScript +++ b/tools/buildbot/PackageScript @@ -411,6 +411,7 @@ CopyFiles('plugins/testsuite', 'addons/sourcemod/scripting/testsuite', 'structtest.sp', 'tf2-test.sp', 'tries.sp', + 'keyvalues.sp', ] ) CopyFiles('plugins/basecommands', 'addons/sourcemod/scripting/basecommands',