Files
syncspirit/tests/029-diff-generic.cpp

31 lines
1.1 KiB
C++

// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2019-2023 Ivan Baidakou
#include "test-utils.h"
#include "access.h"
#include "model/cluster.h"
#include "model/misc/error_code.h"
#include "model/diff/cluster_diff.h"
using namespace syncspirit;
using namespace syncspirit::model;
using namespace syncspirit::proto;
using namespace syncspirit::test;
struct fail_diff_t : diff::cluster_diff_t {
outcome::result<void> apply_impl(cluster_t &) const noexcept override {
auto ec = make_error_code(error_code_t::source_device_not_exists);
return outcome::failure(ec);
}
};
TEST_CASE("generic cluster diff", "[model]") {
auto my_id = device_id_t::from_string("KHQNO2S-5QSILRK-YX4JZZ4-7L77APM-QNVGZJT-EKU7IFI-PNEPBMY-4MXFMQD").value();
auto my_device = device_t::create(my_id, "my-device").value();
auto cluster = cluster_ptr_t(new cluster_t(my_device, 1));
auto diff = diff::cluster_diff_ptr_t(new fail_diff_t());
CHECK(!cluster->is_tainted());
CHECK(!diff->apply(*cluster));
CHECK(cluster->is_tainted());
}