Skip to content

Commit 5453ba7

Browse files
committed
More tests for static and dynamic arrays
Floating point numbers cannot be extracted for now.
1 parent 8ee355a commit 5453ba7

File tree

8 files changed

+194
-0
lines changed

8 files changed

+194
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <assert.h>
2+
3+
int array[] = {1, 2, 3};
4+
int *p;
5+
int *q;
6+
7+
void initialize()
8+
{
9+
p = &(array[1]);
10+
q = array + 1;
11+
array[0] = 4;
12+
}
13+
14+
void checkpoint()
15+
{
16+
}
17+
18+
int main()
19+
{
20+
initialize();
21+
checkpoint();
22+
23+
assert(p == q);
24+
assert(*p == *q);
25+
*p = 4;
26+
q = q - 1;
27+
assert(*q == *p);
28+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CORE
2+
main.c
3+
p,q --harness-type initialise-with-memory-snapshot --initial-goto-location main:4
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
\[main.assertion.1\] line [0-9]+ assertion p == q: SUCCESS
7+
\[main.assertion.2\] line [0-9]+ assertion \*p == \*q: SUCCESS
8+
\[main.assertion.3\] line [0-9]+ assertion \*q == \*p: SUCCESS
9+
VERIFICATION SUCCESSFUL
10+
--
11+
^warning: ignoring
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include <assert.h>
2+
#include <malloc.h>
3+
4+
int *array;
5+
int *iterator1;
6+
int *iterator2;
7+
int *iterator3;
8+
9+
void initialize()
10+
{
11+
array = (int *)malloc(sizeof(int) * 10);
12+
array[0] = 1;
13+
array[1] = 2;
14+
array[2] = 3;
15+
array[3] = 4;
16+
array[4] = 5;
17+
array[5] = 6;
18+
array[6] = 7;
19+
array[7] = 8;
20+
array[8] = 9;
21+
array[9] = 10;
22+
iterator1 = (int *)array;
23+
iterator2 = &array[1];
24+
iterator3 = array + 1;
25+
}
26+
27+
void checkpoint()
28+
{
29+
}
30+
31+
int main()
32+
{
33+
initialize();
34+
checkpoint();
35+
36+
assert(*iterator1 == 1);
37+
assert(iterator1 != iterator2);
38+
assert(iterator2 == iterator3);
39+
assert(iterator2 == &array[1]);
40+
assert(*iterator3 == array[1]);
41+
assert(*iterator3 == 2);
42+
iterator3 = &array[9];
43+
iterator3++;
44+
assert(*iterator3 == 0);
45+
46+
return 0;
47+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
CORE
2+
main.c
3+
array,iterator1,iterator2,iterator3 --harness-type initialise-with-memory-snapshot --initial-goto-location main:4
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
\[main.assertion.1\] line [0-9]+ assertion \*iterator1 == 1: SUCCESS
7+
\[main.assertion.2\] line [0-9]+ assertion iterator1 != iterator2: SUCCESS
8+
\[main.assertion.3\] line [0-9]+ assertion iterator2 == iterator3: SUCCESS
9+
\[main.assertion.4\] line [0-9]+ assertion iterator2 == \&array\[1\]: SUCCESS
10+
\[main.assertion.5\] line [0-9]+ assertion \*iterator3 == array\[1\]: SUCCESS
11+
\[main.assertion.6\] line [0-9]+ assertion \*iterator3 == 2: SUCCESS
12+
\[main.pointer_dereference.27\] line [0-9]+ dereference failure: pointer outside object bounds in \*iterator3: FAILURE
13+
\[main.assertion.7\] line [0-9]+ assertion \*iterator3 == 0: FAILURE
14+
VERIFICATION FAILED
15+
--
16+
unwinding assertion loop \d+: FAILURE
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include <assert.h>
2+
3+
float array[10];
4+
float *iterator1;
5+
float *iterator2;
6+
7+
void initialize()
8+
{
9+
array[0] = 1.11;
10+
array[8] = 9.999;
11+
array[9] = 10.0;
12+
iterator1 = (float *)array;
13+
iterator2 = &array[9];
14+
}
15+
16+
void checkpoint()
17+
{
18+
}
19+
20+
int main()
21+
{
22+
initialize();
23+
checkpoint();
24+
25+
assert(*iterator1 >= 1.10 && *iterator1 <= 1.12);
26+
assert(iterator1 != iterator2);
27+
assert(iterator2 == &array[9]);
28+
iterator2++;
29+
assert(*iterator2 == 0.0);
30+
31+
return 0;
32+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
FUTURE
2+
main.c
3+
array,iterator1,iterator2 --harness-type initialise-with-memory-snapshot --initial-goto-location main:4
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
\[main.assertion.1\] line [0-9]+ assertion \*iterator1 \>= 1.10 \&\& \*iterator1 \<= 1.12: SUCCESS
7+
\[main.assertion.2\] line [0-9]+ assertion iterator1 != iterator2: SUCCESS
8+
\[main.assertion.3\] line [0-9]+ assertion iterator2 == \&array\[9\]: SUCCESS
9+
\[main.pointer_dereference.13\] line [0-9]+ dereference failure: pointer outside object bounds in \*iterator2: FAILURE
10+
\[main.assertion.4\] line [0-9]+ assertion \*iterator2 == 0: FAILURE
11+
VERIFICATION FAILED
12+
--
13+
unwinding assertion loop \d+: FAILURE
14+
--
15+
memory analyzer does not yet allow extract floating point values
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include <assert.h>
2+
3+
int array[10];
4+
int *iterator1;
5+
int *iterator2;
6+
7+
void initialize()
8+
{
9+
array[0] = 1;
10+
array[8] = 9;
11+
array[9] = 10;
12+
iterator1 = (int *)array;
13+
iterator2 = &array[9];
14+
}
15+
16+
void checkpoint()
17+
{
18+
}
19+
20+
int main()
21+
{
22+
initialize();
23+
checkpoint();
24+
25+
assert(*iterator1 == 1);
26+
assert(iterator1 != iterator2);
27+
assert(iterator2 == &array[9]);
28+
iterator2++;
29+
assert(*iterator2 == 0);
30+
31+
return 0;
32+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
main.c
3+
array,iterator1,iterator2 --harness-type initialise-with-memory-snapshot --initial-goto-location main:4
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
\[main.assertion.1\] line [0-9]+ assertion \*iterator1 == 1: SUCCESS
7+
\[main.assertion.2\] line [0-9]+ assertion iterator1 != iterator2: SUCCESS
8+
\[main.assertion.3\] line [0-9]+ assertion iterator2 == \&array\[9\]: SUCCESS
9+
\[main.pointer_dereference.13\] line [0-9]+ dereference failure: pointer outside object bounds in \*iterator2: FAILURE
10+
\[main.assertion.4\] line [0-9]+ assertion \*iterator2 == 0: FAILURE
11+
VERIFICATION FAILED
12+
--
13+
unwinding assertion loop \d+: FAILURE

0 commit comments

Comments
 (0)