mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
bdc470a80e
The hash field in the picture-structure was in principle non-operational. It was set on loading, but never actually changed. The authoritative hash comes from the filename->hash map. Therefore, make this explicit by removing the hash field from the picture structure. Instead of filling the picture structure on loading, add the hash directly to the filename->hash map. This is done in the register_hash() function, which does not overwrite old entries. I.e. the local hash has priority over the save-file. This policy might be refined in the future. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
60 lines
1.9 KiB
C++
60 lines
1.9 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#include "testpicture.h"
|
|
#include "core/dive.h"
|
|
#include "core/file.h"
|
|
#include "core/divelist.h"
|
|
#include <QString>
|
|
#include <core/qthelper.h>
|
|
|
|
void TestPicture::initTestCase()
|
|
{
|
|
/* we need to manually tell that the resource exists, because we are using it as library. */
|
|
Q_INIT_RESOURCE(subsurface);
|
|
}
|
|
|
|
#define PIC1_NAME "/dives/images/wreck.jpg"
|
|
#define PIC2_NAME "/dives/images/data_after_EOI.jpg"
|
|
#define PIC1_HASH "929ad9499b7ae7a9e39ef63eb6c239604ac2adfa"
|
|
#define PIC2_HASH "fa8bd48f8f24017a81e1204f52300bd98b43d4a7"
|
|
|
|
void TestPicture::addPicture()
|
|
{
|
|
struct dive *dive;
|
|
struct picture *pic1, *pic2;
|
|
verbose = 1;
|
|
|
|
QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test44.xml"), 0);
|
|
dive = get_dive(0);
|
|
QVERIFY(dive != NULL);
|
|
pic1 = dive->picture_list;
|
|
// So far no picture in dive
|
|
QVERIFY(pic1 == NULL);
|
|
|
|
dive_create_picture(dive, SUBSURFACE_TEST_DATA "/dives/images/wreck.jpg", 0, false);
|
|
dive_create_picture(dive, SUBSURFACE_TEST_DATA "/dives/images/data_after_EOI.jpg", 0, false);
|
|
pic1 = dive->picture_list;
|
|
pic2 = pic1->next;
|
|
// Now there are two picture2
|
|
QVERIFY(pic1 != NULL);
|
|
QVERIFY(pic2 != NULL);
|
|
// 1st appearing at time 21:01
|
|
// 2nd appearing at time 22:01
|
|
QVERIFY(pic1->offset.seconds == 1261);
|
|
QVERIFY(pic1->latitude.udeg == 47934500);
|
|
QVERIFY(pic1->longitude.udeg == 11334500);
|
|
QVERIFY(pic2->offset.seconds == 1321);
|
|
|
|
QByteArray hash1 = hashFile(localFilePath(pic1->filename));
|
|
QByteArray hash2 = hashFile(localFilePath(pic2->filename));
|
|
learnHash(pic1->filename, PIC1_NAME, hash1);
|
|
learnHash(pic2->filename, PIC2_NAME, hash2);
|
|
QCOMPARE(hashstring(pic1->filename), PIC1_HASH);
|
|
QCOMPARE(hashstring(pic2->filename), PIC2_HASH);
|
|
QCOMPARE(hashstring(PIC1_NAME), PIC1_HASH);
|
|
QCOMPARE(hashstring(PIC2_NAME), PIC2_HASH);
|
|
QCOMPARE(localFilePath(pic1->filename), QString(PIC1_NAME));
|
|
QCOMPARE(localFilePath(pic2->filename), QString(PIC2_NAME));
|
|
}
|
|
|
|
|
|
QTEST_GUILESS_MAIN(TestPicture)
|