# System testing part 4 ### test_source_7.txt ```javascript= procedure if { if (while != 0) then { if (procedure != 99) then { print ProcessStmtNow; } else { read read; } } else { if (while == 1) then { read a; } else { print c; } } } ``` ### test_queries_7.txt ```javascript= 1 - Parent of read stmt s; read r; Select s such that Parent(s, r) 2, 5 5000 2 - Parent of print stmt s; read r; Select s such that Parent(s, r) 2, 5 5000 3 - Parent* of read stmt s; read r; Select s such that Parent*(s, r) 1, 2, 5 5000 4 - Parent* of print stmt s; read r; Select s such that Parent*(s, r) 1, 2, 5 5000 ``` ### Testing Targets: Squashing Iteration 1 bugs: - P/P* could not be differentiated for queries. - Exception thrown when an If stmt is the only stmt nested inside an If/Else block. ------ ### test_source_8.txt ```javascript= procedure Procedure { procedure = procedure/procedure; while (procedure%procedure <= procedure - procedure*procedure){ if (procedure == procedure) { call procedure; } else { call procedur; } } print procedure; } procedure procedure { call procedur; read procedur; } procedure procedur { if (procedure == procedure) { procedure = procedure; } else { call procedural; call procedural; procedur = procedur; call procedural; print procedures; } } procedure procedural { p = r; o = c; e = d; u = r; a = l; } ``` ``` procedure Procedure { procedure = procedure/procedure; //1 while (procedure%procedure <= procedure - procedure*procedure){ //2 if (procedure == procedure) { //3 call procedure; //4 } else { call procedur; //5 } } print procedure; //6 } procedure procedure { call procedur; //7 read procedur; //8 } procedure procedur { if (procedure == procedure) { //9 procedure = procedure; //10 } else { call procedural; //11 call procedural; //12 procedur = procedur; //13 call procedural; //14 print procedures; //15 } } procedure procedural { p = r; //16 o = c; //17 e = d; //18 u = r; //19 a = l; //20 } ``` ### test_queries_8.txt ```javascript= 1 - Parent of call stmt s; call c; Select s such that Parent(s, c) 3, 9 5000 2 - Parent of call stmt s; Select s such that Parent(s, 12) 9 5000 3 - Parent* of call stmt s; call c; Select s such that Parent*(s, c) 2, 3, 9 5000 4 - Parent* of call stmt s; Select s such that Parent*(s, 5) 2, 3 5000 5 - Follows of call stmt s; call c; Select c such that Follows(s, c) 12, 14 5000 6 - Follows of call stmt s; Select s such that Follows(7, s) 8 5000 7 - Follows* of call stmt s; call c; Select s such that Follows*(c, s) 8, 12, 13, 14, 15 5000 8 - Follows* of call stmt s; Select s such that Follows*(s, 14) 11, 12, 13 5000 9 - Uses of call call c; variable v; Select v such that Uses(c, v) procedure, procedur, procedures, r, c, d, r, l 5000 10 - Uses of call call c; variable v; Select v such that Uses(11, v) r, c, d, r, l 5000 11 - Uses of stmt stmt s; variable v; Select s such that Uses(s, v) 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 5000 12 - UsesP without nesting variable v; Select v such that Uses("procedural", v) r, c, d, r, l 5000 13 - UsesP with nesting procedure pro; variable v; Select v such that Uses(pro, v) procedure, procedur, procedures, r, c, d, r, l 5000 14 - UsesP with nesting procedure pro; Select pro such that Uses(pro, "procedures") Procedure, procedure, procedur 5000 15 - Modifies of call call c; variable v; Select v such that Modifies(c, v) procedur, procedure, p, o, e, u, a 5000 16 - Modifies of call call c; variable v; Select v such that Modifies(5, v) procedur, procedure, p, o, e, u, a 5000 17 - Modifies of stmt stmt s; variable v; Select s such that Modifies(s, v) 1, 4, 5, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20 5000 18 - ModifiesP without nesting procedure procedural; variable v; Select v such that Modifies("procedural", v) p, o, e, u, a 5000 19 - ModifiesP procedure pro; variable v; Select v such that Modifies(pro, v) Procedure, procedure, procedur, procedural 5000 20 - ModifiesP with nesting procedure pro; variable v; Select pro such that Modifies(pro, "p") procedural, procedur, procedure, Procedure 5000 21 - pattern partial matching assign a; Select a pattern a(_, _"procedure"_) 1, 10 5000 22 - pattern exact matching assign a; Select a pattern a("procedure", "procedure") 10 5000 23 - Calls procedure pro; Select pro such that Calls(pro, _) Procedure, procedure, procedur 5000 24 - Calls procedure pro; Select pro such that Calls(pro, "procedural") procedur 5000 25 - Calls procedure pro; Select pro such that Calls(_, _) Procedure, procedure, procedur, procedural 5000 26 - Calls* procedure pro; Select pro such that Calls*(pro, "procedural") Procedure, procedure, procedur 5000 27 - Calls* procedure pro; Select pro such that Calls*("procedure", pro) procedur, procedural 5000 ``` ### Testing Targets: #### SOURCE - multiple procedures and calls #### QUERIES - handles basicspa single-procedure-basis queries correctly - ensures that single-procedure relationships do not cross procedures and still work as expected with multiple procedures and calls - Uses and Modifies across procedures - Calls and Calls*