For unit test
| 141 | |
| 142 | // For unit test |
| 143 | int VerifyArchiveIndex(dmResourceArchive::HArchiveIndexContainer archive) |
| 144 | { |
| 145 | dmLogInfo("VerifyArchiveIndex: %p\n", archive); |
| 146 | |
| 147 | uint8_t* hashes = 0; |
| 148 | //EntryData* entries = 0; |
| 149 | |
| 150 | // If archive is loaded from file use the member arrays for hashes and entries, otherwise read with mem offsets. |
| 151 | if (!archive->m_IsMemMapped) |
| 152 | { |
| 153 | hashes = archive->m_ArchiveFileIndex->m_Hashes; |
| 154 | //entries = archive->m_ArchiveFileIndex->m_Entries; |
| 155 | } |
| 156 | else |
| 157 | { |
| 158 | //uint32_t entry_offset = dmEndian::ToNetwork(archive->m_ArchiveIndex->m_EntryDataOffset); |
| 159 | uint32_t hash_offset = dmEndian::ToNetwork(archive->m_ArchiveIndex->m_HashOffset); |
| 160 | hashes = (uint8_t*)((uintptr_t)archive->m_ArchiveIndex + hash_offset); |
| 161 | //entries = (EntryData*)((uintptr_t)archive->m_ArchiveIndex + entry_offset); |
| 162 | } |
| 163 | |
| 164 | uint32_t hash_len = dmEndian::ToNetwork(archive->m_ArchiveIndex->m_HashLength); |
| 165 | uint32_t entry_count = dmEndian::ToNetwork(archive->m_ArchiveIndex->m_EntryDataCount); |
| 166 | |
| 167 | const uint8_t* prevh = hashes; |
| 168 | |
| 169 | for (uint32_t i = 0; i < entry_count; ++i) |
| 170 | { |
| 171 | const uint8_t* h = (hashes + dmResourceArchive::MAX_HASH * i); |
| 172 | |
| 173 | int cmp = memcmp(prevh, h, dmResourceArchive::MAX_HASH); |
| 174 | if (cmp > 0) |
| 175 | { |
| 176 | char hash_buffer1[dmResourceArchive::MAX_HASH*2+1]; |
| 177 | dmResource::BytesToHexString(prevh, hash_len, hash_buffer1, sizeof(hash_buffer1)); |
| 178 | char hash_buffer2[dmResourceArchive::MAX_HASH*2+1]; |
| 179 | dmResource::BytesToHexString(h, hash_len, hash_buffer2, sizeof(hash_buffer2)); |
| 180 | dmLogError("Entry %3d: '%s' is not smaller than", i == 0 ? -1 : i-1, hash_buffer1); |
| 181 | dmLogError("Entry %3d: '%s'", i, hash_buffer2); |
| 182 | return cmp; |
| 183 | } |
| 184 | |
| 185 | prevh = h; |
| 186 | } |
| 187 | return 0; |
| 188 | } |
| 189 | } |
nothing calls this directly
no test coverage detected