opt.hpp 881 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef __XRCU_TESTS_OPT__
  2. #define __XRCU_TESTS_OPT__ 1
  3. #include "../optional.hpp"
  4. #include "utils.hpp"
  5. namespace opt_test
  6. {
  7. void test_optional ()
  8. {
  9. xrcu::optional<std::string> opt;
  10. ASSERT (!opt.has_value ());
  11. opt.reset ();
  12. ASSERT (!opt.has_value ());
  13. opt = mkstr (100);
  14. ASSERT (opt.has_value ());
  15. *opt += mkstr (200);
  16. ASSERT (*opt == mkstr (100) + mkstr (200));
  17. opt->clear ();
  18. ASSERT (opt.has_value ());
  19. ASSERT (opt->empty ());
  20. opt.reset ();
  21. ASSERT (!opt.has_value ());
  22. std::string s = mkstr (300);
  23. opt = s;
  24. ASSERT (s == *opt);
  25. xrcu::optional<std::string> o2 { opt };
  26. ASSERT (*o2 == *opt);
  27. o2.reset ();
  28. ASSERT (opt.has_value ());
  29. xrcu::optional<std::string> o3 { mkstr (400) };
  30. ASSERT (o3.has_value ());
  31. }
  32. test_module optional_tests
  33. {
  34. "optional",
  35. {
  36. { "API", test_optional }
  37. }
  38. };
  39. } // namespace opt_test
  40. #endif