mirror of
https://github.com/dragonflydb/dragonfly.git
synced 2025-05-10 18:05:44 +02:00
54 lines
1.8 KiB
C++
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
|