177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid testBrackets(int* ar, int len) {
277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int i;
377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int errors = 0;
477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    for (i = 0; i < len; i++) {
577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        ar[i] = i;
677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    }
777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    for (i = 0; i < len; i++) {
877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        if (ar[i] != i) {
977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao            printf("error: [%d] %d != %d\n", i, ar[i], i);
1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao            errors++;
1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        }
1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    }
1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    printf("Errors: %d\n", errors);
1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao}
1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid testBrackets2D(int** ar2D, int lenX, int lenY) {
1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int x, y;
1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int errors = 0;
1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    for (x = 0; x < lenX; x++) {
2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        for (y = 0; y < lenY; y++) {
2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao            ar2D[x][y] = x * lenY + y;
2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        }
2377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    }
2477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    for (x = 0; x < lenX; x++) {
2577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        for (y = 0; y < lenY; y++) {
2677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao            int expected = x * lenY + y;
2777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao            int val = ar2D[x][y];
2877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao            if (val != expected) {
2977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao                printf("error: [%d][%d] %d != %d\n", x, y, val, expected);
3077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao                errors++;
3177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao            }
3277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        }
3377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    }
3477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    printf("2D Errors: %d\n", errors);
3577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao}
3677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
3777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid testHeap() {
3877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int* ar = (int*) malloc(100);
3977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    testBrackets(ar, 25);
4077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    free(ar);
4177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao}
4277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
4377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaovoid testHeap2D() {
4477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int lenX = 10;
4577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int lenY = 5;
4677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int* ar = (int*) malloc(lenX * lenY * 4);
4777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int** ar2D = (int**) malloc(lenX * 4);
4877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    int i;
4977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    for(i = 0; i < lenX; i++) {
5077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        ar2D[i] = ar + lenY * i;
5177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    }
5277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    testBrackets2D(ar2D, lenX, lenY);
5377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    free(ar);
5477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    free(ar2D);
5577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao}
5677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
5777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint main() {
5877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    testHeap();
5977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    testHeap2D();
6077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    return 0;
6177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao}
62