/*! * \file test/binary.cpp * \brief Binary Unit Test * * \author xythobuz */ #include #include #include #include "global.h" #include "utils/binary.h" namespace { const char testData[] = { // Unsigned Integers -1, -1, -1, 42, 42, 42, 42, -1, -1, -1, -1, -1, 0, 0, 0, // Signed Integers -1, 92, -2, 102, -3, -1, -1, 66, 66, 66, 66, 66, 66, 66, 66 }; float f1 = 3.1415926f; float f2 = 42.23f; void fillFile(const char *name) { std::ofstream file(name, std::ios_base::out | std::ios_base::binary); file.write(testData, sizeof(testData) / sizeof(testData[0])); file.write(reinterpret_cast(&f1), sizeof(f1)); file.write(reinterpret_cast(&f2), sizeof(f2)); } int test(const char *name) { BinaryFile file; assertEqual(file.open(name), 0); assertEqual(file.readU8(), 255); assertEqual(file.readU16(), 65535); assertEqual(file.readU32(), 707406378); assertEqual(file.readU64(), 1099511627775); assertEqual(file.read8(), -1); assertEqual(file.read16(), -420); assertEqual(file.read32(), -666); assertEqual(file.read64(), 4774451407313060418); std::cout << "This test will fail on big-endian machines!" << std::endl; assertEqual(file.readFloat(), f1); assertEqual(file.readFloat(), f2); assertEqual(file.tell(), 38); return 0; } } int main() { char tmpFile[] = "/tmp/openraider_unit_test_0"; FILE *f; while ((f = fopen(tmpFile, "r")) != NULL) { fclose(f); tmpFile[25]++; } fillFile(tmpFile); int error = test(tmpFile); remove(tmpFile); return error; }