// // Created by Bradley Austin Davis on 2016/02/17 // Copyright 2013-2017 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #include "StorageTests.h" #include QTEST_MAIN(StorageTests) using namespace storage; StorageTests::StorageTests() { for (size_t i = 0; i < _testData.size(); ++i) { _testData[i] = (uint8_t)rand(); } _testFile = QDir::tempPath() + "/" + QUuid::createUuid().toString(); } StorageTests::~StorageTests() { QFileInfo fileInfo(_testFile); if (fileInfo.exists()) { QFile(_testFile).remove(); } } void StorageTests::testConversion() { { QFileInfo fileInfo(_testFile); QCOMPARE(fileInfo.exists(), false); } StoragePointer storagePointer = std::unique_ptr(new MemoryStorage(_testData.size(), _testData.data())); QCOMPARE(storagePointer->size(), _testData.size()); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), _testData.size()), 0); // Convert to a file storagePointer = storagePointer->toFileStorage(_testFile); { QFileInfo fileInfo(_testFile); QCOMPARE(fileInfo.exists(), true); QCOMPARE(fileInfo.size(), (qint64)_testData.size()); } QCOMPARE(storagePointer->size(), _testData.size()); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), _testData.size()), 0); // Convert to memory storagePointer = storagePointer->toMemoryStorage(); QCOMPARE(storagePointer->size(), _testData.size()); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), _testData.size()), 0); { // ensure the file is unaffected QFileInfo fileInfo(_testFile); QCOMPARE(fileInfo.exists(), true); QCOMPARE(fileInfo.size(), (qint64)_testData.size()); } // truncate the data as a new memory object auto newSize = _testData.size() / 2; storagePointer = std::unique_ptr(new MemoryStorage(newSize, storagePointer->data())); QCOMPARE(storagePointer->size(), newSize); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), newSize), 0); // Convert back to file storagePointer = storagePointer->toFileStorage(_testFile); QCOMPARE(storagePointer->size(), newSize); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), newSize), 0); { // ensure the file is truncated QFileInfo fileInfo(_testFile); QCOMPARE(fileInfo.exists(), true); QCOMPARE(fileInfo.size(), (qint64)newSize); } }