use ::{IrcWrapped, AircWrapped, Irc, IntrusiveReferenceCounted};
use std::mem;
use std::any::Any;
#[derive(Debug)]
struct A;
impl Drop for A {
fn drop(&mut self) {
println!("A at {:p} is deleted", self);
}
}
#[test]
fn smoke_test() {
let irc1 = IrcWrapped::new_irc([A, A]) as Irc<IrcWrapped<[A;2]>>;
println!("Created IrcWrapped{:?}", irc1);
let irc2 = irc1.clone() as Irc<IntrusiveReferenceCounted>;
println!("Cloned IrcWrapped {:?}", irc1);
mem::drop(irc1);
println!("Dropped IrcWrapped");
mem::drop(irc2);
println!("Dropped IrcWrapped");
let irc1 = AircWrapped::new_irc([A]);
println!("Created AircWrapped {:?}", irc1);
let irc2 = irc1.clone() as Irc<AircWrapped<[A]>>;
println!("Cloned AircWrapped {:?}", irc1);
mem::drop(irc1);
println!("Dropped AircWrapped {:?}", irc2);
mem::drop(irc2);
println!("Dropped AircWrapped");
}