furi_valuemutex_test.c 1.0 KB

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