Skip to content

Commit ada3c98

Browse files
committed
Add regression tests for nondet struct init
1 parent 97259cc commit ada3c98

File tree

11 files changed

+185
-0
lines changed

11 files changed

+185
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include <assert.h>
2+
#include <stdlib.h>
3+
4+
typedef struct st1
5+
{
6+
struct st2 *to_st2;
7+
int data;
8+
} st1_t;
9+
10+
typedef struct st2
11+
{
12+
struct st1 *to_st1;
13+
int data;
14+
} st2_t;
15+
16+
st1_t dummy1;
17+
st2_t dummy2;
18+
19+
void func(st1_t *p)
20+
{
21+
assert(p != NULL);
22+
assert(p->to_st2 != NULL);
23+
assert(p->to_st2->to_st1 != NULL);
24+
assert(p->to_st2->to_st1->to_st2 == NULL);
25+
26+
assert(p != &dummy1);
27+
assert(p->to_st2 != &dummy2);
28+
assert(p->to_st2->to_st1 != &dummy1);
29+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
main.c
3+
--function func --min-null-tree-depth 10 --max-nondet-tree-depth 3 --pointer-check
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
VERIFICATION SUCCESSFUL
7+
--
8+
^warning: ignoring
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include <assert.h>
2+
#include <stdlib.h>
3+
4+
typedef struct st
5+
{
6+
int data;
7+
} st_t;
8+
9+
st_t dummy;
10+
11+
void func(st_t *p)
12+
{
13+
assert(p != NULL);
14+
assert(p != &dummy);
15+
assert(p->data >= 4854549);
16+
assert(p->data < 4854549);
17+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CORE
2+
main.c
3+
--function func --min-null-tree-depth 10
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
\[func.assertion.1\] line [0-9]+ assertion p != .*((NULL)|0).*: SUCCESS
7+
\[func.assertion.2\] line [0-9]+ assertion p != &dummy: SUCCESS
8+
\[func.assertion.3\] line [0-9]+ assertion p->data >= 4854549: FAILURE
9+
\[func.assertion.4\] line [0-9]+ assertion p->data < 4854549: FAILURE
10+
--
11+
^warning: ignoring
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <assert.h>
2+
#include <stdlib.h>
3+
4+
typedef struct st
5+
{
6+
struct st *next;
7+
struct st *prev;
8+
int data;
9+
} st_t;
10+
11+
st_t dummy;
12+
13+
void func(st_t *p)
14+
{
15+
assert(p != NULL);
16+
assert(p != &dummy);
17+
18+
assert(p->prev != NULL);
19+
assert(p->prev != &dummy);
20+
21+
assert(p->next != NULL);
22+
assert(p->next != &dummy);
23+
24+
assert(p->prev->prev == NULL);
25+
assert(p->prev->next == NULL);
26+
assert(p->next->prev == NULL);
27+
assert(p->next->next == NULL);
28+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
main.c
3+
--function func --min-null-tree-depth 10 --max-nondet-tree-depth 2 --pointer-check
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
VERIFICATION SUCCESSFUL
7+
--
8+
^warning: ignoring
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <assert.h>
2+
#include <stdlib.h>
3+
4+
typedef struct st
5+
{
6+
struct st *next;
7+
int data;
8+
} st_t;
9+
10+
st_t dummy;
11+
12+
void func(st_t *p)
13+
{
14+
if(p != NULL)
15+
{
16+
if(p->next != NULL)
17+
{
18+
if(p->next->next != NULL)
19+
{
20+
// covered
21+
}
22+
else
23+
{
24+
// covered
25+
}
26+
}
27+
else
28+
{
29+
// not covered
30+
}
31+
}
32+
else
33+
{
34+
// not covered
35+
}
36+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
main.c
3+
--function func --min-null-tree-depth 2 --max-nondet-tree-depth 10 --cover branch
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
\[func.coverage.2\] file main.c line .* function func block 1 branch false: SATISFIED
7+
\[func.coverage.3\] file main.c line .* function func block 1 branch true: FAILED
8+
\[func.coverage.4\] file main.c line .* function func block 2 branch false: SATISFIED
9+
\[func.coverage.5\] file main.c line .* function func block 2 branch true: FAILED
10+
\[func.coverage.6\] file main.c line .* function func block 3 branch false: SATISFIED
11+
\[func.coverage.7\] file main.c line .* function func block 3 branch true: SATISFIED
12+
--
13+
^warning: ignoring
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#include <assert.h>
2+
#include <stdlib.h>
3+
4+
typedef struct st
5+
{
6+
struct st *next;
7+
int data;
8+
} st_t;
9+
10+
st_t dummy;
11+
12+
void func(st_t *p)
13+
{
14+
assert(p != NULL);
15+
assert(p->next != NULL);
16+
assert(p->next->next != NULL);
17+
assert(p->next->next->next == NULL);
18+
19+
assert(p != &dummy);
20+
assert(p->next != &dummy);
21+
assert(p->next->next != &dummy);
22+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
main.c
3+
--function func --min-null-tree-depth 10 --max-nondet-tree-depth 3 --pointer-check
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
VERIFICATION SUCCESSFUL
7+
--
8+
^warning: ignoring

scripts/delete_failing_smt2_solver_tests

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ rm no_nondet_static/test.desc
156156
rm null1/test.desc
157157
rm pointer-function-parameters/test.desc
158158
rm pointer-function-parameters-2/test.desc
159+
rm pointer-function-parameters-struct-mutual-recursion/test.desc
160+
rm pointer-function-parameters-struct-non-recursive/test.desc
161+
rm pointer-function-parameters-struct-simple-recursion/test.desc
162+
rm pointer-function-parameters-struct-simple-recursion-2/test.desc
163+
rm pointer-function-parameters-struct-simple-recursion-3/test.desc
159164
rm scanf1/test.desc
160165
rm simple_assert/test.desc
161166
rm stack-trace/test.desc

0 commit comments

Comments
 (0)