# 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)