Precise Stateful Modeling

It’s time we use a model to dig deeper into what the system can or can’t do. Once again, a critical property of models is that they are simpler but sufficient to represent the real thing. For our database, a map will prove sufficient to track all changes. But first, before we start to add postconditions, we may want to make an inventory of all kinds of operations we will want to check:

  • Adding a book that is not yet in the system is expected to succeed.

  • Adding a book that is already in the system is expected to fail.

  • Adding a copy of a book that is already in the system is expected to succeed (and make one more copy available right away).

  • Adding a copy of a book that isn’t yet in the system should return an error.

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.