furi_valuemutex_test.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <furi.h>
  4. #include "furi_hal_delay.h"
  5. #include "minunit.h"
  6. void test_furi_valuemutex() {
  7. const int init_value = 0xdeadbeef;
  8. const int changed_value = 0x12345678;
  9. int value = init_value;
  10. bool result;
  11. ValueMutex valuemutex;
  12. // init mutex case
  13. result = init_mutex(&valuemutex, &value, sizeof(value));
  14. mu_assert(result, "init mutex failed");
  15. // acquire mutex case
  16. int* value_pointer = acquire_mutex(&valuemutex, 100);
  17. mu_assert_pointers_eq(value_pointer, &value);
  18. // second acquire mutex case
  19. int* value_pointer_second = acquire_mutex(&valuemutex, 100);
  20. mu_assert_pointers_eq(value_pointer_second, NULL);
  21. // change value case
  22. *value_pointer = changed_value;
  23. mu_assert_int_eq(value, changed_value);
  24. // release mutex case
  25. result = release_mutex(&valuemutex, &value);
  26. mu_assert(result, "release mutex failed");
  27. // TODO
  28. //acquire mutex blocking case
  29. //write mutex blocking case
  30. //read mutex blocking case
  31. mu_check(delete_mutex(&valuemutex));
  32. }