#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 \ } \ }"; KeyValues kv = CreateKeyValues(""); if (!kv.ImportFromString(validKv)) ThrowError("Valid kv not read correctly!"); char value[128]; kv.GetString("child", value, sizeof(value)); if (!StrEqual(value, "value")) ThrowError("Child kv should have 'value' but has: '%s'", value); if (!kv.JumpToKey("subkey")) ThrowError("No sub kv subkey exists!"); kv.GetString("subchild", value, sizeof(value)); if (!StrEqual(value, "subvalue")) ThrowError("Subkv subvalue should have 'subvalue' but has: '%s'", value); float subfloat = kv.GetFloat("subfloat"); if (subfloat != 1.0) ThrowError( "Subkv subfloat should have 1.0 but has: %f", subfloat) delete kv; PrintToServer("KeyValue tests passed!"); }