029-diff-generic.cpp 1003 B

1234567891011121314151617181920212223242526272829
  1. #include "catch.hpp"
  2. #include "test-utils.h"
  3. #include "access.h"
  4. #include "model/cluster.h"
  5. #include "model/misc/error_code.h"
  6. #include "model/diff/cluster_diff.h"
  7. using namespace syncspirit;
  8. using namespace syncspirit::model;
  9. using namespace syncspirit::proto;
  10. using namespace syncspirit::test;
  11. struct fail_diff_t : diff::cluster_diff_t {
  12. outcome::result<void> apply_impl(cluster_t &) const noexcept override {
  13. auto ec = make_error_code(error_code_t::source_device_not_exists);
  14. return outcome::failure(ec);
  15. }
  16. };
  17. TEST_CASE("generic cluster diff", "[model]") {
  18. auto my_id = device_id_t::from_string("KHQNO2S-5QSILRK-YX4JZZ4-7L77APM-QNVGZJT-EKU7IFI-PNEPBMY-4MXFMQD").value();
  19. auto my_device = device_t::create(my_id, "my-device").value();
  20. auto cluster = cluster_ptr_t(new cluster_t(my_device, 1));
  21. auto diff = diff::cluster_diff_ptr_t(new fail_diff_t());
  22. CHECK(!cluster->is_tainted());
  23. CHECK(!diff->apply(*cluster));
  24. CHECK(cluster->is_tainted());
  25. }