Test with array and mock
I think that if you accept definition Fowler uses you should name them "stubs":


  Stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what's programmed in
  for the test. Stubs may also record information. (Mocks Aren't Stubs )


Given the structure of the code if you want to cover with a suite of test should at least test how it works under a large set of input:


Empty array
Single element array 
Array filled with null element
Array with a arbitrary number of element


with a different test for each of this cases

For this reason I suppose you should write a function that "allocate" an array, to avoid code repetition in the test (also tests must have code that you can maintain!). So I think yes you should put all the logic that can help you inside the test.

I'm not a fan of test not that test themselves, but in this case all the test make sense only if you invoke FreeItemMock with a reference to a bool, so yes I think make sense to test it, but I suggest you put it destructor, before changing the value, in this you are sure that you transaction from false to true is a really transaction and not a false to false