Mirror for Friday Night Funkin
at main 189 lines 4.5 kB view raw
1package funkin.util.tools; 2 3import massive.munit.util.Timer; 4import massive.munit.Assert; 5import massive.munit.async.AsyncFactory; 6import funkin.util.tools.ArrayTools; 7 8@:nullSafety 9@:access(funkin.util.tools.ArrayTools) 10class ArraySortToolsTest extends FunkinTest 11{ 12 public function new() 13 { 14 super(); 15 } 16 17 @BeforeClass 18 public function beforeClass() {} 19 20 @AfterClass 21 public function afterClass() {} 22 23 @Before 24 public function setup() {} 25 26 @After 27 public function tearDown() {} 28 29 @Test 30 public function testMergeSort() 31 { 32 var testArray:Array<Int> = [5, 4, 3, 2, 1]; 33 34 function compare(a:Int, b:Int) 35 { 36 return a - b; 37 } 38 39 ArraySortTools.mergeSort(testArray, compare); 40 41 Assert.areEqual(testArray[0], 1); 42 Assert.areEqual(testArray[1], 2); 43 Assert.areEqual(testArray[2], 3); 44 Assert.areEqual(testArray[3], 4); 45 Assert.areEqual(testArray[4], 5); 46 47 var testArray2:Array<Int> = [9, 6, 3, 12]; 48 49 ArraySortTools.mergeSort(testArray2, compare); 50 51 Assert.areEqual(testArray2[0], 3); 52 Assert.areEqual(testArray2[1], 6); 53 Assert.areEqual(testArray2[2], 9); 54 Assert.areEqual(testArray2[3], 12); 55 56 // Just make sure these don't crash. 57 ArraySortTools.mergeSort([], compare); 58 } 59 60 @Test 61 @:nullSafety(Off) 62 public function testMergeSortNull() 63 { 64 var testArray:Array<Int> = [5, 4, 3, 2, 1]; 65 66 function compare(a:Int, b:Int) 67 { 68 return a - b; 69 } 70 71 // Just make sure these don't crash. 72 ArraySortTools.mergeSort(null, compare); 73 ArraySortTools.mergeSort([], null); 74 ArraySortTools.mergeSort(null, null); 75 76 // Make sure these throw an exception. 77 FunkinAssert.validateThrows(function() { 78 ArraySortTools.mergeSort(testArray, null); 79 }, function(err) { 80 return err == 'No comparison function provided.'; 81 }); 82 } 83 84 @Test 85 public function testQuickSort() 86 { 87 var testArray:Array<Int> = [5, 4, 3, 2, 1]; 88 89 function compare(a:Int, b:Int) 90 { 91 return a - b; 92 } 93 94 ArraySortTools.quickSort(testArray, compare); 95 96 Assert.areEqual(testArray[0], 1); 97 Assert.areEqual(testArray[1], 2); 98 Assert.areEqual(testArray[2], 3); 99 Assert.areEqual(testArray[3], 4); 100 Assert.areEqual(testArray[4], 5); 101 102 var testArray2:Array<Int> = [9, 6, 3, 12]; 103 104 ArraySortTools.quickSort(testArray2, compare); 105 106 Assert.areEqual(testArray2[0], 3); 107 Assert.areEqual(testArray2[1], 6); 108 Assert.areEqual(testArray2[2], 9); 109 Assert.areEqual(testArray2[3], 12); 110 } 111 112 @Test 113 @:nullSafety(Off) 114 public function testQuickSortNull() 115 { 116 var testArray:Array<Int> = [5, 4, 3, 2, 1]; 117 118 function compare(a:Int, b:Int) 119 { 120 return a - b; 121 } 122 123 // Just make sure these don't crash. 124 ArraySortTools.quickSort([], compare); 125 ArraySortTools.quickSort(null, compare); 126 ArraySortTools.quickSort([], null); 127 ArraySortTools.quickSort(null, null); 128 129 // Make sure these throw an exception. 130 FunkinAssert.validateThrows(function() { 131 ArraySortTools.quickSort(testArray, null); 132 }, function(err) { 133 return err == 'No comparison function provided.'; 134 }); 135 } 136 137 @Test 138 public function testInsertionSort() 139 { 140 var testArray:Array<Int> = [5, 4, 3, 2, 1]; 141 142 function compare(a:Int, b:Int) 143 { 144 return a - b; 145 } 146 147 ArraySortTools.insertionSort(testArray, compare); 148 149 Assert.areEqual(testArray[0], 1); 150 Assert.areEqual(testArray[1], 2); 151 Assert.areEqual(testArray[2], 3); 152 Assert.areEqual(testArray[3], 4); 153 Assert.areEqual(testArray[4], 5); 154 155 var testArray2:Array<Int> = [9, 6, 3, 12]; 156 157 ArraySortTools.insertionSort(testArray2, compare); 158 159 Assert.areEqual(testArray2[0], 3); 160 Assert.areEqual(testArray2[1], 6); 161 Assert.areEqual(testArray2[2], 9); 162 Assert.areEqual(testArray2[3], 12); 163 } 164 165 @Test 166 @:nullSafety(Off) 167 public function testInsertionSortNull() 168 { 169 var testArray:Array<Int> = [5, 4, 3, 2, 1]; 170 171 function compare(a:Int, b:Int) 172 { 173 return a - b; 174 } 175 176 // Just make sure these don't crash. 177 ArraySortTools.insertionSort([], compare); 178 ArraySortTools.insertionSort(null, compare); 179 ArraySortTools.insertionSort([], null); 180 ArraySortTools.insertionSort(null, null); 181 182 // Make sure these throw an exception. 183 FunkinAssert.validateThrows(function() { 184 ArraySortTools.insertionSort(testArray, null); 185 }, function(err) { 186 return err == 'No comparison function provided.'; 187 }); 188 } 189}