// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include #include #include #ifdef DEBUG_APP_DATA_LOCATION #include #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//tst_manual_ios_assets.app The textFiles/foo.txt file only exists in the third location at /private/var/containers/Bundle/Application//tst_manual_ios_assets.app/textFiles/foo.txt AppDataLocation returns the following 3 paths on macOS /Users//Library/Application Support/tst_manual_ios_assets /Library/Application Support/tst_manual_ios_assets /tst_manual_ios_assets.app/Contents/Resources Once again the file only exists in the third location at /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"