251cced1f8
Various minor things done to project files Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way) Updated regex project file and makefile --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401971
332 lines
8.1 KiB
SourcePawn
332 lines
8.1 KiB
SourcePawn
#include <sourcemod>
|
|
|
|
public Plugin:myinfo =
|
|
{
|
|
name = "Sorting Test",
|
|
author = "AlliedModders LLC",
|
|
description = "Tests sorting functions",
|
|
version = "1.0.0.0",
|
|
url = "http://www.sourcemod.net/"
|
|
};
|
|
|
|
public OnPluginStart()
|
|
{
|
|
RegServerCmd("test_sort_ints", Command_TestSortInts)
|
|
RegServerCmd("test_sort_floats", Command_TestSortFloats)
|
|
RegServerCmd("test_sort_strings", Command_TestSortStrings)
|
|
RegServerCmd("test_sort_1d", Command_TestSort1D)
|
|
RegServerCmd("test_sort_2d", Command_TestSort2D)
|
|
RegServerCmd("test_adtsort_ints", Command_TestSortADTInts)
|
|
RegServerCmd("test_adtsort_floats", Command_TestSortADTFloats)
|
|
RegServerCmd("test_adtsort_strings", Command_TestSortADTStrings)
|
|
RegServerCmd("test_adtsort_custom", Command_TestSortADTCustom)
|
|
}
|
|
|
|
/*****************
|
|
* INTEGER TESTS *
|
|
*****************/
|
|
// Note that integer comparison is just int1-int2 (or a variation therein)
|
|
|
|
PrintIntegers(const array[], size)
|
|
{
|
|
for (new i=0; i<size; i++)
|
|
{
|
|
PrintToServer("array[%d] = %d", i, array[i])
|
|
}
|
|
}
|
|
|
|
public Action:Command_TestSortInts(args)
|
|
{
|
|
new array[10] = {6, 7, 3, 2, 8, 5, 0, 1, 4, 9}
|
|
|
|
PrintToServer("Testing ascending sort:")
|
|
SortIntegers(array, 10, Sort_Ascending)
|
|
PrintIntegers(array, 10)
|
|
|
|
PrintToServer("Testing descending sort:")
|
|
SortIntegers(array, 10, Sort_Descending)
|
|
PrintIntegers(array, 10)
|
|
|
|
PrintToServer("Testing random sort:")
|
|
SortIntegers(array, 10, Sort_Random)
|
|
PrintIntegers(array, 10)
|
|
|
|
return Plugin_Handled
|
|
}
|
|
|
|
/**************************
|
|
* Float comparison tests *
|
|
**************************/
|
|
|
|
PrintFloats(const Float:array[], size)
|
|
{
|
|
for (new i=0; i<size; i++)
|
|
{
|
|
PrintToServer("array[%d] = %f", i, array[i])
|
|
}
|
|
}
|
|
|
|
public Action:Command_TestSortFloats(args)
|
|
{
|
|
new Float:array[10] = {6.3, 7.6, 3.2, 2.1, 8.5, 5.2, 0.4, 1.7, 4.8, 8.2}
|
|
|
|
PrintToServer("Testing ascending sort:")
|
|
SortFloats(array, 10, Sort_Ascending)
|
|
PrintFloats(array, 10)
|
|
|
|
PrintToServer("Testing descending sort:")
|
|
SortFloats(array, 10, Sort_Descending)
|
|
PrintFloats(array, 10)
|
|
|
|
PrintToServer("Testing random sort:")
|
|
SortFloats(array, 10, Sort_Random)
|
|
PrintFloats(array, 10)
|
|
|
|
return Plugin_Handled
|
|
}
|
|
|
|
public Custom1DSort(elem1, elem2, const array[], Handle:hndl)
|
|
{
|
|
new Float:f1 = Float:elem1
|
|
new Float:f2 = Float:elem2
|
|
if (f1 > f2)
|
|
{
|
|
return -1;
|
|
} else if (f1 < f2) {
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
public Action:Command_TestSort1D(args)
|
|
{
|
|
new Float:array[10] = {6.3, 7.6, 3.2, 2.1, 8.5, 5.2, 0.4, 1.7, 4.8, 8.2}
|
|
|
|
SortCustom1D(_:array, 10, Custom1DSort)
|
|
PrintFloats(array, 10)
|
|
|
|
return Plugin_Handled
|
|
}
|
|
|
|
/***************************
|
|
* String comparison tests *
|
|
***************************/
|
|
|
|
PrintStrings(const String:array[][], size)
|
|
{
|
|
for (new i=0; i<size; i++)
|
|
{
|
|
PrintToServer("array[%d] = %s", i, array[i])
|
|
}
|
|
}
|
|
|
|
public Action:Command_TestSortStrings(args)
|
|
{
|
|
new String:strarray[][] =
|
|
{
|
|
"faluco",
|
|
"bailopan",
|
|
"pm onoto",
|
|
"damaged soul",
|
|
"sniperbeamer",
|
|
"sidluke",
|
|
"johnny got his gun",
|
|
"gabe newell",
|
|
"pRED*'s awesome",
|
|
"WHAT?!"
|
|
}
|
|
|
|
PrintToServer("Testing ascending sort:")
|
|
SortStrings(strarray, 10, Sort_Ascending)
|
|
PrintStrings(strarray, 10)
|
|
|
|
PrintToServer("Testing descending sort:")
|
|
SortStrings(strarray, 10, Sort_Descending)
|
|
PrintStrings(strarray, 10)
|
|
|
|
PrintToServer("Testing random sort:")
|
|
SortStrings(strarray, 10, Sort_Random)
|
|
PrintStrings(strarray, 10)
|
|
|
|
return Plugin_Handled
|
|
}
|
|
|
|
public Custom2DSort(String:elem1[], String:elem2[], String:array[][], Handle:hndl)
|
|
{
|
|
return strcmp(elem1, elem2)
|
|
}
|
|
|
|
public Action:Command_TestSort2D(args)
|
|
{
|
|
new String:array[][] =
|
|
{
|
|
"faluco",
|
|
"bailopan",
|
|
"pm onoto",
|
|
"damaged soul",
|
|
"sniperbeamer",
|
|
"sidluke",
|
|
"johnny got his gun",
|
|
"gabe newell",
|
|
"pred is a crab",
|
|
"WHAT?!"
|
|
}
|
|
|
|
SortCustom2D(_:array, 10, Custom2DSort)
|
|
PrintStrings(array, 10)
|
|
|
|
return Plugin_Handled
|
|
}
|
|
|
|
/*******************
|
|
* ADT ARRAY TESTS *
|
|
*******************/
|
|
// Int and floats work the same as normal comparisions. Strings are direct
|
|
// comparisions with no hacky memory stuff like Pawn arrays.
|
|
|
|
PrintADTArrayIntegers(Handle:array)
|
|
{
|
|
new size = GetArraySize(array);
|
|
for (new i=0; i<size;i++)
|
|
{
|
|
PrintToServer("array[%d] = %d", i, GetArrayCell(array, i));
|
|
}
|
|
}
|
|
|
|
public Action:Command_TestSortADTInts(args)
|
|
{
|
|
new Handle:array = CreateArray();
|
|
PushArrayCell(array, 6);
|
|
PushArrayCell(array, 7);
|
|
PushArrayCell(array, 3);
|
|
PushArrayCell(array, 2);
|
|
PushArrayCell(array, 8);
|
|
PushArrayCell(array, 5);
|
|
PushArrayCell(array, 0);
|
|
PushArrayCell(array, 1);
|
|
PushArrayCell(array, 4);
|
|
PushArrayCell(array, 9);
|
|
|
|
PrintToServer("Testing ascending sort:")
|
|
SortADTArray(array, Sort_Ascending, Sort_Integer)
|
|
PrintADTArrayIntegers(array)
|
|
|
|
PrintToServer("Testing descending sort:")
|
|
SortADTArray(array, Sort_Descending, Sort_Integer)
|
|
PrintADTArrayIntegers(array)
|
|
|
|
PrintToServer("Testing random sort:")
|
|
SortADTArray(array, Sort_Random, Sort_Integer)
|
|
PrintADTArrayIntegers(array)
|
|
|
|
return Plugin_Handled
|
|
|
|
}
|
|
|
|
PrintADTArrayFloats(Handle:array)
|
|
{
|
|
new size = GetArraySize(array);
|
|
for (new i=0; i<size;i++)
|
|
{
|
|
PrintToServer("array[%d] = %f", i, float:GetArrayCell(array, i));
|
|
}
|
|
}
|
|
|
|
public Action:Command_TestSortADTFloats(args)
|
|
{
|
|
new Handle:array = CreateArray();
|
|
PushArrayCell(array, 6.0);
|
|
PushArrayCell(array, 7.0);
|
|
PushArrayCell(array, 3.0);
|
|
PushArrayCell(array, 2.0);
|
|
PushArrayCell(array, 8.0);
|
|
PushArrayCell(array, 5.0);
|
|
PushArrayCell(array, 0.0);
|
|
PushArrayCell(array, 1.0);
|
|
PushArrayCell(array, 4.0);
|
|
PushArrayCell(array, 9.0);
|
|
|
|
PrintToServer("Testing ascending sort:")
|
|
SortADTArray(array, Sort_Ascending, Sort_Float)
|
|
PrintADTArrayFloats(array)
|
|
|
|
PrintToServer("Testing descending sort:")
|
|
SortADTArray(array, Sort_Descending, Sort_Float)
|
|
PrintADTArrayFloats(array)
|
|
|
|
PrintToServer("Testing random sort:")
|
|
SortADTArray(array, Sort_Random, Sort_Float)
|
|
PrintADTArrayFloats(array)
|
|
|
|
return Plugin_Handled
|
|
}
|
|
|
|
PrintADTArrayStrings(Handle:array)
|
|
{
|
|
new size = GetArraySize(array);
|
|
decl String:buffer[64];
|
|
for (new i=0; i<size;i++)
|
|
{
|
|
GetArrayString(array, i, buffer, sizeof(buffer));
|
|
PrintToServer("array[%d] = %s", i, buffer);
|
|
}
|
|
}
|
|
|
|
public Action:Command_TestSortADTStrings(args)
|
|
{
|
|
new Handle:array = CreateArray(ByteCountToCells(64));
|
|
PushArrayString(array, "faluco");
|
|
PushArrayString(array, "bailopan");
|
|
PushArrayString(array, "pm onoto");
|
|
PushArrayString(array, "damaged soul");
|
|
PushArrayString(array, "sniperbeamer");
|
|
PushArrayString(array, "sidluke");
|
|
PushArrayString(array, "johnny got his gun");
|
|
PushArrayString(array, "gabe newell");
|
|
PushArrayString(array, "Hello pRED*");
|
|
PushArrayString(array, "WHAT?!");
|
|
|
|
PrintToServer("Testing ascending sort:")
|
|
SortADTArray(array, Sort_Ascending, Sort_String)
|
|
PrintADTArrayStrings(array)
|
|
|
|
PrintToServer("Testing descending sort:")
|
|
SortADTArray(array, Sort_Descending, Sort_String)
|
|
PrintADTArrayStrings(array)
|
|
|
|
PrintToServer("Testing random sort:")
|
|
SortADTArray(array, Sort_Random, Sort_String)
|
|
PrintADTArrayStrings(array)
|
|
|
|
return Plugin_Handled
|
|
}
|
|
|
|
public ArrayADTCustomCallback(index1, index2, Handle:array, Handle:hndl)
|
|
{
|
|
decl String:buffer1[64], String:buffer2[64];
|
|
GetArrayString(array, index1, buffer1, sizeof(buffer1));
|
|
GetArrayString(array, index2, buffer2, sizeof(buffer2));
|
|
|
|
return strcmp(buffer1, buffer2);
|
|
}
|
|
|
|
public Action:Command_TestSortADTCustom(args)
|
|
{
|
|
new Handle:array = CreateArray(ByteCountToCells(64));
|
|
PushArrayString(array, "faluco");
|
|
PushArrayString(array, "bailopan");
|
|
PushArrayString(array, "pm onoto");
|
|
PushArrayString(array, "damaged soul");
|
|
PushArrayString(array, "sniperbeamer");
|
|
PushArrayString(array, "sidluke");
|
|
PushArrayString(array, "johnny got his gun");
|
|
PushArrayString(array, "gabe newell");
|
|
PushArrayString(array, "pRED*'s running out of ideas");
|
|
PushArrayString(array, "WHAT?!");
|
|
|
|
PrintToServer("Testing custom sort:")
|
|
SortADTArrayCustom(array, ArrayADTCustomCallback)
|
|
PrintADTArrayStrings(array);
|
|
}
|