---
# System prepended metadata

title: System Testing Workspace (Part 1)

---

# System Testing Workspace (Part 1)


[![hackmd-github-sync-badge](https://hackmd.io/GCrfsq1BQ7mzzDCoLLLwMg/badge)](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)


