#include 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!"); }