summaryrefslogtreecommitdiffstats
path: root/tests/manual/ios_assets/main.cpp
blob: 020f3f940be9db10ef043ee3ab7e367dbefe8139 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

#include <QtCore/QStandardPaths>
#include <QtCore/QDir>
#include <QtTest/QtTest>

#ifdef DEBUG_APP_DATA_LOCATION
    #include <QtCore/QDebug>
#endif

class AssetsIos : public QObject
{
    Q_OBJECT
private slots:
    void bundledTextFiles();
    void bundledAppIcons();
    void bundledImageInAssetCatalog();
};

void AssetsIos::bundledTextFiles()
{
#ifdef DEBUG_APP_DATA_LOCATION
    auto paths = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
    qDebug() << paths;

    for (const QString& path: paths) {
        QDir oneDir = QDir(path);
        qDebug() << "path" << path << "entries" << oneDir.entryList();
    }
#endif

    /*
    AppDataLocation returns the following 3 paths on iOS
     /var/mobile/Containers/Data/Application/uuid/Library/Application Support/tst_manual_ios_assets
     /Library/Application Support/tst_manual_ios_assets
     /private/var/containers/Bundle/Application/<uuid>/tst_manual_ios_assets.app

    The textFiles/foo.txt file only exists in the third location at
     /private/var/containers/Bundle/Application/<uuid>/tst_manual_ios_assets.app/textFiles/foo.txt

    AppDataLocation returns the following 3 paths on macOS
    /Users/<user>/Library/Application Support/tst_manual_ios_assets
    /Library/Application Support/tst_manual_ios_assets
    <build-dir>/tst_manual_ios_assets.app/Contents/Resources

    Once again the file only exists in the third location at
    <build-dir>/tst_manual_ios_assets.app/Contents/Resources/textFiles/foo.txt
    */
    QString textFile = QStandardPaths::locate(QStandardPaths::AppDataLocation,
                                              QStringLiteral("textFiles/foo.txt"));
    QVERIFY(!textFile.isEmpty());
}

void AssetsIos::bundledAppIcons() {
    // Confirm one of the app icons are present.
    QString appIcon = QStandardPaths::locate(QStandardPaths::AppDataLocation,
                                             QStringLiteral("AppIcon40x40@2x.png"));
    QVERIFY(!appIcon.isEmpty());
}

bool imageExistsInAssetCatalog(QString imageName);

void AssetsIos::bundledImageInAssetCatalog() {
    // Asset catalog images can be accessed only via a name, not a path.
    QVERIFY(imageExistsInAssetCatalog(QStringLiteral("Face")));
}

QTEST_MAIN(AssetsIos)
#include "main.moc"