2 * Copyright (c) 2018-2019 Nokia.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
31 #include "exstringsStub.h"
32 #include "redismodule.h"
35 #include "CppUTest/TestHarness.h"
36 #include "CppUTestExt/MockSupport.h"
39 #define OBJ_OP_XX (1<<1) /* OP if key exist */
40 #define OBJ_OP_NX (1<<2) /* OP if key not exist */
41 #define OBJ_OP_IE (1<<4) /* OP if equal old value */
42 #define OBJ_OP_NE (1<<5) /* OP if not equal old value */
51 mock().ignoreOtherCalls();
62 TEST(exstring, OnLoad)
65 int ret = RedisModule_OnLoad(&ctx, 0, 0);
72 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
74 redisStrVec[0] = (RedisModuleString *)1;
75 redisStrVec[1] = (RedisModuleString *)1;
76 redisStrVec[2] = (RedisModuleString *)1;
77 redisStrVec[3] = (RedisModuleString *)1;
79 mock().setData("RedisModule_OpenKey_have", 1);
80 mock().setData("RedisModule_KeyType_str", 1);
81 mock().setData("RedisModule_String_same", 1);
82 mock().setData("RedisModule_CallReplyType_null", 1);
84 int ret = SetIE_RedisCommand(&ctx, redisStrVec, 4);
92 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
94 redisStrVec[0] = (RedisModuleString *)1;
95 redisStrVec[1] = (RedisModuleString *)1;
96 redisStrVec[2] = (RedisModuleString *)1;
97 redisStrVec[3] = (RedisModuleString *)1;
99 mock().setData("RedisModule_OpenKey_have", 1);
100 mock().setData("RedisModule_KeyType_str", 1);
101 mock().setData("RedisModule_String_same", 1);
102 int ret = SetNE_RedisCommand(&ctx,redisStrVec, 4);
104 delete []redisStrVec;
107 TEST(exstring, command_parameter_number_incorrect)
110 int ret = setStringGenericCommand(&ctx, 0, 3, OBJ_OP_IE);
115 TEST(exstring, setie_command_no_key)
118 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
120 redisStrVec[0] = (RedisModuleString *)1;
121 redisStrVec[1] = (RedisModuleString *)1;
122 redisStrVec[2] = (RedisModuleString *)1;
123 redisStrVec[3] = (RedisModuleString *)1;
124 mock().setData("RedisModule_OpenKey_no", 1);
126 int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_IE);
128 delete []redisStrVec;
133 TEST(exstring, setie_command_has_key_set)
136 //RedisModuleString str;
137 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
139 redisStrVec[0] = (RedisModuleString *)1;
140 redisStrVec[1] = (RedisModuleString *)1;
141 redisStrVec[2] = (RedisModuleString *)1;
142 redisStrVec[3] = (RedisModuleString *)1;
144 mock().setData("RedisModule_OpenKey_have", 1);
145 mock().setData("RedisModule_KeyType_set", 1);
146 int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_IE);
147 CHECK_EQUAL(ret, REDISMODULE_OK);
148 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1);
149 delete []redisStrVec;
153 TEST(exstring, setie_command_key_string_nosame)
156 //RedisModuleString str;
157 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
159 redisStrVec[0] = (RedisModuleString *)1;
160 redisStrVec[1] = (RedisModuleString *)1;
161 redisStrVec[2] = (RedisModuleString *)1;
162 redisStrVec[3] = (RedisModuleString *)1;
164 mock().setData("RedisModule_OpenKey_have", 1);
165 mock().setData("RedisModule_KeyType_str", 1);
167 mock().setData("RedisModule_String_nosame", 1);
170 int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_IE);
172 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
173 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
174 delete []redisStrVec;
178 TEST(exstring, setie_command_key_same_string_reply)
181 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
183 redisStrVec[0] = (RedisModuleString *)1;
184 redisStrVec[1] = (RedisModuleString *)1;
185 redisStrVec[2] = (RedisModuleString *)1;
186 redisStrVec[3] = (RedisModuleString *)1;
188 mock().setData("RedisModule_OpenKey_have", 1);
189 mock().setData("RedisModule_KeyType_str", 1);
190 mock().setData("RedisModule_String_same", 1);
191 mock().setData("RedisModule_CallReplyType_null", 1);
193 int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_IE);
195 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
196 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
197 delete []redisStrVec;
202 TEST(exstring, setne_command_key_string_same_replrstr)
205 //RedisModuleString str;
206 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
208 redisStrVec[0] = (RedisModuleString *)1;
209 redisStrVec[1] = (RedisModuleString *)1;
210 redisStrVec[2] = (RedisModuleString *)1;
211 redisStrVec[3] = (RedisModuleString *)1;
213 mock().setData("RedisModule_OpenKey_have", 1);
214 mock().setData("RedisModule_KeyType_str", 1);
215 mock().setData("RedisModule_String_same", 1);
216 //mock().setData("RedisModule_CallReplyType_str", 1);
218 int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_NE);
220 delete []redisStrVec;
224 TEST(exstring, setne_command_setne_key_string_nosame_replrstr)
227 //RedisModuleString str;
228 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
230 redisStrVec[0] = (RedisModuleString *)1;
231 redisStrVec[1] = (RedisModuleString *)1;
232 redisStrVec[2] = (RedisModuleString *)1;
233 redisStrVec[3] = (RedisModuleString *)1;
235 mock().setData("RedisModule_OpenKey_have", 1);
236 mock().setData("RedisModule_KeyType_str", 1);
237 mock().setData("RedisModule_String_nosame", 1);
238 mock().setData("RedisModule_CallReplyType_str", 1);
240 int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_NE);
242 delete []redisStrVec;
246 TEST(exstring, delie)
249 RedisModuleString ** redisStrVec = new (RedisModuleString*[3]);
251 redisStrVec[0] = (RedisModuleString *)1;
252 redisStrVec[1] = (RedisModuleString *)1;
253 redisStrVec[2] = (RedisModuleString *)1;
255 mock().setData("RedisModule_OpenKey_have", 1);
256 mock().setData("RedisModule_KeyType_str", 1);
257 mock().setData("RedisModule_String_same", 1);
258 mock().setData("RedisModule_CallReplyType_null", 1);
260 mock().expectOneCall("RedisModule_CloseKey");
261 int ret = DelIE_RedisCommand(&ctx, redisStrVec, 3);
263 mock().checkExpectations();
264 delete []redisStrVec;
267 TEST(exstring, delne)
270 RedisModuleString ** redisStrVec = new (RedisModuleString*[3]);
272 redisStrVec[0] = (RedisModuleString *)1;
273 redisStrVec[1] = (RedisModuleString *)1;
274 redisStrVec[2] = (RedisModuleString *)1;
276 mock().setData("RedisModule_OpenKey_have", 1);
277 mock().setData("RedisModule_KeyType_str", 1);
278 mock().setData("RedisModule_String_same", 1);
279 mock().expectOneCall("RedisModule_CloseKey");
280 int ret = DelNE_RedisCommand(&ctx,redisStrVec, 3);
282 mock().checkExpectations();
283 delete []redisStrVec;
286 TEST(exstring, del_command_parameter_number_incorrect)
290 ret = delStringGenericCommand(&ctx, 0, 2, OBJ_OP_IE);
294 ret = delStringGenericCommand(&ctx, 0, 4, OBJ_OP_NE);
298 TEST(exstring, delie_command_no_key)
301 RedisModuleString ** redisStrVec = new (RedisModuleString*[3]);
303 redisStrVec[0] = (RedisModuleString *)1;
304 redisStrVec[1] = (RedisModuleString *)1;
305 redisStrVec[2] = (RedisModuleString *)1;
306 mock().setData("RedisModule_OpenKey_no", 1);
308 int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_IE);
310 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
311 delete []redisStrVec;
315 TEST(exstring, delie_command_have_key_set)
318 //RedisModuleString str;
319 RedisModuleString ** redisStrVec = new (RedisModuleString*[3]);
321 redisStrVec[0] = (RedisModuleString *)1;
322 redisStrVec[1] = (RedisModuleString *)1;
323 redisStrVec[2] = (RedisModuleString *)1;
325 mock().setData("RedisModule_OpenKey_have", 1);
326 mock().setData("RedisModule_KeyType_set", 1);
327 mock().expectOneCall("RedisModule_CloseKey");
328 int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_IE);
329 CHECK_EQUAL(ret, REDISMODULE_OK);
330 mock().checkExpectations();
331 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1);
332 delete []redisStrVec;
335 TEST(exstring, delie_command_key_string_nosame)
338 //RedisModuleString str;
339 RedisModuleString ** redisStrVec = new (RedisModuleString*[3]);
341 redisStrVec[0] = (RedisModuleString *)1;
342 redisStrVec[1] = (RedisModuleString *)1;
343 redisStrVec[2] = (RedisModuleString *)1;
345 mock().setData("RedisModule_OpenKey_have", 1);
346 mock().setData("RedisModule_KeyType_str", 1);
348 mock().setData("RedisModule_String_nosame", 1);
351 mock().expectOneCall("RedisModule_CloseKey");
352 int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_IE);
354 mock().checkExpectations();
355 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
356 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
357 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
358 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
359 delete []redisStrVec;
364 TEST(exstring, delie_command_key_same_string_reply)
367 RedisModuleString ** redisStrVec = new (RedisModuleString*[3]);
369 redisStrVec[0] = (RedisModuleString *)1;
370 redisStrVec[1] = (RedisModuleString *)1;
371 redisStrVec[2] = (RedisModuleString *)1;
373 mock().setData("RedisModule_OpenKey_have", 1);
374 mock().setData("RedisModule_KeyType_str", 1);
375 mock().setData("RedisModule_String_same", 1);
376 mock().setData("RedisModule_CallReplyType_null", 1);
378 mock().expectOneCall("RedisModule_CloseKey");
379 int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_IE);
381 mock().checkExpectations();
382 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
383 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
384 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
385 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
386 delete []redisStrVec;
390 TEST(exstring, delne_command_key_string_same_reply)
393 //RedisModuleString str;
394 RedisModuleString ** redisStrVec = new (RedisModuleString*[3]);
396 redisStrVec[0] = (RedisModuleString *)1;
397 redisStrVec[1] = (RedisModuleString *)1;
398 redisStrVec[2] = (RedisModuleString *)1;
400 mock().setData("RedisModule_OpenKey_have", 1);
401 mock().setData("RedisModule_KeyType_str", 1);
402 mock().setData("RedisModule_String_same", 1);
403 mock().setData("RedisModule_CallReplyType_inter", 1);
405 mock().expectOneCall("RedisModule_CloseKey");
406 int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_NE);
408 mock().checkExpectations();
409 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
410 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
411 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
412 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
413 delete []redisStrVec;
417 TEST(exstring, delne_command_key_string_nosame_reply)
420 //RedisModuleString str;
421 RedisModuleString ** redisStrVec = new (RedisModuleString*[3]);
423 redisStrVec[0] = (RedisModuleString *)1;
424 redisStrVec[1] = (RedisModuleString *)1;
425 redisStrVec[2] = (RedisModuleString *)1;
427 mock().setData("RedisModule_OpenKey_have", 1);
428 mock().setData("RedisModule_KeyType_str", 1);
429 mock().setData("RedisModule_String_nosame", 1);
430 mock().setData("RedisModule_CallReplyType_inter", 1);
432 mock().expectOneCall("RedisModule_CloseKey");
433 int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_NE);
435 mock().checkExpectations();
436 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
437 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
438 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
439 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
440 delete []redisStrVec;
444 TEST(exstring, setpub)
447 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
449 redisStrVec[0] = (RedisModuleString *)1;
450 redisStrVec[1] = (RedisModuleString *)1;
451 redisStrVec[2] = (RedisModuleString *)1;
452 redisStrVec[3] = (RedisModuleString *)1;
453 redisStrVec[4] = (RedisModuleString *)1;
455 mock().setData("RedisModule_OpenKey_have", 1);
456 mock().setData("RedisModule_KeyType_str", 1);
457 mock().setData("RedisModule_String_same", 1);
458 mock().setData("RedisModule_CallReplyType_null", 1);
460 mock().expectOneCall("RedisModule_CloseKey");
461 int ret = SetPub_RedisCommand(&ctx, redisStrVec, 5);
462 CHECK_EQUAL(ret, REDISMODULE_OK);
463 mock().checkExpectations();
464 delete []redisStrVec;
467 TEST(exstring, setxxpub)
470 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
472 redisStrVec[0] = (RedisModuleString *)1;
473 redisStrVec[1] = (RedisModuleString *)1;
474 redisStrVec[2] = (RedisModuleString *)1;
475 redisStrVec[3] = (RedisModuleString *)1;
476 redisStrVec[4] = (RedisModuleString *)1;
478 mock().setData("RedisModule_OpenKey_have", 1);
479 mock().setData("RedisModule_KeyType_str", 1);
480 mock().setData("RedisModule_String_same", 1);
481 mock().setData("RedisModule_CallReplyType_null", 1);
483 mock().expectOneCall("RedisModule_CloseKey");
484 int ret = SetXXPub_RedisCommand(&ctx, redisStrVec, 5);
485 CHECK_EQUAL(ret, REDISMODULE_OK);
486 mock().checkExpectations();
487 delete []redisStrVec;
490 TEST(exstring, setnxpub)
493 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
495 redisStrVec[0] = (RedisModuleString *)1;
496 redisStrVec[1] = (RedisModuleString *)1;
497 redisStrVec[2] = (RedisModuleString *)1;
498 redisStrVec[3] = (RedisModuleString *)1;
499 redisStrVec[4] = (RedisModuleString *)1;
501 mock().setData("RedisModule_OpenKey_have", 1);
502 mock().setData("RedisModule_KeyType_str", 1);
503 mock().setData("RedisModule_String_same", 1);
504 mock().setData("RedisModule_CallReplyType_null", 1);
506 mock().expectOneCall("RedisModule_CloseKey");
507 int ret = SetNXPub_RedisCommand(&ctx, redisStrVec, 5);
508 CHECK_EQUAL(ret, REDISMODULE_OK);
509 mock().checkExpectations();
510 delete []redisStrVec;
513 TEST(exstring, setiepub)
516 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
518 redisStrVec[0] = (RedisModuleString *)1;
519 redisStrVec[1] = (RedisModuleString *)1;
520 redisStrVec[2] = (RedisModuleString *)1;
521 redisStrVec[3] = (RedisModuleString *)1;
522 redisStrVec[4] = (RedisModuleString *)1;
523 redisStrVec[5] = (RedisModuleString *)1;
525 mock().setData("RedisModule_OpenKey_have", 1);
526 mock().setData("RedisModule_KeyType_str", 1);
527 mock().setData("RedisModule_String_same", 1);
528 mock().setData("RedisModule_CallReplyType_null", 1);
530 mock().expectOneCall("RedisModule_CloseKey");
531 int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6);
532 CHECK_EQUAL(ret, REDISMODULE_OK);
533 mock().checkExpectations();
534 delete []redisStrVec;
537 TEST(exstring, setnepub)
540 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
542 redisStrVec[0] = (RedisModuleString *)1;
543 redisStrVec[1] = (RedisModuleString *)1;
544 redisStrVec[2] = (RedisModuleString *)1;
545 redisStrVec[3] = (RedisModuleString *)1;
546 redisStrVec[4] = (RedisModuleString *)1;
547 redisStrVec[5] = (RedisModuleString *)1;
549 mock().setData("RedisModule_OpenKey_have", 1);
550 mock().setData("RedisModule_KeyType_str", 1);
551 mock().setData("RedisModule_String_same", 1);
552 mock().setData("RedisModule_CallReplyType_null", 1);
554 mock().expectOneCall("RedisModule_CloseKey");
555 int ret = SetNEPub_RedisCommand(&ctx, redisStrVec, 6);
556 CHECK_EQUAL(ret, REDISMODULE_OK);
557 mock().checkExpectations();
558 delete []redisStrVec;
561 TEST(exstring, setpub_command_parameter_number_incorrect)
565 ret = setPubStringGenericCommand(&ctx, 0, 2, OBJ_OP_NO);
566 CHECK_EQUAL(ret, REDISMODULE_ERR);
569 ret = setPubStringGenericCommand(&ctx, 0, 8, OBJ_OP_NO);
570 CHECK_EQUAL(ret, REDISMODULE_ERR);
573 ret = setPubStringGenericCommand(&ctx, 0, 3, OBJ_OP_XX);
574 CHECK_EQUAL(ret, REDISMODULE_ERR);
577 ret = setPubStringGenericCommand(&ctx, 0, 6, OBJ_OP_NX);
578 CHECK_EQUAL(ret, REDISMODULE_ERR);
581 ret = setPubStringGenericCommand(&ctx, 0, 4, OBJ_OP_IE);
582 CHECK_EQUAL(ret, REDISMODULE_ERR);
585 ret = setPubStringGenericCommand(&ctx, 0, 8, OBJ_OP_NE);
586 CHECK_EQUAL(ret, REDISMODULE_ERR);
589 TEST(exstring, setpub_command_no_key_replynull)
592 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
594 redisStrVec[0] = (RedisModuleString *)0;
595 redisStrVec[1] = (RedisModuleString *)1;
596 redisStrVec[2] = (RedisModuleString *)2;
597 redisStrVec[3] = (RedisModuleString *)3;
598 redisStrVec[4] = (RedisModuleString *)4;
600 mock().setData("RedisModule_KeyType_empty", 1);
601 mock().setData("RedisModule_CallReplyType_null", 1);
603 mock().expectOneCall("RedisModule_CloseKey");
604 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NO);
605 CHECK_EQUAL(ret, REDISMODULE_OK);
606 mock().checkExpectations();
607 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
608 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
609 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
610 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
612 delete []redisStrVec;
616 TEST(exstring, setpub_command_no_key_replystr)
619 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
621 redisStrVec[0] = (RedisModuleString *)0;
622 redisStrVec[1] = (RedisModuleString *)1;
623 redisStrVec[2] = (RedisModuleString *)2;
624 redisStrVec[3] = (RedisModuleString *)3;
625 redisStrVec[4] = (RedisModuleString *)4;
627 mock().setData("RedisModule_KeyType_empty", 1);
628 mock().setData("RedisModule_CallReplyType_str", 1);
630 mock().expectOneCall("RedisModule_CloseKey");
631 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NO);
632 CHECK_EQUAL(ret, REDISMODULE_OK);
633 mock().checkExpectations();
634 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
635 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
636 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
637 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
639 delete []redisStrVec;
643 TEST(exstring, setxxpub_command_has_no_key)
646 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
648 redisStrVec[0] = (RedisModuleString *)0;
649 redisStrVec[1] = (RedisModuleString *)1;
650 redisStrVec[2] = (RedisModuleString *)2;
651 redisStrVec[3] = (RedisModuleString *)3;
652 redisStrVec[4] = (RedisModuleString *)4;
654 mock().setData("RedisModule_KeyType_empty", 1);
655 mock().setData("RedisModule_CallReplyType_null", 1);
657 mock().expectOneCall("RedisModule_CloseKey");
658 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_XX);
660 CHECK_EQUAL(ret, REDISMODULE_OK);
661 mock().checkExpectations();
662 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
663 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
664 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
665 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
666 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
668 delete []redisStrVec;
672 TEST(exstring, setxxpub_command_parameter_has_key_set)
675 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
677 redisStrVec[0] = (RedisModuleString *)0;
678 redisStrVec[1] = (RedisModuleString *)1;
679 redisStrVec[2] = (RedisModuleString *)2;
680 redisStrVec[3] = (RedisModuleString *)3;
681 redisStrVec[4] = (RedisModuleString *)4;
683 mock().setData("RedisModule_KeyType_set", 1);
685 mock().expectOneCall("RedisModule_CloseKey");
686 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_XX);
688 CHECK_EQUAL(ret, REDISMODULE_OK);
689 mock().checkExpectations();
690 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1);
691 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
692 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
693 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
694 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
696 delete []redisStrVec;
700 TEST(exstring, setxxpub_command_has_key_string)
703 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
705 redisStrVec[0] = (RedisModuleString *)0;
706 redisStrVec[1] = (RedisModuleString *)1;
707 redisStrVec[2] = (RedisModuleString *)2;
708 redisStrVec[3] = (RedisModuleString *)3;
709 redisStrVec[4] = (RedisModuleString *)4;
711 mock().setData("RedisModule_KeyType_str", 1);
712 mock().setData("RedisModule_CallReplyType_str", 1);
714 mock().expectOneCall("RedisModule_CloseKey");
715 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_XX);
717 CHECK_EQUAL(ret, REDISMODULE_OK);
718 mock().checkExpectations();
719 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
720 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
721 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
722 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
723 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
725 delete []redisStrVec;
730 TEST(exstring, setnxpub_command_has_key_string)
733 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
735 redisStrVec[0] = (RedisModuleString *)0;
736 redisStrVec[1] = (RedisModuleString *)1;
737 redisStrVec[2] = (RedisModuleString *)2;
738 redisStrVec[3] = (RedisModuleString *)3;
739 redisStrVec[4] = (RedisModuleString *)4;
741 mock().setData("RedisModule_KeyType_str", 1);
742 mock().setData("RedisModule_CallReplyType_null", 1);
744 mock().expectOneCall("RedisModule_CloseKey");
745 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NX);
747 CHECK_EQUAL(ret, REDISMODULE_OK);
748 mock().checkExpectations();
749 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
750 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
751 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
752 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
753 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
755 delete []redisStrVec;
759 TEST(exstring, setnxpub_command_has_no_key)
762 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
764 redisStrVec[0] = (RedisModuleString *)0;
765 redisStrVec[1] = (RedisModuleString *)1;
766 redisStrVec[2] = (RedisModuleString *)2;
767 redisStrVec[3] = (RedisModuleString *)3;
768 redisStrVec[4] = (RedisModuleString *)4;
770 mock().setData("RedisModule_KeyType_empty", 1);
771 mock().setData("RedisModule_CallReplyType_str", 1);
773 mock().expectOneCall("RedisModule_CloseKey");
774 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NX);
776 CHECK_EQUAL(ret, REDISMODULE_OK);
777 mock().checkExpectations();
778 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
779 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
780 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
781 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
782 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
784 delete []redisStrVec;
790 TEST(exstring, setiepub_command_has_no_key)
793 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
795 redisStrVec[0] = (RedisModuleString *)0;
796 redisStrVec[1] = (RedisModuleString *)1;
797 redisStrVec[2] = (RedisModuleString *)2;
798 redisStrVec[3] = (RedisModuleString *)3;
799 redisStrVec[4] = (RedisModuleString *)4;
800 redisStrVec[5] = (RedisModuleString *)5;
802 mock().setData("RedisModule_KeyType_empty", 1);
803 mock().setData("RedisModule_CallReplyType_str", 1);
805 mock().expectOneCall("RedisModule_CloseKey");
806 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 6, OBJ_OP_IE);
808 CHECK_EQUAL(ret, REDISMODULE_OK);
809 mock().checkExpectations();
810 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
811 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
812 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
813 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
814 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
816 delete []redisStrVec;
821 TEST(exstring, setiepub_command_key_string_nosame)
824 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
826 redisStrVec[0] = (RedisModuleString *)0;
827 redisStrVec[1] = (RedisModuleString *)1;
828 redisStrVec[2] = (RedisModuleString *)2;
829 redisStrVec[3] = (RedisModuleString *)3;
830 redisStrVec[4] = (RedisModuleString *)4;
831 redisStrVec[5] = (RedisModuleString *)5;
833 mock().setData("RedisModule_KeyType_str", 1);
834 mock().setData("RedisModule_CallReplyType_str", 1);
835 mock().setData("RedisModule_String_nosame", 1);
837 mock().expectOneCall("RedisModule_CloseKey");
838 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 6, OBJ_OP_IE);
840 CHECK_EQUAL(ret, REDISMODULE_OK);
841 mock().checkExpectations();
842 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
843 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
844 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
845 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
846 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
848 delete []redisStrVec;
852 TEST(exstring, setiepub_command_key_same_string_replynull)
855 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
857 redisStrVec[0] = (RedisModuleString *)0;
858 redisStrVec[1] = (RedisModuleString *)1;
859 redisStrVec[2] = (RedisModuleString *)2;
860 redisStrVec[3] = (RedisModuleString *)3;
861 redisStrVec[4] = (RedisModuleString *)4;
862 redisStrVec[5] = (RedisModuleString *)5;
864 mock().setData("RedisModule_KeyType_str", 1);
865 mock().setData("RedisModule_String_same", 1);
866 mock().setData("RedisModule_CallReplyType_null", 1);
868 mock().expectOneCall("RedisModule_CloseKey");
869 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 6, OBJ_OP_IE);
871 CHECK_EQUAL(ret, REDISMODULE_OK);
872 mock().checkExpectations();
873 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
874 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
875 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
876 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
877 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
879 delete []redisStrVec;
883 TEST(exstring, setiepub_command_key_same_string_reply)
886 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
888 redisStrVec[0] = (RedisModuleString *)0;
889 redisStrVec[1] = (RedisModuleString *)1;
890 redisStrVec[2] = (RedisModuleString *)2;
891 redisStrVec[3] = (RedisModuleString *)3;
892 redisStrVec[4] = (RedisModuleString *)4;
893 redisStrVec[5] = (RedisModuleString *)5;
895 mock().setData("RedisModule_KeyType_str", 1);
896 mock().setData("RedisModule_String_same", 1);
897 mock().setData("RedisModule_CallReplyType_str", 1);
899 mock().expectOneCall("RedisModule_CloseKey");
900 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 6, OBJ_OP_IE);
902 CHECK_EQUAL(ret, REDISMODULE_OK);
903 mock().checkExpectations();
904 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
905 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
906 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
907 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
908 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
910 delete []redisStrVec;
914 TEST(exstring, setnepub_command_has_no_key)
917 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
919 redisStrVec[0] = (RedisModuleString *)0;
920 redisStrVec[1] = (RedisModuleString *)1;
921 redisStrVec[2] = (RedisModuleString *)2;
922 redisStrVec[3] = (RedisModuleString *)3;
923 redisStrVec[4] = (RedisModuleString *)4;
924 redisStrVec[5] = (RedisModuleString *)5;
926 mock().setData("RedisModule_KeyType_empty", 1);
927 mock().setData("RedisModule_CallReplyType_str", 1);
928 mock().setData("RedisModule_String_nosame", 1);
930 mock().expectOneCall("RedisModule_CloseKey");
931 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 6, OBJ_OP_NE);
933 CHECK_EQUAL(ret, REDISMODULE_OK);
934 mock().checkExpectations();
935 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
936 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
937 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
938 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
939 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
941 delete []redisStrVec;
945 TEST(exstring, setnepub_command_key_string_same_reply)
948 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
950 redisStrVec[0] = (RedisModuleString *)0;
951 redisStrVec[1] = (RedisModuleString *)1;
952 redisStrVec[2] = (RedisModuleString *)2;
953 redisStrVec[3] = (RedisModuleString *)3;
954 redisStrVec[4] = (RedisModuleString *)4;
955 redisStrVec[5] = (RedisModuleString *)5;
957 mock().setData("RedisModule_KeyType_str", 1);
958 mock().setData("RedisModule_String_same", 1);
959 mock().setData("RedisModule_CallReplyType_str", 1);
961 mock().expectOneCall("RedisModule_CloseKey");
962 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 6, OBJ_OP_NE);
964 CHECK_EQUAL(ret, REDISMODULE_OK);
965 mock().checkExpectations();
966 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
967 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
968 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
969 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
970 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
972 delete []redisStrVec;
977 TEST(exstring, setnepub_command_key_string_nosame_reply)
980 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
982 redisStrVec[0] = (RedisModuleString *)0;
983 redisStrVec[1] = (RedisModuleString *)1;
984 redisStrVec[2] = (RedisModuleString *)2;
985 redisStrVec[3] = (RedisModuleString *)3;
986 redisStrVec[4] = (RedisModuleString *)4;
987 redisStrVec[5] = (RedisModuleString *)5;
989 mock().setData("RedisModule_KeyType_str", 1);
990 mock().setData("RedisModule_CallReplyType_str", 1);
991 mock().setData("RedisModule_String_nosame", 1);
993 mock().expectOneCall("RedisModule_CloseKey");
994 int ret = setPubStringGenericCommand(&ctx, redisStrVec, 6, OBJ_OP_NE);
996 CHECK_EQUAL(ret, REDISMODULE_OK);
997 mock().checkExpectations();
998 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
999 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
1000 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
1001 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1002 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
1004 delete []redisStrVec;
1008 TEST(exstring, delpub)
1011 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
1013 redisStrVec[0] = (RedisModuleString *)1;
1014 redisStrVec[1] = (RedisModuleString *)1;
1015 redisStrVec[2] = (RedisModuleString *)1;
1016 redisStrVec[3] = (RedisModuleString *)1;
1018 mock().setData("RedisModule_OpenKey_have", 1);
1019 mock().setData("RedisModule_KeyType_str", 1);
1020 mock().setData("RedisModule_String_same", 1);
1021 mock().setData("RedisModule_CallReplyType_null", 1);
1023 int ret = DelPub_RedisCommand(&ctx, redisStrVec, 4);
1024 CHECK_EQUAL(ret, REDISMODULE_OK);
1026 delete []redisStrVec;
1029 TEST(exstring, deliepub)
1032 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1034 redisStrVec[0] = (RedisModuleString *)1;
1035 redisStrVec[1] = (RedisModuleString *)1;
1036 redisStrVec[2] = (RedisModuleString *)1;
1037 redisStrVec[3] = (RedisModuleString *)1;
1038 redisStrVec[4] = (RedisModuleString *)1;
1040 mock().setData("RedisModule_OpenKey_have", 1);
1041 mock().setData("RedisModule_KeyType_str", 1);
1042 mock().setData("RedisModule_String_same", 1);
1043 mock().setData("RedisModule_CallReplyType_null", 1);
1045 mock().expectOneCall("RedisModule_CloseKey");
1046 int ret = DelIEPub_RedisCommand(&ctx, redisStrVec, 5);
1047 CHECK_EQUAL(ret, REDISMODULE_OK);
1048 mock().checkExpectations();
1049 delete []redisStrVec;
1052 TEST(exstring, delnepub)
1055 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1057 redisStrVec[0] = (RedisModuleString *)1;
1058 redisStrVec[1] = (RedisModuleString *)1;
1059 redisStrVec[2] = (RedisModuleString *)1;
1060 redisStrVec[3] = (RedisModuleString *)1;
1061 redisStrVec[4] = (RedisModuleString *)1;
1063 mock().setData("RedisModule_OpenKey_have", 1);
1064 mock().setData("RedisModule_KeyType_str", 1);
1065 mock().setData("RedisModule_String_same", 1);
1066 mock().setData("RedisModule_CallReplyType_null", 1);
1068 mock().expectOneCall("RedisModule_CloseKey");
1069 int ret = DelNEPub_RedisCommand(&ctx, redisStrVec, 5);
1070 CHECK_EQUAL(ret, REDISMODULE_OK);
1071 mock().checkExpectations();
1072 delete []redisStrVec;
1075 TEST(exstring, delpub_command_parameter_number_incorrect)
1079 ret = delPubStringGenericCommand(&ctx, 0, 2, OBJ_OP_NO);
1080 CHECK_EQUAL(ret, REDISMODULE_ERR);
1083 ret = delPubStringGenericCommand(&ctx, 0, 4, OBJ_OP_IE);
1084 CHECK_EQUAL(ret, REDISMODULE_ERR);
1087 ret = delPubStringGenericCommand(&ctx, 0, 8, OBJ_OP_NE);
1088 CHECK_EQUAL(ret, REDISMODULE_ERR);
1091 TEST(exstring, delpub_command_reply_null)
1094 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1096 redisStrVec[0] = (RedisModuleString *)1;
1097 redisStrVec[1] = (RedisModuleString *)1;
1098 redisStrVec[2] = (RedisModuleString *)1;
1099 redisStrVec[3] = (RedisModuleString *)1;
1100 redisStrVec[4] = (RedisModuleString *)1;
1101 mock().setData("RedisModule_CallReplyInteger", 0);
1102 mock().setData("RedisModule_CallReplyType_inter", 1);
1103 mock().setData("RedisModule_Call_Return_Null", 0);
1105 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NO);
1106 CHECK_EQUAL(ret, 0);
1107 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1108 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1109 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1110 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 0);
1111 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
1112 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1);
1113 delete []redisStrVec;
1117 TEST(exstring, delpub_command_reply_error)
1120 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1122 redisStrVec[0] = (RedisModuleString *)1;
1123 redisStrVec[1] = (RedisModuleString *)1;
1124 redisStrVec[2] = (RedisModuleString *)1;
1125 redisStrVec[3] = (RedisModuleString *)1;
1126 redisStrVec[4] = (RedisModuleString *)1;
1127 mock().setData("RedisModule_CallReplyInteger", 0);
1128 mock().setData("RedisModule_CallReplyType_err", 1);
1130 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NO);
1131 CHECK_EQUAL(ret, REDISMODULE_ERR);
1132 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1133 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1134 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1135 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1136 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1137 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1138 delete []redisStrVec;
1142 TEST(exstring, delpub_command_has_no_key)
1145 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1147 redisStrVec[0] = (RedisModuleString *)1;
1148 redisStrVec[1] = (RedisModuleString *)1;
1149 redisStrVec[2] = (RedisModuleString *)1;
1150 redisStrVec[3] = (RedisModuleString *)1;
1151 redisStrVec[4] = (RedisModuleString *)1;
1152 mock().setData("RedisModule_CallReplyInteger", 0);
1153 mock().setData("RedisModule_CallReplyType_inter", 1);
1155 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NO);
1156 CHECK_EQUAL(ret, 0);
1157 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1158 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1159 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1160 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1161 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1162 delete []redisStrVec;
1166 TEST(exstring, deliepub_command_has_no_key)
1169 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1171 redisStrVec[0] = (RedisModuleString *)1;
1172 redisStrVec[1] = (RedisModuleString *)1;
1173 redisStrVec[2] = (RedisModuleString *)1;
1174 redisStrVec[3] = (RedisModuleString *)1;
1175 redisStrVec[4] = (RedisModuleString *)1;
1176 mock().setData("RedisModule_KeyType_empty", 1);
1178 mock().expectOneCall("RedisModule_CloseKey");
1179 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1180 CHECK_EQUAL(ret, 0);
1181 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
1182 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1183 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
1184 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1185 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
1186 delete []redisStrVec;
1190 TEST(exstring, deliepub_command_has_key_set)
1193 //RedisModuleString str;
1194 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1196 redisStrVec[0] = (RedisModuleString *)1;
1197 redisStrVec[1] = (RedisModuleString *)1;
1198 redisStrVec[2] = (RedisModuleString *)1;
1199 redisStrVec[3] = (RedisModuleString *)1;
1200 redisStrVec[4] = (RedisModuleString *)1;
1202 mock().setData("RedisModule_OpenKey_have", 1);
1203 mock().setData("RedisModule_KeyType_set", 1);
1204 mock().expectOneCall("RedisModule_CloseKey");
1205 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1206 CHECK_EQUAL(ret, REDISMODULE_OK);
1207 mock().checkExpectations();
1208 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1);
1209 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1210 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
1211 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1212 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
1214 delete []redisStrVec;
1217 TEST(exstring, deliepub_command_key_string_nosame)
1220 //RedisModuleString str;
1221 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1223 redisStrVec[0] = (RedisModuleString *)1;
1224 redisStrVec[1] = (RedisModuleString *)1;
1225 redisStrVec[2] = (RedisModuleString *)1;
1226 redisStrVec[3] = (RedisModuleString *)1;
1227 redisStrVec[4] = (RedisModuleString *)1;
1229 mock().setData("RedisModule_OpenKey_have", 1);
1230 mock().setData("RedisModule_KeyType_str", 1);
1231 mock().setData("RedisModule_String_nosame", 1);
1232 mock().expectOneCall("RedisModule_CloseKey");
1233 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1234 CHECK_EQUAL(ret, REDISMODULE_OK);
1235 mock().checkExpectations();
1236 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1237 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1238 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
1239 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1240 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
1241 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1243 delete []redisStrVec;
1246 TEST(exstring, deliepub_command_same_string_replynull)
1249 //RedisModuleString str;
1250 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1252 redisStrVec[0] = (RedisModuleString *)1;
1253 redisStrVec[1] = (RedisModuleString *)1;
1254 redisStrVec[2] = (RedisModuleString *)1;
1255 redisStrVec[3] = (RedisModuleString *)1;
1256 redisStrVec[4] = (RedisModuleString *)1;
1258 mock().setData("RedisModule_OpenKey_have", 1);
1259 mock().setData("RedisModule_KeyType_str", 1);
1260 mock().setData("RedisModule_String_same", 1);
1261 mock().setData("RedisModule_CallReplyType_null", 1);
1262 mock().expectOneCall("RedisModule_CloseKey");
1263 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1264 CHECK_EQUAL(ret, REDISMODULE_OK);
1265 mock().checkExpectations();
1266 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1267 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1268 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1269 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1270 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
1271 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
1273 delete []redisStrVec;
1276 TEST(exstring, deliepub_command_same_string_reply)
1279 //RedisModuleString str;
1280 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1282 redisStrVec[0] = (RedisModuleString *)1;
1283 redisStrVec[1] = (RedisModuleString *)1;
1284 redisStrVec[2] = (RedisModuleString *)1;
1285 redisStrVec[3] = (RedisModuleString *)1;
1286 redisStrVec[4] = (RedisModuleString *)1;
1288 mock().setData("RedisModule_OpenKey_have", 1);
1289 mock().setData("RedisModule_KeyType_str", 1);
1290 mock().setData("RedisModule_String_same", 1);
1291 mock().setData("RedisModule_CallReplyType_str", 1);
1292 mock().setData("RedisModule_CallReplyInteger", 1);
1293 mock().expectOneCall("RedisModule_CloseKey");
1294 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1295 CHECK_EQUAL(ret, REDISMODULE_OK);
1296 mock().checkExpectations();
1297 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1298 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1299 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1300 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
1301 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1302 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
1304 delete []redisStrVec;
1307 TEST(exstring, delnepub_command_same_string_reply)
1310 //RedisModuleString str;
1311 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1313 redisStrVec[0] = (RedisModuleString *)1;
1314 redisStrVec[1] = (RedisModuleString *)1;
1315 redisStrVec[2] = (RedisModuleString *)1;
1316 redisStrVec[3] = (RedisModuleString *)1;
1317 redisStrVec[4] = (RedisModuleString *)1;
1319 mock().setData("RedisModule_OpenKey_have", 1);
1320 mock().setData("RedisModule_KeyType_str", 1);
1321 mock().setData("RedisModule_String_same", 1);
1322 mock().setData("RedisModule_CallReplyType_str", 1);
1323 mock().expectOneCall("RedisModule_CloseKey");
1324 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NE);
1325 CHECK_EQUAL(ret, REDISMODULE_OK);
1326 mock().checkExpectations();
1327 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1328 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1329 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
1330 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1331 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
1332 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1334 delete []redisStrVec;
1337 TEST(exstring, delnepub_command_nosame_string_reply)
1340 //RedisModuleString str;
1341 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1343 redisStrVec[0] = (RedisModuleString *)1;
1344 redisStrVec[1] = (RedisModuleString *)1;
1345 redisStrVec[2] = (RedisModuleString *)1;
1346 redisStrVec[3] = (RedisModuleString *)1;
1347 redisStrVec[4] = (RedisModuleString *)1;
1349 mock().setData("RedisModule_OpenKey_have", 1);
1350 mock().setData("RedisModule_KeyType_str", 1);
1351 mock().setData("RedisModule_String_nosame", 1);
1352 mock().setData("RedisModule_CallReplyType_str", 1);
1353 mock().setData("RedisModule_CallReplyInteger", 1);
1354 mock().expectOneCall("RedisModule_CloseKey");
1355 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NE);
1356 CHECK_EQUAL(ret, REDISMODULE_OK);
1357 mock().checkExpectations();
1358 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1359 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1360 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1361 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
1362 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1363 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
1365 delete []redisStrVec;
1368 TEST(exstring, nget_command_parameter_number_incorrect)
1371 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1372 redisStrVec[0] = (RedisModuleString *)1;
1373 redisStrVec[1] = (RedisModuleString *)1;
1375 int ret = NGet_RedisCommand(&ctx, redisStrVec, 3);
1376 CHECK_EQUAL(ret, REDISMODULE_ERR);
1378 delete []redisStrVec;
1381 TEST(exstring, nget_command_zero_item)
1384 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1385 redisStrVec[0] = (RedisModuleString *)1;
1386 redisStrVec[1] = (RedisModuleString *)1;
1388 mock().setData("RedisModule_CallReplyLength", 0);
1389 int ret = NGet_RedisCommand(&ctx, redisStrVec, 2);
1390 CHECK_EQUAL(ret, REDISMODULE_OK);
1391 CHECK_EQUAL(mock().getData("KEYS").getIntValue(), 1);
1392 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1393 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1395 delete []redisStrVec;
1398 TEST(exstring, nget_command_none_zero_items)
1401 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1402 redisStrVec[0] = (RedisModuleString *)1;
1403 redisStrVec[1] = (RedisModuleString *)1;
1405 mock().setData("RedisModule_CallReplyLength", 3);
1406 int ret = NGet_RedisCommand(&ctx, redisStrVec, 2);
1407 CHECK_EQUAL(ret, REDISMODULE_OK);
1408 CHECK_EQUAL(mock().getData("KEYS").getIntValue(), 1);
1409 CHECK_EQUAL(mock().getData("MGET").getIntValue(), 1);
1410 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithArray").getIntValue(), 3*2);
1411 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithString").getIntValue(), 3*2);
1412 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
1414 delete []redisStrVec;
1417 TEST(exstring, ndel_command_parameter_parameter_number_incorrect)
1420 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1421 redisStrVec[0] = (RedisModuleString *)1;
1422 redisStrVec[1] = (RedisModuleString *)1;
1424 int ret = NDel_RedisCommand(&ctx, redisStrVec, 3);
1425 CHECK_EQUAL(ret, REDISMODULE_ERR);
1427 delete []redisStrVec;
1430 TEST(exstring, ndel_command_zero_item)
1433 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1434 redisStrVec[0] = (RedisModuleString *)1;
1435 redisStrVec[1] = (RedisModuleString *)1;
1437 mock().setData("RedisModule_CallReplyLength", 0);
1438 int ret = NDel_RedisCommand(&ctx, redisStrVec, 2);
1439 CHECK_EQUAL(ret, REDISMODULE_OK);
1440 CHECK_EQUAL(mock().getData("KEYS").getIntValue(), 1);
1441 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
1442 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1444 delete []redisStrVec;
1447 TEST(exstring, ndel_command_none_zero_items)
1450 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1451 redisStrVec[0] = (RedisModuleString *)1;
1452 redisStrVec[1] = (RedisModuleString *)1;
1454 mock().setData("RedisModule_CallReplyLength", 3);
1455 int ret = NDel_RedisCommand(&ctx, redisStrVec, 2);
1456 CHECK_EQUAL(ret, REDISMODULE_OK);
1457 CHECK_EQUAL(mock().getData("KEYS").getIntValue(), 1);
1458 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1459 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1460 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
1462 delete []redisStrVec;