# System Testing Workspace (Part 1)
[](https://hackmd.io/GCrfsq1BQ7mzzDCoLLLwMg)
This file exists to coordinate the systems testing discussion. General workflow will be that we will have a set of SIMPLE programs and one or more sets of PQL queries for that.
Once front and backend teams give a green light, we shall add that set of text files for systems testing w autotester.
-------
### Source-Query pair 1
### test_source_1.txt
```javascript
procedure
p
{
x = z * 3 + 2 * y;
print
me;
i = i - 1;
x = x + 1;
z = x + z;
z = 1;
read
me;
z = z + x + i;
z = z - z + 2 * z % z;
}
```
```javascript=
procedure p {
x = z * 3 + 2 * y; // 1
print me; // 2
i = i - 1; // 3
x = x + 1; // 4
z = x + z; // 5
z = 1; // 6
read me; //7
z = z + x + i; //8
z = z - z + 2 * z % z; // 9
}
```
### test_queries_1.txt
```javascript
1 - Simple statement
stmt s;
Select s
1, 2, 3, 4, 5, 6, 7, 8, 9
5000
2 - Simple assign
assign a;
Select a
1, 3, 4, 5, 6, 8, 9
5000
3 - Simple print
print p;
Select p
2
5000
4 - Simple read
read r;
Select r
7
5000
5 - Simple variable
variable v;
Select v
x, y, z, i, me
5000
6 - Multiple declarations (same line)
assign a1, a2;
Select a1
1, 3, 4, 5, 6, 8, 9
5000
7 - Single follows clause
assign a; print p;
Select a such that Follows(a, p)
1
5000
8 - Single follows clause
assign a1, a2;
Select a1 such that Follows(a1, a2)
3, 4, 5, 8
5000
9 - Follows with one wildcard (first)
assign a1, a2;
Select a2 such that Follows(_, a2)
3, 4, 5, 6, 8, 9
5000
10 - Follows with two wildcard (both)
assign a1, a2;
Select a1 such that Follows(_, _)
1, 3, 4, 5, 6, 8, 9
5000
11 - Follows with one wildcard (second) with target in group
assign a1, a2;
Select a1 such that Follows(a1, _)
1, 3, 4, 5, 6, 8
5000
12 - Follows with one wildcard (second) with target not in group
assign a1, a2;
Select a1 such that Follows(a2, _)
1, 3, 4, 5, 6, 8, 9
5000
13 - Parent with 2 wildcard but Simple program has no such relationship
assign a1, a2;
Select a1 such that Parent(_, _)
none
5000
14 - Pattern query with both wildcard
assign a1, a2;
Select a1 pattern a1 (_, _)
1, 3, 4, 5, 6, 8, 9
5000
15 - Pattern query with 1 wildcard
assign a1;
Select a1 pattern a1 (_, _"x"_)
4, 5, 8
5000
16 - Pattern query with variable and exists
assign a1, a2;
Select a1 pattern a1 ("z", _"z"_)
5, 8, 9
5000
17 - Uses query (single synonym with 1 value)
assign a1; variable v1;
Select a1 such that Uses(a1, "i")
3, 8
5000
18 - Uses query (single synonym with wildcard)
assign a1; variable v1;
Select v1 such that Uses(a1, _)
x, y, z, i, me
5000
19 - Uses query (no synonym with wildcard and value)
assign a1; variable v1;
Select v1 such that Uses(7, "me")
none
5000
20 - Uses query (double synonym)
assign a1; variable v1;
Select v1 such that Uses(a1, v1)
x, y, i, z
5000
21 - Combination of cases (No boolean)
stmt s1; assign a1; variable v1;
Select s1 such that Uses(s1, v1) pattern a1(v1, _"z"_)
1, 4, 5, 8, 9
5000
22 - Combination of cases (one non-boolean, one boolean)
stmt s1; assign a1; variable v1, v2;
Select s1 such that Uses(s1, v1) pattern a1(v2, _"z"_)
1, 2, 3, 4, 5, 8, 9
5000
23 - ParentT with double wildcards (invalid)
print p;
Select p such that Parent*(_, _)
none
5000
```
### Testing Targets:
#### SOURCE
* Entity Creation without any container logic - no nesting
* Simple assignments
* Operator precedence in parsing
#### QUERY
* simple select statements
* Follows query - wildcard included
* Pattern query - wildcard included
-------
## Source-Query Pair 2 [Graded for Iteration 1]
### test_source_2.txt
```javascript
procedure Bumblebee {
read x;
print x;
y = 2 * z;
z = p - y;
if (q != 1) then {
z = x + 24;
}
else
{
while (z > 0) {
y = x * q - 5;
z = z - 1;
}
if (q != z) then {
x = 1 ;
} else {
print x;
}
y = x + y * z + p * q;
}
i = x + j + z;
}
```
```javascript=
procedure Bumblebee {
read x; //1
print x; //2
y = 2 * z; //3
z = p - y; //4
if (q != 1) then { //5
z = x + 24; //6
} else {
while (z > 0) { //7
y = x * q - 5; //8
z = z - 1; //9
}
if (q != z) then { //10
x = 1 ; //11
} else {
print x; //12
}
y = x + y * z + p * q; //13
}
i = x + j + z; //14
}
```
### test_queries_2.txt
```javascript=
1 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows(s1, a1)
3, 4, 9, 13, 14
5000
2 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Parent(r1, p1)
none
5000
3 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select w1 such that Follows(w1, if1)
7
5000
4 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows(r1, p1)
3, 4, 6, 8, 9, 11, 13, 14
5000
5 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Parent(if1, a1)
6, 11, 13
5000
6 - Wildcard and single synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select s1 such that Follows(_, s1)
2, 3, 4, 5, 9, 10, 13, 14
5000
7 - Single synonym and wildcard
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Parent(s1, _)
3, 4, 6, 8, 9, 11, 13, 14
5000
8 - Value and single synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select s1 such that Follows(1, s1)
2
5000
9 - Single synonym and value
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select s1 such that Parent(s1, 1)
none
5000
10 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows* (s1, a1)
3, 4, 9, 13, 14
5000
11 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Parent* ( r1 , p1 )
none
5000
12 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Parent*(if1,a1)
6, 8, 9, 11, 13
5000
13 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select p1 such that Follows*(r1, a1)
2, 12
5000
14 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows*(w1, a1)
13
5000
15 - Wildcard and single synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select s1 such that Parent*(_, s1)
6, 7, 8, 9, 10, 11, 12, 13
5000
16 - Single synonym and wildcard
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select s1 such that Follows*(s1, _)
1, 2, 3, 4, 5, 7, 8, 10
5000
17 - Value and single synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select s1 such that Follows*(1, s1)
2, 3, 4, 5, 14
5000
18 - Single synonym and value
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select s1 such that Parent*(s1, 1)
none
5000
19 - Double synonym (valid)
stmt s1; variable v1;
Select s1 such that Uses(s1, v1)
2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14
5000
20 - Double synonym (valid)
stmt s1; variable v1;
Select s1 such that Modifies(s1, v1)
1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14
5000
21 - One synonym, one wildcard (valid)
assign a1;
Select a1 such that Uses(a1, _)
3, 4, 6, 8, 9, 13, 14
5000
22 - One synonym, one wildcard (valid)
assign a1;
Select a1 such that Modifies(a1, _)
3, 4, 6, 8, 9, 11, 13, 14
5000
23 - One synonym, one exact match (valid)
print p1;
Select p1 such that Uses(p1, "x")
2, 12
5000
24 - One synonym, one exact match (valid)
print p1;
Select p1 such that Modifies(p1, "x")
none
5000
25 - Double synonym (valid)
read r1; variable v1;
Select r1 such that Uses(r1, v1)
none
5000
26 - Double synonym (valid)
read r1; variable v1;
Select r1 such that Modifies(r1, v1)
1
5000
27 - Double synonym (valid)
while w1; variable v1;
Select w1 such that Uses(w1, v1)
7
5000
28 - Double synonym (valid)
while w1; variable v1;
Select w1 such that Modifies(w1, v1)
7
5000
29 - Double synonym (valid)
if if1; variable v1;
Select if1 such that Uses(if1, v1)
5, 10
5000
30 - Double synonym (valid)
if if1; variable v1;
Select if1 such that Modifies(if1, v1)
5, 10
5000
31 - Zero (valid)
variable v1;
Select v1 such that Uses(0, v1)
none
5000
32 - Zero (valid)
variable v1;
Select v1 such that Modifies(0, v1)
none
5000
33 - Pattern with wildcard on rhs within nested containers
assign a; while w;
Select a pattern a ("x", _)
11
5000
34 - Pattern with wildcard within nested containers
assign a; while w;
Select a pattern a (_, _"x"_)
6, 8, 13, 14
5000
35 - Pattern with exact match (lhs) and partial match (rhs)
assign a; while w;
Select a pattern a ("y", _"z"_)
3, 13
5000
36 - Pattern with exact match (lhs) and partial match (rhs)
assign a; while w;
Select a pattern a ("y", _"z"_)
3, 13
5000
37 - Pattern as a boolean
assign a; while w;
Select w pattern a ("y", _"z"_)
7
5000
38 - Pattern as a boolean (two wildcards)
assign a; while w;
Select w pattern a (_, _)
7
5000
39 - Pattern as a boolean (rhs wildcard)
assign a; while w;
Select w pattern a ("x", _)
7
5000
40 - Pattern as a boolean (lhs wildcards)
assign a; if ifs;
Select ifs pattern a (_, _"p"_)
5, 10
5000
41 - Neither such that or pattern is boolean
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select if1 such that Follows(a1, if1) pattern a1 (_, _"y"_)
5
5000
42 - Neither such that or pattern is boolean
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows(if1, a1) pattern a1 ("i", _"j"_)
14
5000
43 - Neither such that or pattern is boolean (tests containers are tested also)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select s1 such that Follows(a1, s1) pattern a1 (_, _)
4, 5, 9
5000
44 - Only such that is boolean
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows(w1, if1) pattern a1 (_,_)
3, 4, 6, 8, 9, 11, 13, 14
5000
45 - Only such that is boolean
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1;
Select v1 such that Follows*(w1, a1) pattern a1 (v1,_)
y, z, x, i
5000
46 - Only such that is boolean
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1;
Select a1 such that Follows(s1, if1) pattern a1 ("i", _"j"_)
14
5000
47 - Only pattern is boolean (false)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select w1 such that Follows(w1, if1) pattern a1 ("x", _"z"_)
none
5000
48 - Only pattern is boolean (true)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select w1 such that Follows(w1, if1) pattern a1 ("z", _"x"_)
7
5000
49 - Both are boolean (true)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select if1 such that Follows(3, 4) pattern a1(_, _)
5, 10
5000
50 - Both are boolean (false)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select if1 such that Follows(5, 5) pattern a("j", _)
none
5000
51 - Invalid second argument (invalid)
stmt s1; procedure pr1;
Select s1 such that Uses(s1, pr1)
none
5000
52 - Invalid second argument (invalid)
stmt s1; procedure pr1;
Select s1 such that Modifies(s1, pr1)
none
5000
53 - Invalid second argument (integer string) (invalid)
stmt s1;
Select s1 such that Uses(s1, "9")
none
5000
54 - Invalid second argument (integer string) (invalid)
stmt s1;
Select s1 such that Modifies(s1, "9")
none
5000
55 - Invalid second argument (empty string) (invalid)
stmt s1;
Select s1 such that Uses(s1, "")
none
5000
56 - Invalid second argument (empty string) (invalid)
stmt s1;
Select s1 such that Modifies(s1, "")
none
5000
57 - Invalid second argument (unknown variable) (invalid)
stmt s1;
Select s1 such that Uses(s1, "invalid")
none
5000
58 - Invalid second argument (unknown variable) (invalid)
stmt s1;
Select s1 such that Modifies(s1, "invalid")
none
5000
59 - Incorrect query (invalid value)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows*(_, test)
none
5000
60 - Incorrect query (invalid synonym used)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows*(pr1, _)
none
5000
61 - Incorrect query (invalid value)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Follows*(0, _)
none
5000
62 - Incorrect query (invalid value)
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; procedure pr1;
Select a1 such that Parent*(-1, _)
none
5000
63 - Incorrect query (invalid synonym used)
stmt s1, s2; assign a1; variable v;
Select a1 such that Follows*(1, v)
none
5000
64 - Negative number (invalid)
variable v1;
Select v1 such that Uses(-1, v1)
none
5000
65 - Negative number (invalid)
variable v1;
Select v1 such that Modifies(-1, v1)
none
5000
66 - ParentT with double wildcards (valid)
while w;
Select w such that Parent*(_, _)
7
5000
67 - FollowsT with double wildcards (valid)
while w;
Select w such that Follows*(_, _)
7
5000
```
### Testing Targets:
#### SOURCE
* Container nesting with 1 inner layer of container nesting within else block
* Conditional expressions are basic for current level of validation
#### QUERY
* Simple select statements (such that)
* Follows query - wildcard included
* Pattern query - wildcard included
* Invalid query - empty string, negative numbers, zero, invalid string
```
Queries:
Type of queries that can be tested (pair 2):
- 1x such that
- 1x pattern
- such that:
- ModifiesS | UsesS | Parent | ParentT | Follows | FollowsT
within each, the allowed combinations of lhs, rhs.
- Pattern:
- syn-assign:
- synonym of type assign
- LHS:
- synonym of type variable
- '_'
- "IDENT"
- RHS:
- "_"
- "VARIABLE_NAME"
- "INT"
- 1x such that + 1x pattern
- Common synonym + has target synonym
- Common synonym + no target synonym
- No common synonym + has target synonym
- No common synonym + no target synonym
```
------
## Source-Query Pair 3 [previously pair5, to be submitted for grading]
### test_source_3.txt
```javascript
procedure Bumblebee3 {
read
x;
y = 2 * z;
z = z - 1;
while (z > 0) {
while ((nice + 1) > 12) {
y = x * q - 5;
while (x < 69) {
z = z - 1;
while (sleepTime > 0) {
while ((bananas * cherries) == 0) {
y = x + y * z + p * q;
}
if (q != z) then {
x = 1 ;
} else {
print x;
read x;
}
y = x + y * z + p * q;
}
}
i = x + j + z;
}
if (x != z) then {
read x;
} else {
read x;
print x;
}
}
print p;
read p;
}
```
```javascript=
procedure Bumblebee3 {
read x; //1
y = 2 * z;//2
z = z - 1;//3
while (z > 0) {//4
while ((nice + 1) > 12) {//5
y = x * q - 5;//6
while (x < 69) {//7
z = z - 1;//8
while (sleepTime > 0) {//9
while ((bananas * cherries) == 0) {//10
y = x + y * z + p * q;//11
}
if (q != z) then {//12
x = 1 ;//13
} else {
print x;//14
read x;//15
}
y = x + y * z + p * q;//16
}
}
i = x + j + z;//17
}
if (x != z) then {//18
read x;//19
} else {
read x;//20
print x;//21
}
}
print p;//22
read p;//23
}
```
### test_queries_3.txt
to add: all such that single clause, extend on the double clause
```javascript=
1 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select a1 such that Follows(s1, a1)
2, 3, 16, 17
5000
2 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select w1 such that Follows(w1, if1)
5, 10
5000
3 - Wildcard and single synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select s1 such that Follows(_, s1)
2, 3, 4, 7, 9, 12, 15, 16, 17, 18, 21, 22, 23
5000
4 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select a1 such that Parent(r1, p1)
none
5000
5 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select a1 such that Parent(if1, a1)
13
5000
6 - Single synonym and wildcard
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select a1 such that Parent(s1, _)
2, 3, 6, 8, 11, 13, 16, 17
5000
7 - Value and single synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select s1 such that Follows(1, s1)
2
5000
8 - Single synonym and value
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select s1 such that Parent(s1, 1)
none
5000
9 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select a1 such that Follows* (s1, a1)
2, 3, 16, 17
5000
10 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select a1 such that Follows*(w1, a1)
16, 17
5000
11 - Value and single synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select s1 such that Follows*(1, s1)
2, 3, 4, 22, 23
5000
12 - Single synonym and wildcard
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select s1 such that Follows*(_, s1)
2,3,4,7,9,12,15,16,17,18,21,22,23
5000
13 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select a1 such that Parent* ( r1 , p1 )
none
5000
14 - Double synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select a1 such that Parent*(if1,a1)
13
5000
15 - Wildcard and single synonym
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select s1 such that Parent*(_, s1)
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21
5000
16 - Single synonym and value
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1;
Select s1 such that Parent*(s1, 1)
none
5000
17 - Double synonym (valid)
stmt s1; variable v1;
Select s1 such that Uses(s1, v1)
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 21, 22
5000
18 - One synonym, one wildcard (valid)
assign a1;
Select a1 such that Uses(a1, _)
2, 3, 6, 8, 11, 16, 17
5000
19 - Double synonym (meaning is invalid because read doesn't use)
read r1; variable v1;
Select r1 such that Uses(r1, v1)
none
5000
20 - Double synonym (valid)
while w1; variable v1;
Select w1 such that Uses(w1, v1)
4, 5, 7, 9, 10
5000
21 - One synonym and one wildcard (valid)
while w1; variable v1;
Select v1 such that Uses(w1, _)
y, z, nice, x, q, sleepTime, bananas, cherries, p, i, j
5000
22 - Double synonym (valid)
if if1; variable v1;
Select if1 such that Uses(if1, v1)
12, 18
5000
23 - Zero (valid)
variable v1;
Select v1 such that Uses(0, v1)
none
5000
24 - Double synonym (valid)
stmt s1; variable v1;
Select s1 such that Modifies(s1, v1)
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 23
5000
25 - One synonym, one wildcard (valid)
assign a1;
Select a1 such that Modifies(a1, _)
2, 3, 6, 8, 11, 13, 16, 17
5000
26 - Double synonym (valid)
read r1; variable v1;
Select r1 such that Modifies(r1, v1)
1, 15, 19, 20, 23
5000
27 - Double synonym (valid)
while w1; variable v1;
Select w1 such that Modifies(w1, v1)
4, 5, 7, 9, 10
5000
28 - Double synonym (valid)
if if1; variable v1;
Select if1 such that Modifies(if1, v1)
12, 18
5000
29 - Zero (valid)
variable v1;
Select v1 such that Modifies(0, v1)
none
5000
30 - Variable is synonym with partial match
assign a1; variable v1;
Select a1 pattern a1 (v1, _"p"_)
11, 16
5000
31 - Variable is synonym with wildcard
assign a1; variable v1;
Select v1 pattern a1 (v1, _)
y, z, x, i
5000
32 - Variable is value with partial match
assign a1; variable v1;
Select a1 pattern a1 ("y", _"q"_)
6, 11, 16
5000
33 - Variable is value with wildcard
assign a1; variable v1;
Select a1 pattern a1 ("y", _)
2, 6, 11, 16
5000
34 - Variable is wildcard with partial match
assign a1; variable v1;
Select a1 pattern a1 ( _ , _"z"_ )
2, 3, 8, 11, 16, 17
5000
35 - Variable is wildcard with wildcard
assign a1; variable v1;
Select a1 pattern a1 (_, _)
2, 3, 6, 8, 11, 13, 16, 17
5000
36 - Query is boolean type with value and partial match
assign a1, a2; variable v1;
Select a2 pattern a1 ("y", _"q"_)
2, 3, 6, 8, 11, 13, 16, 17
5000
37 - Query is boolean type with wildcard and partial match
assign a1, a2; variable v1;
Select a2 pattern a1 (_, _"q"_)
2, 3, 6, 8, 11, 13, 16, 17
5000
38 - Variable is invalid with partial match
assign a1; variable v1;
Select a1 pattern a1 ("2", _"q"_)
none
5000
39 - Variable is invalid with wildcard
assign a1; variable v1;
Select a1 pattern a1 ("", _"q"_)
none
5000
40 - Query is invalid
stmt s1; variable v1;
Select a1 pattern s1 ("y", _"q"_)
none
5000
41 - No boolean with Follows
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select a1 such that Follows (a1, w1) pattern a1 (_, _"z"_)
3, 8
5000
42 - No boolean with ParentT
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select w1 such that Parent* (w1, a1) pattern a1 (_, _"z"_)
4, 5, 7, 9, 10
5000
43 - No boolean with Uses
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select v1 such that Uses (s1, v1) pattern a1 (v1, _"z"_)
z, y
5000
44 - Single such that boolean with Parent
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select v1 such that Parent (5, 17) pattern a1 (v1, _"z"_)
y, z, i
5000
45 - Single such that boolean with FollowsT
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select v1 such that Follows* (5, 18) pattern a1 (v1, _"z"_)
y, z, i
5000
46 - Single such that boolean with Modifies
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select a1 such that Modifies (w1, "x") pattern a1 ("y", _"5"_)
6
5000
47 - Double boolean with Follows
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select v1 such that Follows (_, 1) pattern a1 (v2, _"z"_)
none
5000
48 - Double boolean with FollowsT
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select s1 such that Follows* (1, 23) pattern a1 ("i", _"j"_)
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
5000
49 - Double boolean with Uses
stmt s1, s2; assign a1; print p1; read r1; while w1; if if1; variable v1, v2;
Select p1 such that Uses (if1, "q") pattern a1 (_, _)
14, 21, 22
5000
50 - Double boolean with Modifies
assign pattern; if Modifies; print print;
Select print such that Modifies (Modifies, "x") pattern pattern(_, _)
14, 21, 22
5000
51 - Double Synonym with matching synonyms
assign a1; variable v1;
Select a1 such that Uses (a1, v1) pattern a1 (v1, _)
3, 8, 11, 16
5000
```
### Testing Targets:
#### SOURCE
* Deep level nesting of while loop (no branches)