2 * Copyright (c) 2018-2020 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.
18 * This source code is part of the near-RT RIC (RAN Intelligent Controller)
19 * platform project (RICP).
23 #include "exstringsStub.h"
24 #include "redismodule.h"
27 #include "CppUTest/TestHarness.h"
28 #include "CppUTestExt/MockSupport.h"
30 #include "ut_helpers.hpp"
32 void nDelReturnNKeysFromUnlink(int count)
35 .expectOneCall("RedisModule_CallReplyInteger")
36 .andReturnValue(count);
40 TEST_GROUP(exstrings_ndel)
45 mock().ignoreOtherCalls();
56 TEST(exstrings_ndel, ndel_atomic_automemory_enabled)
59 RedisModuleString ** redisStrVec = createRedisStrVec(2);
61 mock().ignoreOtherCalls();
62 mock().expectOneCall("RedisModule_AutoMemory");
63 int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 3);
64 mock().checkExpectations();
65 CHECK_EQUAL(ret, REDISMODULE_ERR);
70 TEST(exstrings_ndel, ndel_atomic_command_parameter_parameter_number_incorrect)
73 RedisModuleString ** redisStrVec = createRedisStrVec(2);
75 mock().ignoreOtherCalls();
76 mock().expectOneCall("RedisModule_WrongArity");
77 int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 3);
78 mock().checkExpectations();
79 CHECK_EQUAL(ret, REDISMODULE_ERR);
84 TEST(exstrings_ndel, ndel_atomic_command_scan_0_keys_found)
87 RedisModuleString ** redisStrVec = createRedisStrVec(2);
89 mock().ignoreOtherCalls();
90 returnNKeysFromScanSome(0);
91 mock().expectOneCall("RedisModule_ReplyWithLongLong")
92 .withParameter("ll", 0);
93 int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 2);
94 mock().checkExpectations();
95 CHECK_EQUAL(ret, REDISMODULE_OK);
100 TEST(exstrings_ndel, ndel_atomic_command_scan_3_keys_found_3_keys_deleted)
103 RedisModuleString ** redisStrVec = createRedisStrVec(2);
105 mock().ignoreOtherCalls();
106 mock().expectOneCall("RedisModule_Call")
107 .withParameter("cmdname", "SCAN");
108 returnNKeysFromScanSome(3);
110 .expectOneCall("RedisModule_Call")
111 .withParameter("cmdname", "UNLINK");
112 nDelReturnNKeysFromUnlink(3);
113 mock().expectOneCall("RedisModule_ReplyWithLongLong")
114 .withParameter("ll", 3);
115 int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 2);
116 mock().checkExpectations();
117 CHECK_EQUAL(ret, REDISMODULE_OK);
119 delete []redisStrVec;
122 TEST(exstrings_ndel, ndel_atomic_command_scan_3_keys_found_0_keys_deleted)
125 RedisModuleString ** redisStrVec = createRedisStrVec(2);
127 mock().ignoreOtherCalls();
128 mock().expectOneCall("RedisModule_Call")
129 .withParameter("cmdname", "SCAN");
130 returnNKeysFromScanSome(3);
132 .expectOneCall("RedisModule_Call")
133 .withParameter("cmdname", "UNLINK");
134 nDelReturnNKeysFromUnlink(0);
135 mock().expectOneCall("RedisModule_ReplyWithLongLong")
136 .withParameter("ll", 0);
137 int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 2);
138 mock().checkExpectations();
139 CHECK_EQUAL(ret, REDISMODULE_OK);
141 delete []redisStrVec;
144 TEST(exstrings_ndel, ndel_atomic_command_scan_3_keys_found_1_keys_deleted)
147 RedisModuleString ** redisStrVec = createRedisStrVec(2);
149 mock().ignoreOtherCalls();
150 mock().expectOneCall("RedisModule_Call")
151 .withParameter("cmdname", "SCAN");
152 returnNKeysFromScanSome(3);
154 .expectOneCall("RedisModule_Call")
155 .withParameter("cmdname", "UNLINK");
156 nDelReturnNKeysFromUnlink(1);
157 mock().expectOneCall("RedisModule_ReplyWithLongLong")
158 .withParameter("ll", 1);
159 int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 2);
160 mock().checkExpectations();
161 CHECK_EQUAL(ret, REDISMODULE_OK);
163 delete []redisStrVec;