The test call can take additional arguments. It will pass those on unaltered to the function under test. Most important, they are cloned, that is they are passed on as is, and therefore if the function under test alters them then errors will accumulate. This can happen for the types , , and . We don't use and on Wikipedia. That leaves , , and as passed by value and safe against changes.