* fbt: reworking targets & assets handling WIP * fbt: dist fixes * fbt: moved SD card resources to owning apps * unit_tests: moved resources to app folder * github: updated unit_tests paths * github: packaging fixes * unit_tests: fixes * fbt: assets: internal cleanup * fbt: reworked assets handling * github: unit_tests: reintroducing fixes * minor cleanup * fbt: naming changes to reflect private nature of scons tools * fbt: resources: fixed dist archive paths * docs: updated paths * docs: updated more paths * docs: included "resources" parameter in app manifest docs; updated assets readme * updated gitignore for assets * github: updated action versions * unit_tests: restored timeout; scripts: assets: logging changes * gh: don't upload desktop animations for unit test run Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include <furi.c>
 | 
						|
#include "../minunit.h"
 | 
						|
#include <update_util/resources/manifest.h>
 | 
						|
 | 
						|
#define TAG "Manifest"
 | 
						|
 | 
						|
MU_TEST(manifest_type_test) {
 | 
						|
    mu_assert(ResourceManifestEntryTypeUnknown == 0, "ResourceManifestEntryTypeUnknown != 0\r\n");
 | 
						|
    mu_assert(ResourceManifestEntryTypeVersion == 1, "ResourceManifestEntryTypeVersion != 1\r\n");
 | 
						|
    mu_assert(
 | 
						|
        ResourceManifestEntryTypeTimestamp == 2, "ResourceManifestEntryTypeTimestamp != 2\r\n");
 | 
						|
    mu_assert(
 | 
						|
        ResourceManifestEntryTypeDirectory == 3, "ResourceManifestEntryTypeDirectory != 3\r\n");
 | 
						|
    mu_assert(ResourceManifestEntryTypeFile == 4, "ResourceManifestEntryTypeFile != 4\r\n");
 | 
						|
}
 | 
						|
 | 
						|
MU_TEST(manifest_iteration_test) {
 | 
						|
    bool result = true;
 | 
						|
    size_t counters[5] = {0};
 | 
						|
 | 
						|
    Storage* storage = furi_record_open(RECORD_STORAGE);
 | 
						|
    ResourceManifestReader* manifest_reader = resource_manifest_reader_alloc(storage);
 | 
						|
    do {
 | 
						|
        // Open manifest file
 | 
						|
        if(!resource_manifest_reader_open(manifest_reader, EXT_PATH("unit_tests/Manifest_test"))) {
 | 
						|
            result = false;
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        // Iterate forward
 | 
						|
        ResourceManifestEntry* entry_ptr = NULL;
 | 
						|
        while((entry_ptr = resource_manifest_reader_next(manifest_reader))) {
 | 
						|
            FURI_LOG_D(TAG, "F:%u:%s", entry_ptr->type, furi_string_get_cstr(entry_ptr->name));
 | 
						|
            if(entry_ptr->type > 4) {
 | 
						|
                mu_fail("entry_ptr->type > 4\r\n");
 | 
						|
                result = false;
 | 
						|
                break;
 | 
						|
            }
 | 
						|
            counters[entry_ptr->type]++;
 | 
						|
        }
 | 
						|
        if(!result) break;
 | 
						|
 | 
						|
        // Iterate backward
 | 
						|
        while((entry_ptr = resource_manifest_reader_previous(manifest_reader))) {
 | 
						|
            FURI_LOG_D(TAG, "B:%u:%s", entry_ptr->type, furi_string_get_cstr(entry_ptr->name));
 | 
						|
            if(entry_ptr->type > 4) {
 | 
						|
                mu_fail("entry_ptr->type > 4\r\n");
 | 
						|
                result = false;
 | 
						|
                break;
 | 
						|
            }
 | 
						|
            counters[entry_ptr->type]--;
 | 
						|
        }
 | 
						|
    } while(false);
 | 
						|
 | 
						|
    resource_manifest_reader_free(manifest_reader);
 | 
						|
    furi_record_close(RECORD_STORAGE);
 | 
						|
 | 
						|
    mu_assert(counters[ResourceManifestEntryTypeUnknown] == 0, "Unknown counter != 0\r\n");
 | 
						|
    mu_assert(counters[ResourceManifestEntryTypeVersion] == 0, "Version counter != 0\r\n");
 | 
						|
    mu_assert(counters[ResourceManifestEntryTypeTimestamp] == 0, "Timestamp counter != 0\r\n");
 | 
						|
    mu_assert(counters[ResourceManifestEntryTypeDirectory] == 0, "Directory counter != 0\r\n");
 | 
						|
    mu_assert(counters[ResourceManifestEntryTypeFile] == 0, "File counter != 0\r\n");
 | 
						|
 | 
						|
    mu_assert(result, "Manifest forward iterate failed\r\n");
 | 
						|
}
 | 
						|
 | 
						|
MU_TEST_SUITE(manifest_suite) {
 | 
						|
    MU_RUN_TEST(manifest_type_test);
 | 
						|
    MU_RUN_TEST(manifest_iteration_test);
 | 
						|
}
 | 
						|
 | 
						|
int run_minunit_test_manifest() {
 | 
						|
    MU_RUN_SUITE(manifest_suite);
 | 
						|
    return MU_EXIT_CODE;
 | 
						|
} |