Testing Specials

Learn how to test the specials list in the checkout example and how to generate the final data required for the test.

Getting started

Rather than modifying the existing property, which does a fine job of checking non-special prices, we’ll add a new one to check specials. The separation will help narrow down problems when they happen. If the property for basic prices always works, then we’ll know that failures in the separate special property likely relate to bugs in the special one’s handling.

Let’s take a look at the property that we could implement.

prop_special() ->
    ?FORALL({ItemList, ExpectedPrice, PriceList, SpecialList},
            item_price_special(),
        ExpectedPrice =:= checkout:total(ItemList, PriceList, SpecialList)).

This property is similar to the one we wrote earlier, except that we now expect another term out of the generator, which is a list of special prices, SpecialList in Erlang. The easiest way to go about this would be to just come up ...

Access this course and 1400+ top-rated courses and projects.