dragonfly/src/server/bloom_family_test.cc
Roman Gershman 7f0f624699
feat: add bf.(m)add and bf.(m)exists commands (#2801)
Adresses #1275

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-03-31 15:50:21 +03:00

54 lines
1.8 KiB
C++

// Copyright 2024, DragonflyDB authors. All rights reserved.
// See LICENSE for licensing terms.
//
#include "server/bloom_family.h"
#include "facade/facade_test.h"
#include "server/test_utils.h"
namespace dfly {
using testing::ElementsAre;
class BloomFamilyTest : public BaseFamilyTest {
protected:
};
TEST_F(BloomFamilyTest, Basic) {
auto resp = Run({"bf.reserve", "b1", "0.1", "32"});
EXPECT_EQ(resp, "OK");
EXPECT_EQ(Run({"type", "b1"}), "MBbloom--");
EXPECT_THAT(Run({"bf.add", "b1", "a"}), IntArg(1));
EXPECT_THAT(Run({"bf.add", "b1", "b"}), IntArg(1));
EXPECT_THAT(Run({"bf.add", "b1", "b"}), IntArg(0));
EXPECT_THAT(Run({"bf.add", "b2", "b"}), IntArg(1));
EXPECT_EQ(Run({"type", "b2"}), "MBbloom--");
EXPECT_THAT(Run({"bf.exists", "b2", "c"}), IntArg(0));
EXPECT_THAT(Run({"bf.exists", "b3", "c"}), IntArg(0));
EXPECT_THAT(Run({"bf.exists", "b2", "b"}), IntArg(1));
Run({"set", "str", "foo"});
EXPECT_THAT(Run({"bf.exists", "str", "b"}), IntArg(0));
}
TEST_F(BloomFamilyTest, Multiple) {
auto resp = Run({"bf.mexists", "bf1", "a", "b", "c"});
EXPECT_THAT(resp, RespArray(ElementsAre(IntArg(0), IntArg(0), IntArg(0))));
Run({"set", "str", "foo"});
resp = Run({"bf.mexists", "str", "a", "b", "c"});
EXPECT_THAT(resp, RespArray(ElementsAre(IntArg(0), IntArg(0), IntArg(0))));
resp = Run({"bf.madd", "str", "a"});
EXPECT_THAT(resp, ErrArg("WRONG"));
resp = Run({"bf.madd", "bf1", "a", "b", "c"});
EXPECT_THAT(resp, RespArray(ElementsAre(IntArg(1), IntArg(1), IntArg(1))));
resp = Run({"bf.madd", "bf1", "a", "b", "c"});
EXPECT_THAT(resp, RespArray(ElementsAre(IntArg(0), IntArg(0), IntArg(0))));
resp = Run({"bf.mexists", "bf1", "a", "b", "c"});
EXPECT_THAT(resp, RespArray(ElementsAre(IntArg(1), IntArg(1), IntArg(1))));
}
} // namespace dfly