TEST(ReplicatedNodeSetTest, testSetMinusUpdatesReplicatedEndpointDetails) { auto endpoints = dafs::ReplicatedEndpoints { dafs::Endpoint { dafs::Address{"1.0.0.0", 1000}, dafs::Address{"1.0.0.1", 1001}, dafs::Identity("10000000-0000-0000-0000-000000000000") }, dafs::Endpoint { dafs::Address{"2.0.0.0", 2000}, dafs::Address{"2.0.0.1", 2001}, dafs::Identity("20000000-0000-0000-0000-000000000000") }, dafs::Endpoint { dafs::Address{"3.0.0.0", 3000}, dafs::Address{"3.0.0.1", 3001}, dafs::Identity("30000000-0000-0000-0000-000000000000") } }; MockReplication replication; dafs::ReplicatedNodeSet nodeset(replication); auto result = nodeset.SetMinus( dafs::Address{"1.1.0.0", 1100}, dafs::Address{"1.1.0.1", 1101}, dafs::Identity("11111111-1111-1111-1111-111111111111"), "a_fault_domain", "a_location", endpoints ); ASSERT_EQ("1.1.0.0", result.minus.management.ip); ASSERT_EQ(1100, result.minus.management.port); ASSERT_EQ("1.1.0.1", result.minus.replication.ip); ASSERT_EQ(1101, result.minus.replication.port); ASSERT_EQ("11111111-1111-1111-1111-111111111111", result.minus.identity.id); }
XPathValue ExpressionPath::evaluate(const XPathEvaluationContext &context) const { Nodeset result = _start_point->evaluate(context).nodeset(); for (auto &step : _steps) { Nodeset step_result; auto sub_context = context.new_context_for(result.size()); for (auto ¤t_node : result) { sub_context->next(current_node); auto selected = step->evaluate(*sub_context); // TODO: What if it is not a nodeset? step_result.add_nodeset(selected.nodeset()); } result = step_result; } return XPathValue(result); }