Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit beb4fe95 authored by Jack Palevich's avatar Jack Palevich
Browse files

Test multiple levels of pointer indirection.

parent 29daf577
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
// Test multiple levels of indirection

void testsingle() {
    int a = 0;
    int* pa = &a;
    printf("a = %d, *pa = %d\n", a, *pa);
    *pa = 2;
    printf("a = %d, *pa = %d\n", a, *pa);
}

void testdouble() {
    int a = 0;
    int* pa = &a;
    int** ppa = &pa;
    printf("a = %d, *pa = %d **ppa = %d\n", a, *pa, **ppa);
    **ppa = 2;
    printf("a = %d, *pa = %d **ppa = %d\n", a, *pa, **ppa);
}

void testtripple() {
    int a = 0;
    int* pa = &a;
    int** ppa = &pa;
    int*** pppa = &ppa;
    printf("a = %d, *pa = %d **ppa = %d\n ***pppa = %d", a, *pa, **ppa, ***pppa);
    ***pppa = 2;
    printf("a = %d, *pa = %d **ppa = %d\n ***pppa = %d", a, *pa, **ppa, ***pppa);
}

int main() {
    testsingle();
    testdouble();
    testdouble();
    return 0;
}
+12 −1
Original line number Diff line number Diff line
@@ -329,6 +329,17 @@ result: 0""", """Literals: 1 -1
result: 0""", """testing...
Total bad: 0
""")

    def testpointers2(self):
        self.compileCheck(["-R", "data/pointers2.c"], """Executing compiled code:
result: 0""", """a = 0, *pa = 0
a = 2, *pa = 2
a = 0, *pa = 0 **ppa = 0
a = 2, *pa = 2 **ppa = 2
a = 0, *pa = 0 **ppa = 0
a = 2, *pa = 2 **ppa = 2
""")

if __name__ == '__main__':
    if not outputCanRun():
        print "Many tests are expected to fail, because acc is not a 32-bit x86 Linux executable."