add self test