Pure functions over immutable data structures are delightfully easy to test: You can just create a table of (example input, expected output) pairs. They're generally also easy to fuzz with tools like QuickCheck, since the input is easy to describe.