void test_set_inter(Ardb& db) { DBID dbid = 0; db.SClear(dbid, "myset1"); db.SClear(dbid, "myset2"); db.SClear(dbid, "myset3"); db.SAdd(dbid, "myset1", "a"); db.SAdd(dbid, "myset1", "b"); db.SAdd(dbid, "myset1", "c"); db.SAdd(dbid, "myset1", "d"); db.SAdd(dbid, "myset2", "c"); db.SAdd(dbid, "myset3", "a"); db.SAdd(dbid, "myset3", "c"); db.SAdd(dbid, "myset3", "e"); SliceArray keys; keys.push_back("myset1"); keys.push_back("myset2"); keys.push_back("myset3"); ValueSet values; db.SInter(dbid, keys, values); std::string str; CHECK_FATAL( values.size() != 1, "Sinter failed:"); CHECK_FATAL(values.begin()->ToString(str) != "c", "Sinter store failed:"); db.SInterStore(dbid, "myset2", keys); CHECK_FATAL( db.SCard(dbid, "myset2") != 1, "SInterStore myset2 failed:"); }
void test_set_diff(Ardb& db) { DBID dbid = 0; db.SClear(dbid, "myset1"); db.SClear(dbid, "myset2"); db.SClear(dbid, "myset3"); db.SAdd(dbid, "myset1", "a"); db.SAdd(dbid, "myset1", "b"); db.SAdd(dbid, "myset1", "c"); db.SAdd(dbid, "myset1", "d"); db.SAdd(dbid, "myset2", "c"); db.SAdd(dbid, "myset3", "a"); db.SAdd(dbid, "myset3", "c"); db.SAdd(dbid, "myset3", "e"); std::string str; SliceArray keys; keys.push_back("myset1"); keys.push_back("myset2"); keys.push_back("myset3"); ValueSet values; db.SDiff(dbid, keys, values); CHECK_FATAL(values.size() != 2, "Sdiff failed:"); CHECK_FATAL(values.begin()->ToString(str) != "b", "Sdiff store failed:"); //CHECK_FATAL(FATAL, values[1] != "d") << "Sdiff store failed:"; int len = db.SDiffStore(dbid, "myset2", keys); CHECK_FATAL(len != 2, "SDiffStore myset2 failed:%d", len); len = db.SCard(dbid, "myset2"); CHECK_FATAL(len != 2, "SDiffStore myset2 failed:%d", len); }
void test_set_union(Ardb& db) { DBID dbid = 0; db.SClear(dbid, "myset1"); db.SClear(dbid, "myset2"); db.SClear(dbid, "myset3"); db.SAdd(dbid, "myset1", "a"); db.SAdd(dbid, "myset1", "b"); db.SAdd(dbid, "myset1", "c"); db.SAdd(dbid, "myset1", "d"); db.SAdd(dbid, "myset2", "c"); db.SAdd(dbid, "myset3", "a"); db.SAdd(dbid, "myset3", "c"); db.SAdd(dbid, "myset3", "e"); SliceArray keys; keys.push_back("myset1"); keys.push_back("myset2"); keys.push_back("myset3"); ValueArray values; db.SUnion(dbid, keys, values); CHECK_FATAL(values.size() != 5, "SUnion failed:"); std::string str; CHECK_FATAL( values.begin()->ToString(str) != "a", "SUnion store failed:"); db.SUnionStore(dbid, "myset2", keys); CHECK_FATAL(db.SCard(dbid, "myset2") != 5, "SUnionStore myset2 failed:"); }
void test_sort_set(Ardb& db) { DBID dbid = 0; db.SClear(dbid, "myset"); db.SAdd(dbid, "myset", "ab3"); db.SAdd(dbid, "myset", "ab2"); db.SAdd(dbid, "myset", "ab1"); db.SAdd(dbid, "myset", "ab4"); StringArray args; ValueDataArray vs; db.Sort(dbid, "myset", args, vs); std::string str; CHECK_FATAL(vs.size() != 4, "sort result size error:%zu", vs.size()); CHECK_FATAL(vs[0].ToString(str) != "ab1", "sort result[0]:%s", str.c_str()); CHECK_FATAL(vs[1].ToString(str) != "ab2", "sort result[1]:%s", str.c_str()); CHECK_FATAL(vs[2].ToString(str) != "ab3", "sort result[2]:%s", str.c_str()); CHECK_FATAL(vs[3].ToString(str) != "ab4", "sort result[3]:%s", str.c_str()); vs.clear(); string_to_string_array("limit 1 2", args); db.Sort(dbid, "myset", args, vs); CHECK_FATAL(vs.size() != 2, "sort result size error:%zu", vs.size()); CHECK_FATAL(vs[0].ToString(str) != "ab2", "sort result[0]:%s", str.c_str()); CHECK_FATAL(vs[1].ToString(str) != "ab3", "sort result[1]:%s", str.c_str()); vs.clear(); args.clear(); string_to_string_array("by weight_*", args); db.Set(dbid, "weight_ab1", "1000"); db.Set(dbid, "weight_ab2", "900"); db.Set(dbid, "weight_ab3", "800"); db.Set(dbid, "weight_ab4", "700"); db.Sort(dbid, "myset", args, vs); CHECK_FATAL(vs.size() != 4, "sort result size error:%zu", vs.size()); CHECK_FATAL(vs[0].ToString(str) != "ab4", "sort result[0]:%s", str.c_str()); CHECK_FATAL(vs[1].ToString(str) != "ab3", "sort result[1]:%s", str.c_str()); CHECK_FATAL(vs[2].ToString(str) != "ab2", "sort result[2]:%s", str.c_str()); CHECK_FATAL(vs[3].ToString(str) != "ab1", "sort result[3]:%s", str.c_str()); db.HSet(dbid, "myhash_ab1", "field", "hash100"); db.HSet(dbid, "myhash_ab2", "field", "hash10"); db.HSet(dbid, "myhash_ab3", "field", "hash9"); db.HSet(dbid, "myhash_ab4", "field", "hash1000"); args.clear(); string_to_string_array("by weight_* get myhash_*->field get #", args); vs.clear(); db.Sort(dbid, "myset", args, vs); CHECK_FATAL(vs.size() != 8, "sort result size error:%zu", vs.size()); CHECK_FATAL(vs[0].ToString(str) != "hash1000", "sort result[0]:%s", str.c_str()); CHECK_FATAL(vs[2].ToString(str) != "hash9", "sort result[2]:%s", str.c_str()); CHECK_FATAL(vs[4].ToString(str) != "hash10", "sort result[4]:%s", str.c_str()); CHECK_FATAL(vs[6].ToString(str) != "hash100", "sort result[6]:%s", str.c_str()); CHECK_FATAL(vs[1].ToString(str) != "ab4", "sort result[1]:%s", str.c_str()); CHECK_FATAL(vs[3].ToString(str) != "ab3", "sort result[3]:%s", str.c_str()); CHECK_FATAL(vs[5].ToString(str) != "ab2", "sort result[5]:%s", str.c_str()); CHECK_FATAL(vs[7].ToString(str) != "ab1", "sort result[7]:%s", str.c_str()); }
void test_set_saddrem(Ardb& db) { DBID dbid = 0; db.SClear(dbid, "myset"); db.SAdd(dbid, "myset", "123"); db.SAdd(dbid, "myset", "123"); db.SAdd(dbid, "myset", "1231"); CHECK_FATAL( db.SCard(dbid, "myset") != 2, "sadd myset failed:%d", db.SCard(dbid, "myset")); db.SRem(dbid, "myset", "1231"); CHECK_FATAL( db.SCard(dbid, "myset") != 1, "srem myset failed:%d", db.SCard(dbid, "myset")); }
void test_set_member(Ardb& db) { DBID dbid = 0; std::string str; db.SClear(dbid, "myset"); db.SAdd(dbid, "myset", "v1"); db.SAdd(dbid, "myset", "v2"); db.SAdd(dbid, "myset", "v3"); CHECK_FATAL(db.SIsMember(dbid, "myset", "v0") != false, "SIsMember myset failed:"); ValueArray members; db.SMembers(dbid, "myset", members); CHECK_FATAL( members.size() != 3, "SMembers myset failed:"); CHECK_FATAL( members[0].ToString(str) != "v1", "SMembers myset failed:"); }
void test_set_expire(Ardb& db) { DBID dbid = 0; db.SClear(dbid, "myset"); db.SAdd(dbid, "myset", "123"); db.Expire(dbid, "myset", 1); CHECK_FATAL(db.Exists(dbid, "myset") == false, "Expire myset failed"); sleep(2); CHECK_FATAL(db.Exists(dbid, "myset") == true, "Expire myset failed"); }
void test_keys(Ardb& db) { DBID dbid = 0; db.HSet(dbid, "myhash_v0", "field", "100"); db.SAdd(dbid, "myset_v0", "field"); db.LPush(dbid, "mylist", "122"); db.ZAdd(dbid, "myzset", ValueData((int64) 3), "v0"); db.Set(dbid, "mykey", "12312"); StringArray ret; db.Keys(dbid, "my*", "", 100, ret); CHECK_FATAL(ret.size() < 5, "keys my* size error:%zu", ret.size()); ret.clear(); db.Keys(dbid, "*set*", "", 100, ret); CHECK_FATAL(ret.size() < 2, "keys *set* size error:%zu", ret.size()); }
void test_type(Ardb& db) { DBID dbid = 0; db.SAdd(dbid, "myset", "123"); db.LPush(dbid, "mylist", "value0"); db.ZAdd(dbid, "myzset1", ValueData((int64) 1), "one"); db.HSet(dbid, "myhash", "field1", "value1"); db.Set(dbid, "skey", "abc"); db.SetBit(dbid, "mybits", 1, 1); CHECK_FATAL(db.Type(dbid, "myset") != SET_META, "type failed."); CHECK_FATAL(db.Type(dbid, "mylist") != LIST_META, "type failed."); CHECK_FATAL(db.Type(dbid, "myzset1") != ZSET_META, "type failed."); CHECK_FATAL(db.Type(dbid, "myhash") != HASH_META, "type failed."); CHECK_FATAL(db.Type(dbid, "skey") != STRING_META, "type failed."); CHECK_FATAL(db.Type(dbid, "mybits") != BITSET_META, "type failed."); }