1-
public class DemoAssert1 {
private static int a =15;
private static int b =12;
static boolean evaluateFirst() {
if(a>b) return true; else return false;
}
static boolean evaluateSecond() {
if(a<b) return true; else return false;
}
static Object shouldDo() {
return "Yeah";
}
static boolean shouldNotDo() {
return false;
}
public static void main(String [] args) {
assert evaluateFirst(): shouldDo(); //Line 1
assert evaluateSecond(): shouldNotDo(); //Line 2
}
}
Select the correct answer
A: Compilation fails at Line 1, the second expression of assert can't be an object
B: Compilation fails at Line 2, the second expression of assert can't be boolean
C: Both lines show a compilation error because the second expression of an assert statement can't be a method call that returns something.
D: The program compiles fine if shouldDo() and shouldNotDo() is set to return void
E: Program compiles fine and shows runtime exception due to failure at Line 2.
F: None of the above
2-
public class DemoAssert2 {
public static void main(String... args) {
final int a;
a=10;
assert a>19?false:false:false;
}
}
What will be the output of the given code if assertion is enabled
A: Compilation fails because final variable a is not initialized when declared
B: Compilation fails due to illegal assert expression
C: Compilation succeeds but at runtime AssertionError exception is thrown.
D: None of the above
3-
public class DemoAssert3 {
static String message1() {
return "I don't know why 1<2;";
}
static String message2() {
return "I know but can't express";
}
public static void main(String... args) {
assert true: message()+message2; //Line 1
assert true: message(); //Line 2
}
}
What is the result if ea is enabled?
(Choose all that aplly)
A: Fails to compile due to error on Line 1
B: Compiles fine and prints "I don't know why 1<2;I know but can't express" with AssertionError exception
C: Both lines will always throw AssertionError exception because both assert with true.
D: Compiles fine and runs without printing anything
E: None of the above
4-
public class DemoAssert4 {
static void message() {
System.out.println("Assertion error arose");
}
public static void main(String[] args) {
assert true:message(); //Line 1
assert false:message(); //Line 2
}
}
(Choose all that aplly)
A: Compiler error at Line 1
B: Compiler error at Line 2
C: Runtime exception with message "Assertion error arose"
D: Compiles and run but no output.
E: Runtime exception
F: None of the above
5-
public class DemoAssert5 {
final public static void main(String[] args) {
assert false: "Assertions are good for testing purpose!";
}
}
(Choose all that aplly)
A: Won't compile main() can't be final
B: Compiles and run and no exception till assert is false
C: Prints 'Assertions are good for testing purpose' only when we write:
assert true : "Assertions are good for testing purpose!" with AssertionError at run time
D: Compiles fine with runtime exception with message "Assertions are good for testing purpose".
6-
public class DemoAssert6 {
public static void main(String[] args) {
assert true:false; //Line 1
assert false:true; //Line 2
}
}
A: Compilation fails at line 1
B: Compilation fails at line 2
C: Runtime exception due to line 1
D: Runtime exception due to line 2
E: Non of the above
7-
public class DemoAssert7 {
private void doStuff1(int x) {
assert(x>0);
}
public void doStuff2(int x) {
assert (x>0);
}
}
(Choose all that apply)
A: Compilation can't start, there is no main() method defined.
B: assert is not used appropriately in doStuff1(int x) method.
C: assert is not used appropriately in doStuff2(int x) method.
D: Compiles fine but Runtime exception.
E: assert is being used illegally in both the methods.
8-
public class DemoAssert8 {
public void doStuff1(int x) {
int y=0;
switch(x) {
case 1: y=1;break;
case 2: y=4;break;
case 3: y=9;break;
default: assert false;
}
}
private void doStuff2(int x) {
int y=0;
switch(x) {
case 4: y=16;break;
case 5: y=25;break;
case 6: y=36;break;
default: assert false;
}
}
}
(Choose all that apply)
A: assert has been used inappropriately in doStuff1() method.
B: assert has been used inappropriately in doStuff2() method.
C: assert has been used inappropriately in both the methods.
D: assert has been used illegally in doStuff1() method.
E: assert has been used illegaly in doStuff2() method.
F: assert has been used illegally in both the methods.
G: Non of the above.
9-
public class DemoAssert9 {
public static void main(String... args) {
assert(args[0]); //Line 1
}
}
class invocation with:
java DemoAssert9 false true false
(Choose two that apply)
A- assert has been used inappropriately at Line 1
B- assert has been used illegally at Line 1
C- assert has been used legally.
D- assert has been used appropriately.
E- None of the above
10-
public class DemoAssert10 {
int y;
int x;
private void doStuff() {
assert(modifyThings());
}
public boolean modifyThings() {
y=x++;
return true;
}
}
(Choose all that apply)
A: assert has been used inappropriately in method doStuff()
B: assert has been used appropriately in method doStuff()
C: It is illegal use of assert in method doStuff()
D: It is legal use of assert in method doStuff()
E: None of the above
-------------------------------------------------------------------------------------------------
I HOPE YOU WOULD HAVE ATTEMPTED ALL THE QUESTIONS BEFORE YOU COME HERE TO SATISFY YOU AS WELL AS YOUR ANSWERS :)
Answers:
1- E
2- C
3- D
4- A,B
5- D
6- D
7- C,D
8- G
9- A,B (assert requires boolean, passed String, hence compiler error; if it were boolean
it is not appropriate to use assertion to validate command line argument because it is
not sure that assertion is enabled)
10- A,D
Dated: 08/March/2007
Don't forget to send your comment on my this little effort at: cmbhatt@imap.cc
-------------------------------------------------------------------------------------------------