anchor.diff:  -----------------------
   
   
  -When the mock for `convert_to_uppercase()` is called it will write the
  -string "UPPER CASE" in the area pointed to by `converted_string`.
  +When the mock for `convert_to_uppercase()` is called it will write the string "UPPER CASE" in the area pointed to by `converted_string`.
   
   ==== Side Effects
   
  -Sometimes returning simple values is not enough. The function that you
  -want to mock might have some side effect, like setting a global error
  -code, or aggregate some data.
  -
  -Let's assume that the `reader` increments a counter every time it gets
  -called and we need to mimic that behaviour. There are many ways to do
  -this, but here is one using the side effect feature. It works by
  -calling a callback function that you provide, allowing you to
  -feed some data to it.
  -
  -We create the "side effect function" which needs to take a single
  -argument which should be a pointer to the "side effect data". You will
  -have to cast that datapointer to the correct type.
  +Sometimes returning simple values is not enough.
  +The function that you want to mock might have some side effect, like setting a global error code, or aggregate some data.
  +
  +Let's assume that the `reader` increments a counter every time it gets called and we need to mimic that behaviour.
  +There are many ways to do this, but here is one using the side effect feature.
  +It works by calling a callback function that you provide, allowing you to feed some data to it.
  +
  +We create the "side effect function" which needs to take a single argument which should be a pointer to the "side effect data".
  +You will have to cast that datapointer to the correct type.
   
   [source, c]
   -----------------------
   include::tutorial_src/side_effect.c[lines=29..44]
   -----------------------
  +
  +
   
   
   === Setting Expectations on Mock Functions
  
positive.code: :source-highlighter: highlightjs
  :icons: font
  :numbered:
  
negative.code: |=========================================================
  
  
  WARNING: You cannot use C/C++ string literal concatenation (like `"don't" "use" "string" "concatenation"`) in the parameters to the constraints.
  If you do, you will get weird error messages about missing arguments to the constraint macros.
  This is caused by the macros using argument strings to produce nice failure messages.
  
  
  === Asserting C++ Exceptions
  