Skip to content

Commit a99053f

Browse files
A quicksort test case
1 parent 2ed09da commit a99053f

File tree

2 files changed

+126
-0
lines changed

2 files changed

+126
-0
lines changed

optvm/src/test/java/com/compilerprogramming/ezlang/interpreter/TestInterpreter.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,4 +794,67 @@ func main()->Int
794794
Assert.assertTrue(value instanceof Value.IntegerValue integerValue &&
795795
integerValue.value == 1);
796796
}
797+
798+
@Test
799+
public void testFunction110() {
800+
String src = """
801+
func swap(arr: [Int], i: Int, j: Int) {
802+
var tmp = arr[i];
803+
arr[i] = arr[j];
804+
arr[j] = tmp;
805+
}
806+
807+
func partition(arr: [Int], low: Int, high: Int)->Int {
808+
var pivot = arr[high];
809+
var i = low;
810+
var j = low;
811+
while (j < high) {
812+
if (arr[j] < pivot) {
813+
swap(arr, i, j);
814+
i = i + 1;
815+
}
816+
j = j + 1;
817+
}
818+
swap(arr, i, high);
819+
return i;
820+
}
821+
822+
func quicksort(arr: [Int], low: Int, high: Int) {
823+
if (low < high) {
824+
var p = partition(arr, low, high);
825+
quicksort(arr, low, p - 1);
826+
quicksort(arr, p + 1, high);
827+
}
828+
}
829+
830+
func eq(a: [Int], b: [Int], n: Int)->Int
831+
{
832+
var result = 1
833+
var i = 0
834+
while (i < n)
835+
{
836+
if (a[i] != b[i])
837+
{
838+
result = 0
839+
break
840+
}
841+
i = i + 1
842+
}
843+
return result
844+
}
845+
846+
func main()->Int
847+
{
848+
var nums = new [Int]{33, 10, 55, 71, 29, 3};
849+
var expected = new [Int]{3,10,29,33,55,71}
850+
quicksort(nums, 0, 5);
851+
return eq(nums,expected,6)
852+
}
853+
""";
854+
var value = compileAndRun(src, "main");
855+
Assert.assertNotNull(value);
856+
Assert.assertTrue(value instanceof Value.IntegerValue integerValue &&
857+
integerValue.value == 1);
858+
}
859+
797860
}

registervm/src/test/java/com/compilerprogramming/ezlang/interpreter/TestInterpreter.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,4 +434,67 @@ func main()->Int
434434
Assert.assertTrue(value instanceof Value.IntegerValue integerValue &&
435435
integerValue.value == 1);
436436
}
437+
438+
@Test
439+
public void testFunction110() {
440+
String src = """
441+
func swap(arr: [Int], i: Int, j: Int) {
442+
var tmp = arr[i];
443+
arr[i] = arr[j];
444+
arr[j] = tmp;
445+
}
446+
447+
func partition(arr: [Int], low: Int, high: Int)->Int {
448+
var pivot = arr[high];
449+
var i = low;
450+
var j = low;
451+
while (j < high) {
452+
if (arr[j] < pivot) {
453+
swap(arr, i, j);
454+
i = i + 1;
455+
}
456+
j = j + 1;
457+
}
458+
swap(arr, i, high);
459+
return i;
460+
}
461+
462+
func quicksort(arr: [Int], low: Int, high: Int) {
463+
if (low < high) {
464+
var p = partition(arr, low, high);
465+
quicksort(arr, low, p - 1);
466+
quicksort(arr, p + 1, high);
467+
}
468+
}
469+
470+
func eq(a: [Int], b: [Int], n: Int)->Int
471+
{
472+
var result = 1
473+
var i = 0
474+
while (i < n)
475+
{
476+
if (a[i] != b[i])
477+
{
478+
result = 0
479+
break
480+
}
481+
i = i + 1
482+
}
483+
return result
484+
}
485+
486+
func main()->Int
487+
{
488+
var nums = new [Int]{33, 10, 55, 71, 29, 3};
489+
var expected = new [Int]{3,10,29,33,55,71}
490+
quicksort(nums, 0, 5);
491+
return eq(nums,expected,6)
492+
}
493+
""";
494+
var value = compileAndRun(src, "main");
495+
Assert.assertNotNull(value);
496+
Assert.assertTrue(value instanceof Value.IntegerValue integerValue &&
497+
integerValue.value == 1);
498+
}
499+
437500
}

0 commit comments

Comments
 (0)