Great module that allowed me to thoroughly test a bunch of very large structures.
My only disappointment is the documentation: it currently (v0.112) doesn't mention some of the available functions. One of such is hash_each() and I spent an hour or more searching for the solution without keys()... At the end, I've decided to try to implement it myself, when I spotted it already made in the source.
If you need to test a big data structure's content, and you don't know or care about every last little bit of it, Test::Deep makes it easy to specify exactly what you need to. You can say, for example, that some very deep node has a few given properties and that you don't care about anything else -- or you can build a complex structure of comparisons to be applied to your tested struct. It's a big time-saver.
I've found this module the best choice for testing complex data structures like ASTs. When a test fails, it provides much more detailed info on how two deep structures differ than Test::More's eq_array and eq_hash do. The brilliant idea of this module reminds me of a funny language named TXL.
Testing ASTs could hardly be interesting without Test::Deep! So I decide to rate it five stars.
Top notch module! It is exactly as advertised "Extremely flexible deep comparison". This module saved me many hours of tedious "manual" deep test writing. Its interface is very sofisticated, and can seem at times to be complex, but once you get your head around it, you will happy you did.