| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #include <stdio.h>
- #include <string.h>
- #include <furi.h>
- #include "minunit.h"
- #include "furi-new.h"
- const int int_value_init = 0x1234;
- const int int_value_changed = 0x5678;
- osMessageQueueId_t test_messages;
- typedef struct {
- char text[256];
- bool result;
- } test_message;
- #define SEND_MESSAGE(value, data) \
- { \
- message.result = value; \
- snprintf(message.text, 256, "Error at line %d, %s", __LINE__, data); \
- osMessageQueuePut(test_messages, &message, 0U, 0U); \
- }
- void _furi_new_wait() {
- osThreadFlagsWait(0x0001U, osFlagsWaitAny, osWaitForever);
- }
- void _furi_new_continue(FuriAppId thread_id) {
- osThreadFlagsSet(thread_id, 0x0001U);
- }
- void _furi_new_main_app(void* p) {
- test_message message;
- _furi_new_wait();
- int another_test_value = int_value_init;
- furi_record_create("test/another_app_record", &another_test_value);
- SEND_MESSAGE(false, "dummy text");
- new_flapp_app_exit();
- }
- void test_furi_new() {
- test_message message;
- test_messages = osMessageQueueNew(1, sizeof(test_message), NULL);
- // init core
- new_furi_init();
- // launch test thread
- FuriAppId main_app = new_flapp_app_start(_furi_new_main_app, "main_app", 512, NULL);
- _furi_new_continue(main_app);
- while(1) {
- if(osMessageQueueGet(test_messages, &message, NULL, osWaitForever) == osOK) {
- if(message.result == true) {
- break;
- } else {
- mu_assert(false, message.text);
- }
- }
- };
- /*
- // test that "create" wont affect pointer value
- furi_record_create("test/record", &test_value);
- mu_assert_int_eq(test_value, int_value_init);
- // test that we get correct pointer
- int* test_value_pointer = furi_record_open("test/record");
- mu_assert_pointers_not_eq(test_value_pointer, NULL);
- mu_assert_pointers_eq(test_value_pointer, &test_value);
- *test_value_pointer = int_value_changed;
- mu_assert_int_eq(test_value, int_value_changed);
- // start another app
- new_record_available = osSemaphoreNew(1, 1, NULL);
- osSemaphoreAcquire(new_record_available, osWaitForever);
- osThreadAttr_t another_app_attr = {.name = "another_app", .stack_size = 512};
- osThreadId_t player = osThreadNew(another_app, NULL, &another_app_attr);
- // wait until app create record
- osSemaphoreAcquire(new_record_available, osWaitForever);
- // open record, test that record pointed to int_value_init
- test_value_pointer = furi_record_open("test/another_app_record");
- mu_assert_pointers_not_eq(test_value_pointer, NULL);
- mu_assert_int_eq(*test_value_pointer, int_value_init);
- // test that we can close, (unsubscribe) from record
- bool close_result = new_furi_close("test/another_app_record");
- mu_assert(close_result, "cannot close record");
- */
- }
|