aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/test/mock_gid_to_lid_mapping.h
blob: 6cb657de2872f237d4849cd4c7f5a70e79aa93c2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once

#include <vespa/document/base/globalid.h>
#include <vespa/searchlib/common/i_gid_to_lid_mapper.h>
#include <vespa/searchlib/common/i_gid_to_lid_mapper_factory.h>
#include <map>
#include <memory>

namespace search::attribute::test {

using MockGidToLidMap = std::map<document::GlobalId, uint32_t>;

struct MockGidToLidMapper : public search::IGidToLidMapper {
    const MockGidToLidMap &_map;

    MockGidToLidMapper(const MockGidToLidMap &map)
        : _map(map)
    {
    }

    void foreach(const search::IGidToLidMapperVisitor &visitor) const override {
        for (const auto &kv : _map) {
            if (kv.second != 0) {
                visitor.visit(kv.first, kv.second);
            }
        }
    }
};

struct MockGidToLidMapperFactory : public search::IGidToLidMapperFactory {
    MockGidToLidMap _map;

    std::unique_ptr<search::IGidToLidMapper> getMapper() const override {
        return std::make_unique<MockGidToLidMapper>(_map);
    }
};

}