Testing Specials

Alright, before moving further, let’s reevaluate our TODO list:

  • Items are identified by unique names (nonempty strings).

  • The list of items has no set length (though it appears nonempty), and the items it contains are in no specific order.

  • The unit prices appear to be integers. (Not a bad idea, since floating point numbers lose precision; we can assume values are written in cents, for example.)

  • The special prices are triggered only once the right number of items of the proper type can match a given special.

  • All items have a unit price.

  • It is not mandatory for a given item to have a special price.

That’s decent coverage in terms of features and requirements we extracted, with few lines of tests! It may not feel like we’ve accomplished ...

Get Property-Based Testing with PropEr, Erlang, and Elixir now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.