overte-HifiExperiments/tests/shared/src/StorageTests.cpp
2017-06-05 08:54:05 -07:00

77 lines
2.5 KiB
C++

//
// 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 <memory>
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<MemoryStorage>(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<Storage>(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);
}
}