Design and Testing of Reversible Circuits