// zweic - test program for statement testing // M. Ganguin, J. Ruffin 2005 // While class WhileTest { Null foo() { Int t = 0; Null n = null; while(n) {} // 1/2 failure of clause 1 (condition type not Int) while(t) { Int s = null; } // 2/2 failure of clause 2 (incorrectly typed statement) while(t) { Int s = 0; } // correct } } // Var class foo {} class bar extends foo {} class baz {} class VarTest { Null foo() { Int n = 1; nonexistent ne = new nonexistent(); // 1/4 failure of clause 1 (nonexistent type) baz b = new foo(); // 2/4 failure of clause 2 (subtype mismatch) bar f = new foo(); // 3/4 failure of clause 2 (inverted sub- and supertypes) Int n = 2; // 4/4 failure of clause 3 (variable n already exists) Int z = 3; // success } } // Set class SetTest { Null foo() { Int n = 1; bar b = new bar(); s = 2; // 1/3 failure of clause 1 (nonexistent variable) n = new foo(); // 2/3 failure of clauses 2 and 3 (subtype mismatch) b = new foo(); // 3/3 failure of clauses 2 and 3 (inverted sub- and supertypes) b = new bar(); // success } } // Do class DoTest { Null foo() { Null k = null; 2 + k; // 1/1 failure of clause 1 (incorrectly typed expression) 2 + 2; // success } } // PrintInt class PrintIntTest { Null foo() { printInt(new foo()); // 1/1 failure of clause 1 (type must be Int) printInt(2); //success } } // PrintChar class PrintCharTest { Null foo() { printChar(new foo()); // 1/1 failure of clause 1 (type must be Int) printChar(2); //success } } 0