80                                        const std::vector<ITEM*>& aAddedItems,
 
   81                                        const std::set<KIID>&     aRemovedItems,
 
   82                                        const std::vector<ITEM*>& aHeads,
 
   83                                        const std::vector<LOGGER::EVENT_ENTRY>& aEvents )
 
   85    wxString 
result = wxString::Format( 
"mode %d\n", aMode );
 
   90    for( 
const KIID& uuid : aRemovedItems )
 
   91        result += wxString::Format( 
"removed %s\n", uuid.AsString().c_str() );
 
   93    for( 
ITEM* item : aAddedItems )
 
   94        result += wxString::Format( 
"added %s\n", item->Format().c_str() );
 
   96    for( 
ITEM* item : aHeads )
 
   97        result += wxString::Format( 
"head %s\n", item->Format().c_str() );
 
 
  130    wxStringTokenizer tokens( aLine );
 
  131    wxString          cmd = tokens.GetNextToken();
 
  135    wxCHECK_MSG( cmd == wxT( 
"event" ), 
EVENT_ENTRY(), 
"Line doesn't contain an event!" );
 
  138    evt.
p.
x = wxAtoi( tokens.GetNextToken() );
 
  139    evt.
p.
y = wxAtoi( tokens.GetNextToken() );
 
  141    evt.
layer = wxAtoi( tokens.GetNextToken() );
 
  142    n_uuids = wxAtoi( tokens.GetNextToken() );
 
  144    for( 
int i = 0; i < n_uuids; i++)
 
  145        evt.
uuids.push_back( 
KIID( tokens.GetNextToken() ) );
 
 
void Log(EVENT_TYPE evt, const VECTOR2I &pos=VECTOR2I(), const ITEM *item=nullptr, const SIZES_SETTINGS *sizes=nullptr, int aLayer=0)
 
static wxString FormatLogFileAsString(int aMode, const std::vector< ITEM * > &aAddedItems, const std::set< KIID > &aRemovedItems, const std::vector< ITEM * > &aHeads, const std::vector< EVENT_ENTRY > &aEvents)
 
void LogM(EVENT_TYPE evt, const VECTOR2I &pos=VECTOR2I(), std::vector< ITEM * > items={}, const SIZES_SETTINGS *sizes=nullptr, int aLayer=0)
 
std::vector< KIID > uuids
 
wxString result
Test unit parsing edge cases and error handling.