In my theory class we used Practica Musica. It's about the most complete thing there is. At home I practiced with Auralia, which is cheaper and not quite as sophisticated. PM is very difficult and I hardly ever used it, whereas Auralia is more fun and you can make it as hard as you want. Also, Auralia actually teaches you about the stuff; I'm not sure if PM does.