plugins/testsuite/sorttest.sp
author Ruben Gonzalez <drifter01620@gmail.com>
Thu May 22 09:49:27 2014 -0400 (2014-05-22)
changeset 4378 568f4497ef4a
parent 2289 44045ead61cd
permissions -rw-r--r--
Update CS:GO team score gamedata.
     1 #include <sourcemod>
     2 
     3 public Plugin:myinfo = 
     4 {
     5 	name = "Sorting Test",
     6 	author = "AlliedModders LLC",
     7 	description = "Tests sorting functions",
     8 	version = "1.0.0.0",
     9 	url = "http://www.sourcemod.net/"
    10 };
    11 
    12 public OnPluginStart()
    13 {
    14 	RegServerCmd("test_sort_ints", Command_TestSortInts)
    15 	RegServerCmd("test_sort_floats", Command_TestSortFloats)
    16 	RegServerCmd("test_sort_strings", Command_TestSortStrings)
    17 	RegServerCmd("test_sort_1d", Command_TestSort1D)
    18 	RegServerCmd("test_sort_2d", Command_TestSort2D)
    19 	RegServerCmd("test_adtsort_ints", Command_TestSortADTInts)
    20 	RegServerCmd("test_adtsort_floats", Command_TestSortADTFloats)
    21 	RegServerCmd("test_adtsort_strings", Command_TestSortADTStrings)
    22 	RegServerCmd("test_adtsort_custom", Command_TestSortADTCustom)
    23 }
    24 
    25 /*****************
    26  * INTEGER TESTS *
    27  *****************/
    28 // Note that integer comparison is just int1-int2 (or a variation therein)
    29 
    30 PrintIntegers(const array[], size)
    31 {
    32 	for (new i=0; i<size; i++)
    33 	{
    34 		PrintToServer("array[%d] = %d", i, array[i])
    35 	}
    36 }
    37 
    38 public Action:Command_TestSortInts(args)
    39 {
    40 	new array[10] = {6, 7, 3, 2, 8, 5, 0, 1, 4, 9}
    41 	
    42 	PrintToServer("Testing ascending sort:")
    43 	SortIntegers(array, 10, Sort_Ascending)
    44 	PrintIntegers(array, 10)
    45 	
    46 	PrintToServer("Testing descending sort:")
    47 	SortIntegers(array, 10, Sort_Descending)
    48 	PrintIntegers(array, 10)
    49 	
    50 	PrintToServer("Testing random sort:")
    51 	SortIntegers(array, 10, Sort_Random)
    52 	PrintIntegers(array, 10)
    53 	
    54 	return Plugin_Handled
    55 }
    56 
    57 /**************************
    58  * Float comparison tests *
    59  **************************/
    60 
    61 PrintFloats(const Float:array[], size)
    62 {
    63 	for (new i=0; i<size; i++)
    64 	{
    65 		PrintToServer("array[%d] = %f", i, array[i])
    66 	}
    67 }
    68 
    69 public Action:Command_TestSortFloats(args)
    70 {
    71 	new Float:array[10] = {6.3, 7.6, 3.2, 2.1, 8.5, 5.2, 0.4, 1.7, 4.8, 8.2}
    72 	
    73 	PrintToServer("Testing ascending sort:")
    74 	SortFloats(array, 10, Sort_Ascending)
    75 	PrintFloats(array, 10)
    76 	
    77 	PrintToServer("Testing descending sort:")
    78 	SortFloats(array, 10, Sort_Descending)
    79 	PrintFloats(array, 10)
    80 	
    81 	PrintToServer("Testing random sort:")
    82 	SortFloats(array, 10, Sort_Random)
    83 	PrintFloats(array, 10)
    84 	
    85 	return Plugin_Handled
    86 }
    87 
    88 public Custom1DSort(elem1, elem2, const array[], Handle:hndl)
    89 {
    90 	new Float:f1 = Float:elem1
    91 	new Float:f2 = Float:elem2
    92 	if (f1 > f2)
    93 	{
    94 		return -1;
    95 	} else if (f1 < f2) {
    96 		return 1;
    97 	}
    98 	
    99 	return 0;
   100 }
   101 
   102 public Action:Command_TestSort1D(args)
   103 {
   104 	new Float:array[10] = {6.3, 7.6, 3.2, 2.1, 8.5, 5.2, 0.4, 1.7, 4.8, 8.2}
   105 	
   106 	SortCustom1D(_:array, 10, Custom1DSort)
   107 	PrintFloats(array, 10)
   108 	
   109 	return Plugin_Handled
   110 }
   111 
   112 /***************************
   113  * String comparison tests *
   114  ***************************/
   115 
   116 PrintStrings(const String:array[][], size)
   117 {
   118 	for (new i=0; i<size; i++)
   119 	{
   120 		PrintToServer("array[%d] = %s", i, array[i])
   121 	}
   122 }
   123 
   124 public Action:Command_TestSortStrings(args)
   125 {
   126 	new String:strarray[][] = 
   127 		{
   128 			"faluco",
   129 			"bailopan",
   130 			"pm onoto",
   131 			"damaged soul",
   132 			"sniperbeamer",
   133 			"sidluke",
   134 			"johnny got his gun",
   135 			"gabe newell",
   136 			"pRED*'s awesome",
   137 			"WHAT?!"
   138 		}
   139 		
   140 	PrintToServer("Testing ascending sort:")
   141 	SortStrings(strarray, 10, Sort_Ascending)
   142 	PrintStrings(strarray, 10)
   143 	
   144 	PrintToServer("Testing descending sort:")
   145 	SortStrings(strarray, 10, Sort_Descending)
   146 	PrintStrings(strarray, 10)
   147 	
   148 	PrintToServer("Testing random sort:")
   149 	SortStrings(strarray, 10, Sort_Random)
   150 	PrintStrings(strarray, 10)
   151 	
   152 	return Plugin_Handled
   153 }
   154 
   155 public Custom2DSort(String:elem1[], String:elem2[], String:array[][], Handle:hndl)
   156 {
   157 	return strcmp(elem1, elem2)
   158 }
   159 
   160 public Action:Command_TestSort2D(args)
   161 {
   162 	new String:array[][] = 
   163 		{
   164 			"faluco",
   165 			"bailopan",
   166 			"pm onoto",
   167 			"damaged soul",
   168 			"sniperbeamer",
   169 			"sidluke",
   170 			"johnny got his gun",
   171 			"gabe newell",
   172 			"pred is a crab",
   173 			"WHAT?!"
   174 		}
   175 	
   176 	SortCustom2D(_:array, 10, Custom2DSort)
   177 	PrintStrings(array, 10)
   178 	
   179 	return Plugin_Handled
   180 }
   181 
   182 /*******************
   183  * ADT ARRAY TESTS *
   184  *******************/
   185 // Int and floats work the same as normal comparisions. Strings are direct
   186 // comparisions with no hacky memory stuff like Pawn arrays.
   187 
   188 PrintADTArrayIntegers(Handle:array)
   189 {
   190 	new size = GetArraySize(array);
   191 	for (new i=0; i<size;i++)
   192 	{
   193 		PrintToServer("array[%d] = %d", i, GetArrayCell(array, i));	
   194 	}
   195 }
   196 
   197 public Action:Command_TestSortADTInts(args)
   198 {
   199 	new Handle:array = CreateArray();
   200 	PushArrayCell(array, 6);
   201 	PushArrayCell(array, 7);
   202 	PushArrayCell(array, 3);
   203 	PushArrayCell(array, 2);
   204 	PushArrayCell(array, 8);
   205 	PushArrayCell(array, 5);
   206 	PushArrayCell(array, 0);
   207 	PushArrayCell(array, 1);
   208 	PushArrayCell(array, 4);
   209 	PushArrayCell(array, 9);
   210 	
   211 	PrintToServer("Testing ascending sort:")
   212 	SortADTArray(array, Sort_Ascending, Sort_Integer)
   213 	PrintADTArrayIntegers(array)
   214 	
   215 	PrintToServer("Testing descending sort:")
   216 	SortADTArray(array, Sort_Descending, Sort_Integer)
   217 	PrintADTArrayIntegers(array)
   218 	
   219 	PrintToServer("Testing random sort:")
   220 	SortADTArray(array, Sort_Random, Sort_Integer)
   221 	PrintADTArrayIntegers(array)
   222 	
   223 	return Plugin_Handled
   224 
   225 }
   226 
   227 PrintADTArrayFloats(Handle:array)
   228 {
   229 	new size = GetArraySize(array);
   230 	for (new i=0; i<size;i++)
   231 	{
   232 		PrintToServer("array[%d] = %f", i, float:GetArrayCell(array, i));	
   233 	}
   234 }
   235 
   236 public Action:Command_TestSortADTFloats(args)
   237 {
   238 	new Handle:array = CreateArray();
   239 	PushArrayCell(array, 6.0);
   240 	PushArrayCell(array, 7.0);
   241 	PushArrayCell(array, 3.0);
   242 	PushArrayCell(array, 2.0);
   243 	PushArrayCell(array, 8.0);
   244 	PushArrayCell(array, 5.0);
   245 	PushArrayCell(array, 0.0);
   246 	PushArrayCell(array, 1.0);
   247 	PushArrayCell(array, 4.0);
   248 	PushArrayCell(array, 9.0);
   249 	
   250 	PrintToServer("Testing ascending sort:")
   251 	SortADTArray(array, Sort_Ascending, Sort_Float)
   252 	PrintADTArrayFloats(array)
   253 	
   254 	PrintToServer("Testing descending sort:")
   255 	SortADTArray(array, Sort_Descending, Sort_Float)
   256 	PrintADTArrayFloats(array)
   257 	
   258 	PrintToServer("Testing random sort:")
   259 	SortADTArray(array, Sort_Random, Sort_Float)
   260 	PrintADTArrayFloats(array)
   261 	
   262 	return Plugin_Handled
   263 }
   264 
   265 PrintADTArrayStrings(Handle:array)
   266 {
   267 	new size = GetArraySize(array);
   268 	decl String:buffer[64];
   269 	for (new i=0; i<size;i++)
   270 	{
   271 		GetArrayString(array, i, buffer, sizeof(buffer));
   272 		PrintToServer("array[%d] = %s", i, buffer);	
   273 	}
   274 }
   275 
   276 public Action:Command_TestSortADTStrings(args)
   277 {
   278 	new Handle:array = CreateArray(ByteCountToCells(64));
   279 	PushArrayString(array, "faluco");
   280 	PushArrayString(array, "bailopan");
   281 	PushArrayString(array, "pm onoto");
   282 	PushArrayString(array, "damaged soul");
   283 	PushArrayString(array, "sniperbeamer");
   284 	PushArrayString(array, "sidluke");
   285 	PushArrayString(array, "johnny got his gun");
   286 	PushArrayString(array, "gabe newell");
   287 	PushArrayString(array, "Hello pRED*");
   288 	PushArrayString(array, "WHAT?!");
   289 	
   290 	PrintToServer("Testing ascending sort:")
   291 	SortADTArray(array, Sort_Ascending, Sort_String)
   292 	PrintADTArrayStrings(array)
   293 	
   294 	PrintToServer("Testing descending sort:")
   295 	SortADTArray(array, Sort_Descending, Sort_String)
   296 	PrintADTArrayStrings(array)
   297 	
   298 	PrintToServer("Testing random sort:")
   299 	SortADTArray(array, Sort_Random, Sort_String)
   300 	PrintADTArrayStrings(array)
   301 	
   302 	return Plugin_Handled
   303 }
   304 
   305 public ArrayADTCustomCallback(index1, index2, Handle:array, Handle:hndl)
   306 {
   307 	decl String:buffer1[64], String:buffer2[64];
   308 	GetArrayString(array, index1, buffer1, sizeof(buffer1));
   309 	GetArrayString(array, index2, buffer2, sizeof(buffer2));
   310 	
   311 	return strcmp(buffer1, buffer2);
   312 }
   313 
   314 public Action:Command_TestSortADTCustom(args)
   315 {
   316 	new Handle:array = CreateArray(ByteCountToCells(64));
   317 	PushArrayString(array, "faluco");
   318 	PushArrayString(array, "bailopan");
   319 	PushArrayString(array, "pm onoto");
   320 	PushArrayString(array, "damaged soul");
   321 	PushArrayString(array, "sniperbeamer");
   322 	PushArrayString(array, "sidluke");
   323 	PushArrayString(array, "johnny got his gun");
   324 	PushArrayString(array, "gabe newell");
   325 	PushArrayString(array, "pRED*'s running out of ideas");
   326 	PushArrayString(array, "WHAT?!");
   327 	
   328 	PrintToServer("Testing custom sort:")
   329 	SortADTArrayCustom(array, ArrayADTCustomCallback)
   330 	PrintADTArrayStrings(array);
   331 }