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 int ret = SetPub_RedisCommand(&ctx, redisStrVec, 5);
461 CHECK_EQUAL(ret, REDISMODULE_OK);
462 mock().checkExpectations();
463 delete []redisStrVec;
466 TEST(exstring, setxxpub)
469 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
471 redisStrVec[0] = (RedisModuleString *)1;
472 redisStrVec[1] = (RedisModuleString *)1;
473 redisStrVec[2] = (RedisModuleString *)1;
474 redisStrVec[3] = (RedisModuleString *)1;
475 redisStrVec[4] = (RedisModuleString *)1;
477 mock().setData("RedisModule_OpenKey_have", 1);
478 mock().setData("RedisModule_KeyType_str", 1);
479 mock().setData("RedisModule_String_same", 1);
480 mock().setData("RedisModule_CallReplyType_null", 1);
482 mock().expectOneCall("RedisModule_CloseKey");
483 int ret = SetXXPub_RedisCommand(&ctx, redisStrVec, 5);
484 CHECK_EQUAL(ret, REDISMODULE_OK);
485 mock().checkExpectations();
486 delete []redisStrVec;
489 TEST(exstring, setnxpub)
492 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
494 redisStrVec[0] = (RedisModuleString *)1;
495 redisStrVec[1] = (RedisModuleString *)1;
496 redisStrVec[2] = (RedisModuleString *)1;
497 redisStrVec[3] = (RedisModuleString *)1;
498 redisStrVec[4] = (RedisModuleString *)1;
500 mock().setData("RedisModule_OpenKey_have", 1);
501 mock().setData("RedisModule_KeyType_str", 1);
502 mock().setData("RedisModule_String_same", 1);
503 mock().setData("RedisModule_CallReplyType_null", 1);
505 mock().expectOneCall("RedisModule_CloseKey");
506 int ret = SetNXPub_RedisCommand(&ctx, redisStrVec, 5);
507 CHECK_EQUAL(ret, REDISMODULE_OK);
508 mock().checkExpectations();
509 delete []redisStrVec;
512 TEST(exstring, setiepub)
515 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
517 redisStrVec[0] = (RedisModuleString *)1;
518 redisStrVec[1] = (RedisModuleString *)1;
519 redisStrVec[2] = (RedisModuleString *)1;
520 redisStrVec[3] = (RedisModuleString *)1;
521 redisStrVec[4] = (RedisModuleString *)1;
522 redisStrVec[5] = (RedisModuleString *)1;
524 mock().setData("RedisModule_OpenKey_have", 1);
525 mock().setData("RedisModule_KeyType_str", 1);
526 mock().setData("RedisModule_String_same", 1);
527 mock().setData("RedisModule_CallReplyType_null", 1);
529 mock().expectOneCall("RedisModule_CloseKey");
530 int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6);
531 CHECK_EQUAL(ret, REDISMODULE_OK);
532 mock().checkExpectations();
533 delete []redisStrVec;
536 TEST(exstring, setnepub)
539 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
541 redisStrVec[0] = (RedisModuleString *)1;
542 redisStrVec[1] = (RedisModuleString *)1;
543 redisStrVec[2] = (RedisModuleString *)1;
544 redisStrVec[3] = (RedisModuleString *)1;
545 redisStrVec[4] = (RedisModuleString *)1;
546 redisStrVec[5] = (RedisModuleString *)1;
548 mock().setData("RedisModule_OpenKey_have", 1);
549 mock().setData("RedisModule_KeyType_str", 1);
550 mock().setData("RedisModule_String_same", 1);
551 mock().setData("RedisModule_CallReplyType_null", 1);
553 mock().expectOneCall("RedisModule_CloseKey");
554 int ret = SetNEPub_RedisCommand(&ctx, redisStrVec, 6);
555 CHECK_EQUAL(ret, REDISMODULE_OK);
556 mock().checkExpectations();
557 delete []redisStrVec;
560 TEST(exstring, setpub_command_parameter_number_incorrect)
565 ret = SetPub_RedisCommand(&ctx, 0, 2);
566 CHECK_EQUAL(ret, REDISMODULE_ERR);
569 ret = SetPub_RedisCommand(&ctx, 0, 8);
570 CHECK_EQUAL(ret, REDISMODULE_ERR);
573 ret = SetXXPub_RedisCommand(&ctx, 0, 3);
574 CHECK_EQUAL(ret, REDISMODULE_ERR);
577 ret = SetXXPub_RedisCommand(&ctx, 0, 6);
578 CHECK_EQUAL(ret, REDISMODULE_ERR);
581 ret = SetNXPub_RedisCommand(&ctx, 0, 3);
582 CHECK_EQUAL(ret, REDISMODULE_ERR);
585 ret = SetNXPub_RedisCommand(&ctx, 0, 6);
586 CHECK_EQUAL(ret, REDISMODULE_ERR);
589 ret = SetIEPub_RedisCommand(&ctx, 0, 4);
590 CHECK_EQUAL(ret, REDISMODULE_ERR);
593 ret = SetIEPub_RedisCommand(&ctx, 0, 9);
594 CHECK_EQUAL(ret, REDISMODULE_ERR);
597 ret = SetNEPub_RedisCommand(&ctx, 0, 4);
598 CHECK_EQUAL(ret, REDISMODULE_ERR);
601 ret = SetNEPub_RedisCommand(&ctx, 0, 9);
602 CHECK_EQUAL(ret, REDISMODULE_ERR);
605 TEST(exstring, setpub_command_no_key_replynull)
608 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
610 redisStrVec[0] = (RedisModuleString *)0;
611 redisStrVec[1] = (RedisModuleString *)1;
612 redisStrVec[2] = (RedisModuleString *)2;
613 redisStrVec[3] = (RedisModuleString *)3;
614 redisStrVec[4] = (RedisModuleString *)4;
616 mock().setData("RedisModule_KeyType_empty", 1);
617 mock().setData("RedisModule_CallReplyType_null", 1);
619 int ret = SetPub_RedisCommand(&ctx, redisStrVec, 5);
620 CHECK_EQUAL(ret, REDISMODULE_OK);
621 mock().checkExpectations();
622 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
623 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
624 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
625 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
627 delete []redisStrVec;
631 TEST(exstring, setpub_command_no_key_replystr)
634 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
636 redisStrVec[0] = (RedisModuleString *)0;
637 redisStrVec[1] = (RedisModuleString *)1;
638 redisStrVec[2] = (RedisModuleString *)2;
639 redisStrVec[3] = (RedisModuleString *)3;
640 redisStrVec[4] = (RedisModuleString *)4;
642 mock().setData("RedisModule_KeyType_empty", 1);
643 mock().setData("RedisModule_CallReplyType_str", 1);
645 int ret = SetPub_RedisCommand(&ctx, redisStrVec, 5);
646 CHECK_EQUAL(ret, REDISMODULE_OK);
647 mock().checkExpectations();
648 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
649 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
650 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
651 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
653 delete []redisStrVec;
657 TEST(exstring, setxxpub_command_has_no_key)
660 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
662 redisStrVec[0] = (RedisModuleString *)0;
663 redisStrVec[1] = (RedisModuleString *)1;
664 redisStrVec[2] = (RedisModuleString *)2;
665 redisStrVec[3] = (RedisModuleString *)3;
666 redisStrVec[4] = (RedisModuleString *)4;
668 mock().setData("RedisModule_KeyType_empty", 1);
669 mock().setData("RedisModule_CallReplyType_null", 1);
671 mock().expectOneCall("RedisModule_CloseKey");
672 int ret = SetXXPub_RedisCommand(&ctx, redisStrVec, 5);
674 CHECK_EQUAL(ret, REDISMODULE_OK);
675 mock().checkExpectations();
676 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
677 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
678 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
679 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
680 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
682 delete []redisStrVec;
686 TEST(exstring, setxxpub_command_parameter_has_key_set)
689 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
691 redisStrVec[0] = (RedisModuleString *)0;
692 redisStrVec[1] = (RedisModuleString *)1;
693 redisStrVec[2] = (RedisModuleString *)2;
694 redisStrVec[3] = (RedisModuleString *)3;
695 redisStrVec[4] = (RedisModuleString *)4;
697 mock().setData("RedisModule_KeyType_set", 1);
699 mock().expectOneCall("RedisModule_CloseKey");
700 int ret = SetXXPub_RedisCommand(&ctx, redisStrVec, 5);
702 CHECK_EQUAL(ret, REDISMODULE_OK);
703 mock().checkExpectations();
704 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1);
705 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
706 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
707 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
708 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
710 delete []redisStrVec;
714 TEST(exstring, setxxpub_command_has_key_string)
717 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
719 redisStrVec[0] = (RedisModuleString *)0;
720 redisStrVec[1] = (RedisModuleString *)1;
721 redisStrVec[2] = (RedisModuleString *)2;
722 redisStrVec[3] = (RedisModuleString *)3;
723 redisStrVec[4] = (RedisModuleString *)4;
725 mock().setData("RedisModule_KeyType_str", 1);
726 mock().setData("RedisModule_CallReplyType_str", 1);
728 mock().expectOneCall("RedisModule_CloseKey");
729 int ret = SetXXPub_RedisCommand(&ctx, redisStrVec, 5);
731 CHECK_EQUAL(ret, REDISMODULE_OK);
732 mock().checkExpectations();
733 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
734 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
735 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
736 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
737 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
739 delete []redisStrVec;
744 TEST(exstring, setnxpub_command_has_key_string)
747 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
749 redisStrVec[0] = (RedisModuleString *)0;
750 redisStrVec[1] = (RedisModuleString *)1;
751 redisStrVec[2] = (RedisModuleString *)2;
752 redisStrVec[3] = (RedisModuleString *)3;
753 redisStrVec[4] = (RedisModuleString *)4;
755 mock().setData("RedisModule_KeyType_str", 1);
756 mock().setData("RedisModule_CallReplyType_null", 1);
758 mock().expectOneCall("RedisModule_CloseKey");
759 int ret = SetNXPub_RedisCommand(&ctx, redisStrVec, 5);
761 CHECK_EQUAL(ret, REDISMODULE_OK);
762 mock().checkExpectations();
763 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
764 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
765 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
766 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
767 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
769 delete []redisStrVec;
773 TEST(exstring, setnxpub_command_has_no_key)
776 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
778 redisStrVec[0] = (RedisModuleString *)0;
779 redisStrVec[1] = (RedisModuleString *)1;
780 redisStrVec[2] = (RedisModuleString *)2;
781 redisStrVec[3] = (RedisModuleString *)3;
782 redisStrVec[4] = (RedisModuleString *)4;
784 mock().setData("RedisModule_KeyType_empty", 1);
785 mock().setData("RedisModule_CallReplyType_str", 1);
787 mock().expectOneCall("RedisModule_CloseKey");
788 int ret = SetNXPub_RedisCommand(&ctx, redisStrVec, 5);
790 CHECK_EQUAL(ret, REDISMODULE_OK);
791 mock().checkExpectations();
792 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
793 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
794 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
795 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
796 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
798 delete []redisStrVec;
804 TEST(exstring, setiepub_command_has_no_key)
807 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
809 redisStrVec[0] = (RedisModuleString *)0;
810 redisStrVec[1] = (RedisModuleString *)1;
811 redisStrVec[2] = (RedisModuleString *)2;
812 redisStrVec[3] = (RedisModuleString *)3;
813 redisStrVec[4] = (RedisModuleString *)4;
814 redisStrVec[5] = (RedisModuleString *)5;
816 mock().setData("RedisModule_KeyType_empty", 1);
817 mock().setData("RedisModule_CallReplyType_str", 1);
819 mock().expectOneCall("RedisModule_CloseKey");
820 int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6);
822 CHECK_EQUAL(ret, REDISMODULE_OK);
823 mock().checkExpectations();
824 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
825 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
826 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
827 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
828 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
830 delete []redisStrVec;
835 TEST(exstring, setiepub_command_key_string_nosame)
838 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
840 redisStrVec[0] = (RedisModuleString *)0;
841 redisStrVec[1] = (RedisModuleString *)1;
842 redisStrVec[2] = (RedisModuleString *)2;
843 redisStrVec[3] = (RedisModuleString *)3;
844 redisStrVec[4] = (RedisModuleString *)4;
845 redisStrVec[5] = (RedisModuleString *)5;
847 mock().setData("RedisModule_KeyType_str", 1);
848 mock().setData("RedisModule_CallReplyType_str", 1);
849 mock().setData("RedisModule_String_nosame", 1);
851 mock().expectOneCall("RedisModule_CloseKey");
852 int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6);
854 CHECK_EQUAL(ret, REDISMODULE_OK);
855 mock().checkExpectations();
856 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
857 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
858 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
859 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
860 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
862 delete []redisStrVec;
866 TEST(exstring, setiepub_command_key_same_string_replynull)
869 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
871 redisStrVec[0] = (RedisModuleString *)0;
872 redisStrVec[1] = (RedisModuleString *)1;
873 redisStrVec[2] = (RedisModuleString *)2;
874 redisStrVec[3] = (RedisModuleString *)3;
875 redisStrVec[4] = (RedisModuleString *)4;
876 redisStrVec[5] = (RedisModuleString *)5;
878 mock().setData("RedisModule_KeyType_str", 1);
879 mock().setData("RedisModule_String_same", 1);
880 mock().setData("RedisModule_CallReplyType_null", 1);
882 mock().expectOneCall("RedisModule_CloseKey");
883 int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6);
885 CHECK_EQUAL(ret, REDISMODULE_OK);
886 mock().checkExpectations();
887 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
888 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
889 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
890 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
891 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
893 delete []redisStrVec;
897 TEST(exstring, setiepub_command_key_same_string_reply)
900 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
902 redisStrVec[0] = (RedisModuleString *)0;
903 redisStrVec[1] = (RedisModuleString *)1;
904 redisStrVec[2] = (RedisModuleString *)2;
905 redisStrVec[3] = (RedisModuleString *)3;
906 redisStrVec[4] = (RedisModuleString *)4;
907 redisStrVec[5] = (RedisModuleString *)5;
909 mock().setData("RedisModule_KeyType_str", 1);
910 mock().setData("RedisModule_String_same", 1);
911 mock().setData("RedisModule_CallReplyType_str", 1);
913 mock().expectOneCall("RedisModule_CloseKey");
914 int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6);
916 CHECK_EQUAL(ret, REDISMODULE_OK);
917 mock().checkExpectations();
918 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
919 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
920 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
921 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
922 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
924 delete []redisStrVec;
928 TEST(exstring, setnepub_command_has_no_key)
931 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
933 redisStrVec[0] = (RedisModuleString *)0;
934 redisStrVec[1] = (RedisModuleString *)1;
935 redisStrVec[2] = (RedisModuleString *)2;
936 redisStrVec[3] = (RedisModuleString *)3;
937 redisStrVec[4] = (RedisModuleString *)4;
938 redisStrVec[5] = (RedisModuleString *)5;
940 mock().setData("RedisModule_KeyType_empty", 1);
941 mock().setData("RedisModule_CallReplyType_str", 1);
942 mock().setData("RedisModule_String_nosame", 1);
944 mock().expectOneCall("RedisModule_CloseKey");
945 int ret = SetNEPub_RedisCommand(&ctx, redisStrVec, 6);
947 CHECK_EQUAL(ret, REDISMODULE_OK);
948 mock().checkExpectations();
949 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
950 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
951 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
952 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
953 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
955 delete []redisStrVec;
959 TEST(exstring, setnepub_command_key_string_same_reply)
962 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
964 redisStrVec[0] = (RedisModuleString *)0;
965 redisStrVec[1] = (RedisModuleString *)1;
966 redisStrVec[2] = (RedisModuleString *)2;
967 redisStrVec[3] = (RedisModuleString *)3;
968 redisStrVec[4] = (RedisModuleString *)4;
969 redisStrVec[5] = (RedisModuleString *)5;
971 mock().setData("RedisModule_KeyType_str", 1);
972 mock().setData("RedisModule_String_same", 1);
973 mock().setData("RedisModule_CallReplyType_str", 1);
975 mock().expectOneCall("RedisModule_CloseKey");
976 int ret = SetNEPub_RedisCommand(&ctx, redisStrVec, 6);
978 CHECK_EQUAL(ret, REDISMODULE_OK);
979 mock().checkExpectations();
980 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
981 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0);
982 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
983 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
984 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
986 delete []redisStrVec;
991 TEST(exstring, setnepub_command_key_string_nosame_reply)
994 RedisModuleString ** redisStrVec = new (RedisModuleString*[6]);
996 redisStrVec[0] = (RedisModuleString *)0;
997 redisStrVec[1] = (RedisModuleString *)1;
998 redisStrVec[2] = (RedisModuleString *)2;
999 redisStrVec[3] = (RedisModuleString *)3;
1000 redisStrVec[4] = (RedisModuleString *)4;
1001 redisStrVec[5] = (RedisModuleString *)5;
1003 mock().setData("RedisModule_KeyType_str", 1);
1004 mock().setData("RedisModule_CallReplyType_str", 1);
1005 mock().setData("RedisModule_String_nosame", 1);
1007 mock().expectOneCall("RedisModule_CloseKey");
1008 int ret = SetNEPub_RedisCommand(&ctx, redisStrVec, 6);
1010 CHECK_EQUAL(ret, REDISMODULE_OK);
1011 mock().checkExpectations();
1012 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1013 CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1);
1014 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
1015 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1016 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
1018 delete []redisStrVec;
1022 TEST(exstring, delpub)
1025 RedisModuleString ** redisStrVec = new (RedisModuleString*[4]);
1027 redisStrVec[0] = (RedisModuleString *)1;
1028 redisStrVec[1] = (RedisModuleString *)1;
1029 redisStrVec[2] = (RedisModuleString *)1;
1030 redisStrVec[3] = (RedisModuleString *)1;
1032 mock().setData("RedisModule_OpenKey_have", 1);
1033 mock().setData("RedisModule_KeyType_str", 1);
1034 mock().setData("RedisModule_String_same", 1);
1035 mock().setData("RedisModule_CallReplyType_null", 1);
1037 int ret = DelPub_RedisCommand(&ctx, redisStrVec, 4);
1038 CHECK_EQUAL(ret, REDISMODULE_OK);
1040 delete []redisStrVec;
1043 TEST(exstring, deliepub)
1046 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1048 redisStrVec[0] = (RedisModuleString *)1;
1049 redisStrVec[1] = (RedisModuleString *)1;
1050 redisStrVec[2] = (RedisModuleString *)1;
1051 redisStrVec[3] = (RedisModuleString *)1;
1052 redisStrVec[4] = (RedisModuleString *)1;
1054 mock().setData("RedisModule_OpenKey_have", 1);
1055 mock().setData("RedisModule_KeyType_str", 1);
1056 mock().setData("RedisModule_String_same", 1);
1057 mock().setData("RedisModule_CallReplyType_null", 1);
1059 mock().expectOneCall("RedisModule_CloseKey");
1060 int ret = DelIEPub_RedisCommand(&ctx, redisStrVec, 5);
1061 CHECK_EQUAL(ret, REDISMODULE_OK);
1062 mock().checkExpectations();
1063 delete []redisStrVec;
1066 TEST(exstring, delnepub)
1069 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1071 redisStrVec[0] = (RedisModuleString *)1;
1072 redisStrVec[1] = (RedisModuleString *)1;
1073 redisStrVec[2] = (RedisModuleString *)1;
1074 redisStrVec[3] = (RedisModuleString *)1;
1075 redisStrVec[4] = (RedisModuleString *)1;
1077 mock().setData("RedisModule_OpenKey_have", 1);
1078 mock().setData("RedisModule_KeyType_str", 1);
1079 mock().setData("RedisModule_String_same", 1);
1080 mock().setData("RedisModule_CallReplyType_null", 1);
1082 mock().expectOneCall("RedisModule_CloseKey");
1083 int ret = DelNEPub_RedisCommand(&ctx, redisStrVec, 5);
1084 CHECK_EQUAL(ret, REDISMODULE_OK);
1085 mock().checkExpectations();
1086 delete []redisStrVec;
1089 TEST(exstring, delpub_command_parameter_number_incorrect)
1093 ret = delPubStringGenericCommand(&ctx, 0, 2, OBJ_OP_NO);
1094 CHECK_EQUAL(ret, REDISMODULE_ERR);
1097 ret = delPubStringGenericCommand(&ctx, 0, 4, OBJ_OP_IE);
1098 CHECK_EQUAL(ret, REDISMODULE_ERR);
1101 ret = delPubStringGenericCommand(&ctx, 0, 8, OBJ_OP_NE);
1102 CHECK_EQUAL(ret, REDISMODULE_ERR);
1105 TEST(exstring, delpub_command_reply_null)
1108 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1110 redisStrVec[0] = (RedisModuleString *)1;
1111 redisStrVec[1] = (RedisModuleString *)1;
1112 redisStrVec[2] = (RedisModuleString *)1;
1113 redisStrVec[3] = (RedisModuleString *)1;
1114 redisStrVec[4] = (RedisModuleString *)1;
1115 mock().setData("RedisModule_CallReplyInteger", 0);
1116 mock().setData("RedisModule_CallReplyType_inter", 1);
1117 mock().setData("RedisModule_Call_Return_Null", 0);
1119 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NO);
1120 CHECK_EQUAL(ret, 0);
1121 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1122 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1123 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1124 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 0);
1125 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
1126 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1);
1127 delete []redisStrVec;
1131 TEST(exstring, delpub_command_reply_error)
1134 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1136 redisStrVec[0] = (RedisModuleString *)1;
1137 redisStrVec[1] = (RedisModuleString *)1;
1138 redisStrVec[2] = (RedisModuleString *)1;
1139 redisStrVec[3] = (RedisModuleString *)1;
1140 redisStrVec[4] = (RedisModuleString *)1;
1141 mock().setData("RedisModule_CallReplyInteger", 0);
1142 mock().setData("RedisModule_CallReplyType_err", 1);
1144 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NO);
1145 CHECK_EQUAL(ret, REDISMODULE_ERR);
1146 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1147 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1148 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1149 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1150 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1151 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1152 delete []redisStrVec;
1156 TEST(exstring, delpub_command_has_no_key)
1159 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1161 redisStrVec[0] = (RedisModuleString *)1;
1162 redisStrVec[1] = (RedisModuleString *)1;
1163 redisStrVec[2] = (RedisModuleString *)1;
1164 redisStrVec[3] = (RedisModuleString *)1;
1165 redisStrVec[4] = (RedisModuleString *)1;
1166 mock().setData("RedisModule_CallReplyInteger", 0);
1167 mock().setData("RedisModule_CallReplyType_inter", 1);
1169 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NO);
1170 CHECK_EQUAL(ret, 0);
1171 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1172 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1173 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1174 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1175 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1176 delete []redisStrVec;
1180 TEST(exstring, deliepub_command_has_no_key)
1183 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1185 redisStrVec[0] = (RedisModuleString *)1;
1186 redisStrVec[1] = (RedisModuleString *)1;
1187 redisStrVec[2] = (RedisModuleString *)1;
1188 redisStrVec[3] = (RedisModuleString *)1;
1189 redisStrVec[4] = (RedisModuleString *)1;
1190 mock().setData("RedisModule_KeyType_empty", 1);
1192 mock().expectOneCall("RedisModule_CloseKey");
1193 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1194 CHECK_EQUAL(ret, 0);
1195 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
1196 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1197 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
1198 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1199 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
1200 delete []redisStrVec;
1204 TEST(exstring, deliepub_command_has_key_set)
1207 //RedisModuleString str;
1208 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1210 redisStrVec[0] = (RedisModuleString *)1;
1211 redisStrVec[1] = (RedisModuleString *)1;
1212 redisStrVec[2] = (RedisModuleString *)1;
1213 redisStrVec[3] = (RedisModuleString *)1;
1214 redisStrVec[4] = (RedisModuleString *)1;
1216 mock().setData("RedisModule_OpenKey_have", 1);
1217 mock().setData("RedisModule_KeyType_set", 1);
1218 mock().expectOneCall("RedisModule_CloseKey");
1219 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1220 CHECK_EQUAL(ret, REDISMODULE_OK);
1221 mock().checkExpectations();
1222 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1);
1223 CHECK_EQUAL(mock().getData("GET").getIntValue(), 0);
1224 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
1225 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1226 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0);
1228 delete []redisStrVec;
1231 TEST(exstring, deliepub_command_key_string_nosame)
1234 //RedisModuleString str;
1235 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1237 redisStrVec[0] = (RedisModuleString *)1;
1238 redisStrVec[1] = (RedisModuleString *)1;
1239 redisStrVec[2] = (RedisModuleString *)1;
1240 redisStrVec[3] = (RedisModuleString *)1;
1241 redisStrVec[4] = (RedisModuleString *)1;
1243 mock().setData("RedisModule_OpenKey_have", 1);
1244 mock().setData("RedisModule_KeyType_str", 1);
1245 mock().setData("RedisModule_String_nosame", 1);
1246 mock().expectOneCall("RedisModule_CloseKey");
1247 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1248 CHECK_EQUAL(ret, REDISMODULE_OK);
1249 mock().checkExpectations();
1250 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1251 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1252 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
1253 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1254 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
1255 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1257 delete []redisStrVec;
1260 TEST(exstring, deliepub_command_same_string_replynull)
1263 //RedisModuleString str;
1264 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1266 redisStrVec[0] = (RedisModuleString *)1;
1267 redisStrVec[1] = (RedisModuleString *)1;
1268 redisStrVec[2] = (RedisModuleString *)1;
1269 redisStrVec[3] = (RedisModuleString *)1;
1270 redisStrVec[4] = (RedisModuleString *)1;
1272 mock().setData("RedisModule_OpenKey_have", 1);
1273 mock().setData("RedisModule_KeyType_str", 1);
1274 mock().setData("RedisModule_String_same", 1);
1275 mock().setData("RedisModule_CallReplyType_null", 1);
1276 mock().expectOneCall("RedisModule_CloseKey");
1277 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1278 CHECK_EQUAL(ret, REDISMODULE_OK);
1279 mock().checkExpectations();
1280 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1281 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1282 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1283 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1284 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1);
1285 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
1287 delete []redisStrVec;
1290 TEST(exstring, deliepub_command_same_string_reply)
1293 //RedisModuleString str;
1294 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1296 redisStrVec[0] = (RedisModuleString *)1;
1297 redisStrVec[1] = (RedisModuleString *)1;
1298 redisStrVec[2] = (RedisModuleString *)1;
1299 redisStrVec[3] = (RedisModuleString *)1;
1300 redisStrVec[4] = (RedisModuleString *)1;
1302 mock().setData("RedisModule_OpenKey_have", 1);
1303 mock().setData("RedisModule_KeyType_str", 1);
1304 mock().setData("RedisModule_String_same", 1);
1305 mock().setData("RedisModule_CallReplyType_str", 1);
1306 mock().setData("RedisModule_CallReplyInteger", 1);
1307 mock().expectOneCall("RedisModule_CloseKey");
1308 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_IE);
1309 CHECK_EQUAL(ret, REDISMODULE_OK);
1310 mock().checkExpectations();
1311 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1312 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1313 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1314 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
1315 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1316 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
1318 delete []redisStrVec;
1321 TEST(exstring, delnepub_command_same_string_reply)
1324 //RedisModuleString str;
1325 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1327 redisStrVec[0] = (RedisModuleString *)1;
1328 redisStrVec[1] = (RedisModuleString *)1;
1329 redisStrVec[2] = (RedisModuleString *)1;
1330 redisStrVec[3] = (RedisModuleString *)1;
1331 redisStrVec[4] = (RedisModuleString *)1;
1333 mock().setData("RedisModule_OpenKey_have", 1);
1334 mock().setData("RedisModule_KeyType_str", 1);
1335 mock().setData("RedisModule_String_same", 1);
1336 mock().setData("RedisModule_CallReplyType_str", 1);
1337 mock().expectOneCall("RedisModule_CloseKey");
1338 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NE);
1339 CHECK_EQUAL(ret, REDISMODULE_OK);
1340 mock().checkExpectations();
1341 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1342 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1343 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0);
1344 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0);
1345 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
1346 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1348 delete []redisStrVec;
1351 TEST(exstring, delnepub_command_nosame_string_reply)
1354 //RedisModuleString str;
1355 RedisModuleString ** redisStrVec = new (RedisModuleString*[5]);
1357 redisStrVec[0] = (RedisModuleString *)1;
1358 redisStrVec[1] = (RedisModuleString *)1;
1359 redisStrVec[2] = (RedisModuleString *)1;
1360 redisStrVec[3] = (RedisModuleString *)1;
1361 redisStrVec[4] = (RedisModuleString *)1;
1363 mock().setData("RedisModule_OpenKey_have", 1);
1364 mock().setData("RedisModule_KeyType_str", 1);
1365 mock().setData("RedisModule_String_nosame", 1);
1366 mock().setData("RedisModule_CallReplyType_str", 1);
1367 mock().setData("RedisModule_CallReplyInteger", 1);
1368 mock().expectOneCall("RedisModule_CloseKey");
1369 int ret = delPubStringGenericCommand(&ctx, redisStrVec, 5, OBJ_OP_NE);
1370 CHECK_EQUAL(ret, REDISMODULE_OK);
1371 mock().checkExpectations();
1372 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0);
1373 CHECK_EQUAL(mock().getData("GET").getIntValue(), 1);
1374 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1375 CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1);
1376 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1377 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3);
1379 delete []redisStrVec;
1382 TEST(exstring, nget_command_parameter_number_incorrect)
1385 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1386 redisStrVec[0] = (RedisModuleString *)1;
1387 redisStrVec[1] = (RedisModuleString *)1;
1389 int ret = NGet_RedisCommand(&ctx, redisStrVec, 3);
1390 CHECK_EQUAL(ret, REDISMODULE_ERR);
1392 delete []redisStrVec;
1395 TEST(exstring, nget_command_zero_item)
1398 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1399 redisStrVec[0] = (RedisModuleString *)1;
1400 redisStrVec[1] = (RedisModuleString *)1;
1402 mock().setData("RedisModule_CallReplyLength", 0);
1403 int ret = NGet_RedisCommand(&ctx, redisStrVec, 2);
1404 CHECK_EQUAL(ret, REDISMODULE_OK);
1405 CHECK_EQUAL(mock().getData("KEYS").getIntValue(), 1);
1406 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1407 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1409 delete []redisStrVec;
1412 TEST(exstring, nget_command_none_zero_items)
1415 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1416 redisStrVec[0] = (RedisModuleString *)1;
1417 redisStrVec[1] = (RedisModuleString *)1;
1419 mock().setData("RedisModule_CallReplyLength", 3);
1420 int ret = NGet_RedisCommand(&ctx, redisStrVec, 2);
1421 CHECK_EQUAL(ret, REDISMODULE_OK);
1422 CHECK_EQUAL(mock().getData("KEYS").getIntValue(), 1);
1423 CHECK_EQUAL(mock().getData("MGET").getIntValue(), 1);
1424 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithArray").getIntValue(), 3*2);
1425 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithString").getIntValue(), 3*2);
1426 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
1428 delete []redisStrVec;
1431 TEST(exstring, ndel_command_parameter_parameter_number_incorrect)
1434 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1435 redisStrVec[0] = (RedisModuleString *)1;
1436 redisStrVec[1] = (RedisModuleString *)1;
1438 int ret = NDel_RedisCommand(&ctx, redisStrVec, 3);
1439 CHECK_EQUAL(ret, REDISMODULE_ERR);
1441 delete []redisStrVec;
1444 TEST(exstring, ndel_command_zero_item)
1447 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1448 redisStrVec[0] = (RedisModuleString *)1;
1449 redisStrVec[1] = (RedisModuleString *)1;
1451 mock().setData("RedisModule_CallReplyLength", 0);
1452 int ret = NDel_RedisCommand(&ctx, redisStrVec, 2);
1453 CHECK_EQUAL(ret, REDISMODULE_OK);
1454 CHECK_EQUAL(mock().getData("KEYS").getIntValue(), 1);
1455 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0);
1456 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1);
1458 delete []redisStrVec;
1461 TEST(exstring, ndel_command_none_zero_items)
1464 RedisModuleString ** redisStrVec = new (RedisModuleString*[2]);
1465 redisStrVec[0] = (RedisModuleString *)1;
1466 redisStrVec[1] = (RedisModuleString *)1;
1468 mock().setData("RedisModule_CallReplyLength", 3);
1469 int ret = NDel_RedisCommand(&ctx, redisStrVec, 2);
1470 CHECK_EQUAL(ret, REDISMODULE_OK);
1471 CHECK_EQUAL(mock().getData("KEYS").getIntValue(), 1);
1472 CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1);
1473 CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1);
1474 CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2);
1476 delete []redisStrVec;