I am thinking that:
Test1 is correct to fail compilation because the operator "can only be used to test objects against class types in same class hierarchy" (K&B). ie at the level in which they are declared (as opposed to Object level), C1 and C2 are clearly in different class hiearachies. So compilation rightly fails.
I am not sure about Test2, but my guess (a guess coming from someone who hasn't coded in 12 months :roll: but studying for
SCJP now

) is that in the case of interfaces, it is still abtract, ie it does not yet belong to any particular class hierarchy.

Hopefully someone can confirm this.
[ March 25, 2005: Message edited by: Jeff Tian ]