1f6603c60Sopenharmony_ci/* 2f6603c60Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License. 5f6603c60Sopenharmony_ci * You may obtain a copy of the License at 6f6603c60Sopenharmony_ci * 7f6603c60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f6603c60Sopenharmony_ci * 9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f6603c60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and 13f6603c60Sopenharmony_ci * limitations under the License. 14f6603c60Sopenharmony_ci */ 15f6603c60Sopenharmony_ci 16f6603c60Sopenharmony_ci#include <stdio.h> 17f6603c60Sopenharmony_ci#include <string.h> 18f6603c60Sopenharmony_ci#include <stdlib.h> 19f6603c60Sopenharmony_ci#include <time.h> 20f6603c60Sopenharmony_ci#include <unistd.h> 21f6603c60Sopenharmony_ci#include <sched.h> 22f6603c60Sopenharmony_ci#include <malloc.h> 23f6603c60Sopenharmony_ci#include <sys/time.h> 24f6603c60Sopenharmony_ci#include <sys/resource.h> 25f6603c60Sopenharmony_ci 26f6603c60Sopenharmony_ci#include "gtest/gtest.h" 27f6603c60Sopenharmony_ci#include "XtsActsUtil.h" 28f6603c60Sopenharmony_ci#include "KernelConstants.h" 29f6603c60Sopenharmony_ci 30f6603c60Sopenharmony_ciusing namespace testing::ext; 31f6603c60Sopenharmony_ci 32f6603c60Sopenharmony_ciclass ActsMemApiTest : public testing::Test { 33f6603c60Sopenharmony_ciprotected: 34f6603c60Sopenharmony_ci // SetUpTestCase: Testsuit setup, run before 1st testcase 35f6603c60Sopenharmony_ci static void SetUpTestCase(void) 36f6603c60Sopenharmony_ci { 37f6603c60Sopenharmony_ci } 38f6603c60Sopenharmony_ci // TearDownTestCase: Testsuit teardown, run after last testcase 39f6603c60Sopenharmony_ci static void TearDownTestCase(void) 40f6603c60Sopenharmony_ci { 41f6603c60Sopenharmony_ci } 42f6603c60Sopenharmony_ci // Testcase setup 43f6603c60Sopenharmony_ci virtual void SetUp() 44f6603c60Sopenharmony_ci { 45f6603c60Sopenharmony_ci errno = 0; 46f6603c60Sopenharmony_ci } 47f6603c60Sopenharmony_ci // Testcase teardown 48f6603c60Sopenharmony_ci virtual void TearDown() 49f6603c60Sopenharmony_ci { 50f6603c60Sopenharmony_ci } 51f6603c60Sopenharmony_ci}; 52f6603c60Sopenharmony_ci 53f6603c60Sopenharmony_ci/** 54f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_BCMP_0100 55f6603c60Sopenharmony_ci* @tc.name test bcmp api 56f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 57f6603c60Sopenharmony_ci*/ 58f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemBcmp_0100, Function | MediumTest | Level1) { 59f6603c60Sopenharmony_ci char str1[] = "this is string1"; 60f6603c60Sopenharmony_ci char str2[] = "this is string2"; 61f6603c60Sopenharmony_ci int returnVal; 62f6603c60Sopenharmony_ci 63f6603c60Sopenharmony_ci returnVal = bcmp(str1, str2, 7); 64f6603c60Sopenharmony_ci LogPrint(" bcmp *s1:='%s' *s2:='%s' size:='7', --> returnVal:='%d'\n", str1, str2, returnVal); 65f6603c60Sopenharmony_ci EXPECT_EQ(0, returnVal) 66f6603c60Sopenharmony_ci << "ErrInfo: bcmp *s1:='" << str1 << "' *s2:='" << str2 67f6603c60Sopenharmony_ci << "' size:='7', --> returnVal:='" << returnVal << "'"; 68f6603c60Sopenharmony_ci} 69f6603c60Sopenharmony_ci 70f6603c60Sopenharmony_ci/** 71f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_BCMP_1000 72f6603c60Sopenharmony_ci* @tc.name test bcmp api NE 73f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 74f6603c60Sopenharmony_ci*/ 75f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemBcmp_1000, Function | MediumTest | Level1) { 76f6603c60Sopenharmony_ci char str1[] = "this is string1"; 77f6603c60Sopenharmony_ci char str2[] = "this is string2"; 78f6603c60Sopenharmony_ci int returnVal; 79f6603c60Sopenharmony_ci 80f6603c60Sopenharmony_ci returnVal = bcmp(str1, str2, 15); 81f6603c60Sopenharmony_ci LogPrint(" bcmp *s1:='%s' *s2:='%s' size:='15', --> returnVal:='%d'\n", str1, str2, returnVal); 82f6603c60Sopenharmony_ci EXPECT_NE(0, returnVal) 83f6603c60Sopenharmony_ci << "ErrInfo: bcmp *s1:='" << str1 << "' *s2:='" << str2 84f6603c60Sopenharmony_ci << "' size:='15', --> returnVal:='" << returnVal << "'"; 85f6603c60Sopenharmony_ci} 86f6603c60Sopenharmony_ci 87f6603c60Sopenharmony_ci/** 88f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_BCOPY_0100 89f6603c60Sopenharmony_ci* @tc.name test bcopy api 90f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 91f6603c60Sopenharmony_ci*/ 92f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemBcopy_0100, Function | MediumTest | Level1) { 93f6603c60Sopenharmony_ci char srcStr[] = "this"; 94f6603c60Sopenharmony_ci char destStr[] = "00000000"; 95f6603c60Sopenharmony_ci int iRtn = 1; 96f6603c60Sopenharmony_ci 97f6603c60Sopenharmony_ci LogPrint(" bcopy *src:='%s' *dest:='%s', size:='4', \n", srcStr, destStr); 98f6603c60Sopenharmony_ci bcopy(srcStr, destStr, 4); 99f6603c60Sopenharmony_ci LogPrint(" --> *dest:='%s'\n", destStr); 100f6603c60Sopenharmony_ci 101f6603c60Sopenharmony_ci for (int iLoop = 0; iLoop < 4; iLoop++) 102f6603c60Sopenharmony_ci { 103f6603c60Sopenharmony_ci if (srcStr[iLoop] != destStr[iLoop]) { 104f6603c60Sopenharmony_ci iRtn = 0; 105f6603c60Sopenharmony_ci break; 106f6603c60Sopenharmony_ci } 107f6603c60Sopenharmony_ci } 108f6603c60Sopenharmony_ci 109f6603c60Sopenharmony_ci EXPECT_EQ(1, iRtn) 110f6603c60Sopenharmony_ci << "ErrInfo: bcopy *src:='" << srcStr << "' *dest:='" 111f6603c60Sopenharmony_ci << "' size:='4', --> *dest:='" << destStr << "'"; 112f6603c60Sopenharmony_ci} 113f6603c60Sopenharmony_ci 114f6603c60Sopenharmony_ci/** 115f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_BZERO_0100 116f6603c60Sopenharmony_ci* @tc.name test bzero api 117f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 118f6603c60Sopenharmony_ci*/ 119f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemBzero_0100, Function | MediumTest | Level1) { 120f6603c60Sopenharmony_ci char srcStr[] = "this is string1"; 121f6603c60Sopenharmony_ci char destStr[] = "this is string1"; 122f6603c60Sopenharmony_ci int iFlag = 1; 123f6603c60Sopenharmony_ci 124f6603c60Sopenharmony_ci LogPrint(" bzero *s:='%s' size:='4', ", srcStr); 125f6603c60Sopenharmony_ci bzero(destStr, 4); 126f6603c60Sopenharmony_ci LogPrint("--> afterrun s:='%s', ", destStr); 127f6603c60Sopenharmony_ci 128f6603c60Sopenharmony_ci for(int iLoop = 0; iLoop < 4; iLoop++) 129f6603c60Sopenharmony_ci { 130f6603c60Sopenharmony_ci if (destStr[iLoop] != '\0') { 131f6603c60Sopenharmony_ci iFlag = 0; 132f6603c60Sopenharmony_ci break; 133f6603c60Sopenharmony_ci } else { 134f6603c60Sopenharmony_ci destStr[iLoop] = '0'; 135f6603c60Sopenharmony_ci } 136f6603c60Sopenharmony_ci } 137f6603c60Sopenharmony_ci LogPrint(" for_print s:='%s'\n", destStr); 138f6603c60Sopenharmony_ci 139f6603c60Sopenharmony_ci EXPECT_EQ(1, iFlag) 140f6603c60Sopenharmony_ci << "ErrInfo: bzero *:='" << srcStr << "' size:='4', --> afterrun s:='" << destStr << "'"; 141f6603c60Sopenharmony_ci} 142f6603c60Sopenharmony_ci 143f6603c60Sopenharmony_ci/** 144f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MALLOC_USABLE_SIZE_0100 145f6603c60Sopenharmony_ci* @tc.name test malloc_usable_size api 146f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 147f6603c60Sopenharmony_ci*/ 148f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMallocUsableSize_0100, Function | MediumTest | Level1) { 149f6603c60Sopenharmony_ci char *pt = nullptr; 150f6603c60Sopenharmony_ci size_t size; 151f6603c60Sopenharmony_ci 152f6603c60Sopenharmony_ci pt = (char *)malloc(128); 153f6603c60Sopenharmony_ci if (pt) { 154f6603c60Sopenharmony_ci LogPrint(" Mem allocated at: %x\n", pt); 155f6603c60Sopenharmony_ci } else { 156f6603c60Sopenharmony_ci LogPrint(" No enough Mem!\n"); 157f6603c60Sopenharmony_ci } 158f6603c60Sopenharmony_ci 159f6603c60Sopenharmony_ci size = malloc_usable_size(pt); 160f6603c60Sopenharmony_ci LogPrint(" malloc_usable_size *ptr:='%x', --> return size:='%d'\n", pt, size); 161f6603c60Sopenharmony_ci 162f6603c60Sopenharmony_ci EXPECT_GT((int)size, 1) 163f6603c60Sopenharmony_ci << "ErrInfo: malloc_usable_size *ptr:='" << pt << "', --> return size:='" << size << "'"; 164f6603c60Sopenharmony_ci free(pt); 165f6603c60Sopenharmony_ci} 166f6603c60Sopenharmony_ci 167f6603c60Sopenharmony_ci/** 168f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MALLOC_USABLE_SIZE_1000 169f6603c60Sopenharmony_ci* @tc.name test malloc_usable_size api exception null 170f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 171f6603c60Sopenharmony_ci*/ 172f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMallocUsableSize_1000, Function | MediumTest | Level1) { 173f6603c60Sopenharmony_ci size_t size; 174f6603c60Sopenharmony_ci 175f6603c60Sopenharmony_ci size = malloc_usable_size(nullptr); 176f6603c60Sopenharmony_ci LogPrint(" malloc_usable_size *ptr:='nullptr', --> return size:='%d'\n", size); 177f6603c60Sopenharmony_ci 178f6603c60Sopenharmony_ci EXPECT_EQ((int)size, 0) 179f6603c60Sopenharmony_ci << "ErrInfo: malloc_usable_size *ptr:='nullptr', --> return size:='" << size << "'"; 180f6603c60Sopenharmony_ci} 181f6603c60Sopenharmony_ci 182f6603c60Sopenharmony_ci/** 183f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MEMCCPY_0100 184f6603c60Sopenharmony_ci* @tc.name test memccpy api 185f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 186f6603c60Sopenharmony_ci*/ 187f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemCcpy_0100, Function | MediumTest | Level1) { 188f6603c60Sopenharmony_ci char srcStr[] = "this is str1:stop here"; 189f6603c60Sopenharmony_ci char destStr[] = "000000000000000000000000"; 190f6603c60Sopenharmony_ci char *pt = nullptr; 191f6603c60Sopenharmony_ci 192f6603c60Sopenharmony_ci LogPrint(" bcopy *dest:='%s' *src:='%s' c:=':' size:='18', \n", destStr, srcStr); 193f6603c60Sopenharmony_ci pt = (char *)memccpy(destStr, srcStr, ':', 18); 194f6603c60Sopenharmony_ci LogPrint(" --> return pt:='%x', dest:='%s'\n", pt, destStr); 195f6603c60Sopenharmony_ci ASSERT_TRUE(pt) 196f6603c60Sopenharmony_ci << "ErrInfo: bcopy *dest:='destStr' *src:='" 197f6603c60Sopenharmony_ci << srcStr << "' c:=':' size:='18', --> afterrun dest:='" << destStr << "'"; 198f6603c60Sopenharmony_ci} 199f6603c60Sopenharmony_ci 200f6603c60Sopenharmony_ci/** 201f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MEMCCPY_0200 202f6603c60Sopenharmony_ci* @tc.name test memccpy api not find c 203f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 204f6603c60Sopenharmony_ci*/ 205f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemCcpy_0200, Function | MediumTest | Level1) { 206f6603c60Sopenharmony_ci char srcStr[] = "this is str1:stop here"; 207f6603c60Sopenharmony_ci char destStr[] = "000000000000000000000000"; 208f6603c60Sopenharmony_ci char *pt = nullptr; 209f6603c60Sopenharmony_ci 210f6603c60Sopenharmony_ci LogPrint(" bcopy *dest:='%s' *src:='%s' c:=';' size:='18', \n", destStr, srcStr); 211f6603c60Sopenharmony_ci pt = (char *)memccpy(destStr, srcStr, ';', 18); 212f6603c60Sopenharmony_ci LogPrint(" --> return pt:='%x', *dest:='%s'\n", pt, destStr); 213f6603c60Sopenharmony_ci ASSERT_FALSE(pt) 214f6603c60Sopenharmony_ci << "ErrInfo: bcopy *dest:='destStr' *src:='" 215f6603c60Sopenharmony_ci << srcStr << "' c:=':' size:='18', --> return pt:='" << pt << "', dest:='" << destStr << "'"; 216f6603c60Sopenharmony_ci} 217f6603c60Sopenharmony_ci 218f6603c60Sopenharmony_ci/** 219f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MEMPCPY_0100 220f6603c60Sopenharmony_ci* @tc.name test mempcpy api 221f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 222f6603c60Sopenharmony_ci*/ 223f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMempcpy_0100, Function | MediumTest | Level1) { 224f6603c60Sopenharmony_ci char srcStr[] = "this is str1"; 225f6603c60Sopenharmony_ci char destStr[] = "00000000000000000000"; 226f6603c60Sopenharmony_ci char *pt = nullptr; 227f6603c60Sopenharmony_ci 228f6603c60Sopenharmony_ci LogPrint(" mempcpy *dest:='%s' *src:='%s' size:='16',", destStr, srcStr); 229f6603c60Sopenharmony_ci pt = (char *)mempcpy(destStr, srcStr, 16); 230f6603c60Sopenharmony_ci LogPrint(" --> return pt:='%x', *dest:='%s'\n", pt, destStr); 231f6603c60Sopenharmony_ci ASSERT_TRUE(pt) 232f6603c60Sopenharmony_ci << "ErrInfo: mempcpy *dest:='destStr' *src:='" 233f6603c60Sopenharmony_ci << srcStr << "' size:='16', --> return pt:='" << pt << "', dest:='" << destStr << "'"; 234f6603c60Sopenharmony_ci} 235f6603c60Sopenharmony_ci 236f6603c60Sopenharmony_ci/** 237f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MEMCHR_0100 238f6603c60Sopenharmony_ci* @tc.name test memchr api 239f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 240f6603c60Sopenharmony_ci*/ 241f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemchr_0100, Function | MediumTest | Level1) { 242f6603c60Sopenharmony_ci char srcStr[] = "this is str a;"; 243f6603c60Sopenharmony_ci char *pos = nullptr; 244f6603c60Sopenharmony_ci 245f6603c60Sopenharmony_ci LogPrint(" memchr *s:='%s' c:='a' size:='14',", srcStr); 246f6603c60Sopenharmony_ci pos = (char *)memchr(srcStr, 'a', 14); 247f6603c60Sopenharmony_ci LogPrint(" --> return pos:='%x'\n", pos); 248f6603c60Sopenharmony_ci 249f6603c60Sopenharmony_ci ASSERT_TRUE(pos) 250f6603c60Sopenharmony_ci << "ErrInfo: memchr *s:='" << srcStr << "' c:='a' size:='14'," 251f6603c60Sopenharmony_ci << " --> return pos:='" << pos << "'"; 252f6603c60Sopenharmony_ci} 253f6603c60Sopenharmony_ci 254f6603c60Sopenharmony_ci/** 255f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MEMCHR_1000 256f6603c60Sopenharmony_ci* @tc.name test memchr api para len not enough 257f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 258f6603c60Sopenharmony_ci*/ 259f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemchr_1000, Function | MediumTest | Level1) { 260f6603c60Sopenharmony_ci char srcStr[] = "this is str a;"; 261f6603c60Sopenharmony_ci char *pos = nullptr; 262f6603c60Sopenharmony_ci 263f6603c60Sopenharmony_ci LogPrint(" memchr *s:='%s' c:='a' size:='4',", srcStr); 264f6603c60Sopenharmony_ci pos = (char *)memchr(srcStr, 'a', 4); 265f6603c60Sopenharmony_ci LogPrint(" --> return pos:='%x'\n", pos); 266f6603c60Sopenharmony_ci ASSERT_FALSE(pos) 267f6603c60Sopenharmony_ci << "ErrInfo: memchr *s:='" << srcStr << "' c:='a' size:='4'," 268f6603c60Sopenharmony_ci << " --> return pos:='" << pos << "'"; 269f6603c60Sopenharmony_ci} 270f6603c60Sopenharmony_ci 271f6603c60Sopenharmony_ci/** 272f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MEMCHR_1100 273f6603c60Sopenharmony_ci* @tc.name test memchr api para c not found 274f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 275f6603c60Sopenharmony_ci*/ 276f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemchr_1100, Function | MediumTest | Level1) { 277f6603c60Sopenharmony_ci char srcStr[] = "this is str a;"; 278f6603c60Sopenharmony_ci char *pos = nullptr; 279f6603c60Sopenharmony_ci 280f6603c60Sopenharmony_ci LogPrint(" memchr *s:='%s' c:='b' size:='14',", srcStr); 281f6603c60Sopenharmony_ci pos = (char *)memchr(srcStr, 'b', 14); 282f6603c60Sopenharmony_ci LogPrint(" --> return pos:='%x'\n", pos); 283f6603c60Sopenharmony_ci ASSERT_FALSE(pos) 284f6603c60Sopenharmony_ci << "ErrInfo: memchr *s:='" << srcStr << "' c:='b' size:='14'," 285f6603c60Sopenharmony_ci << " --> return pos:='" << pos << "'"; 286f6603c60Sopenharmony_ci} 287f6603c60Sopenharmony_ci 288f6603c60Sopenharmony_ci/** 289f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MEMMEM_0100 290f6603c60Sopenharmony_ci* @tc.name test memmem api 291f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 292f6603c60Sopenharmony_ci*/ 293f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemmem_0100, Function | MediumTest | Level1) { 294f6603c60Sopenharmony_ci char srcStr[] = "this is str a;"; 295f6603c60Sopenharmony_ci char srcSubStr[] = "str"; 296f6603c60Sopenharmony_ci char *pos = nullptr; 297f6603c60Sopenharmony_ci 298f6603c60Sopenharmony_ci LogPrint(" memmem *haystack:='%s' size_haystack:='%d' ", srcStr, strlen(srcStr)); 299f6603c60Sopenharmony_ci LogPrint("*needle:='%s' size_needle:='%d',\n", srcSubStr, strlen(srcSubStr)); 300f6603c60Sopenharmony_ci if (strlen(srcStr) >= strlen(srcSubStr)) { 301f6603c60Sopenharmony_ci pos = (char *)memmem(srcStr, strlen(srcStr), srcSubStr, strlen(srcSubStr)); 302f6603c60Sopenharmony_ci LogPrint(" --> return pos:='%x'\n", pos); 303f6603c60Sopenharmony_ci } 304f6603c60Sopenharmony_ci 305f6603c60Sopenharmony_ci ASSERT_TRUE(pos) 306f6603c60Sopenharmony_ci << "ErrInfo: memmem *haystack:='" << srcStr << " size_haystack:='" 307f6603c60Sopenharmony_ci << strlen(srcStr) << "' *needle:='" << srcSubStr << "' size_needle:='" << strlen(srcSubStr) 308f6603c60Sopenharmony_ci << " --> return pos:='" << pos << "'"; 309f6603c60Sopenharmony_ci} 310f6603c60Sopenharmony_ci 311f6603c60Sopenharmony_ci/** 312f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_MEMMEM_1000 313f6603c60Sopenharmony_ci* @tc.name test memmem api para not found 314f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 315f6603c60Sopenharmony_ci*/ 316f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemmem_1000, Function | MediumTest | Level1) { 317f6603c60Sopenharmony_ci char srcStr[] = "this is str a;"; 318f6603c60Sopenharmony_ci char srcSubStr[] = "strb"; 319f6603c60Sopenharmony_ci char *pos = nullptr; 320f6603c60Sopenharmony_ci 321f6603c60Sopenharmony_ci if (strlen(srcStr) < strlen(srcSubStr)) { 322f6603c60Sopenharmony_ci FAIL(); 323f6603c60Sopenharmony_ci } 324f6603c60Sopenharmony_ci pos = (char *)memmem(srcStr, strlen(srcStr), srcSubStr, strlen(srcSubStr)); 325f6603c60Sopenharmony_ci LogPrint(" memmem *haystack:='%s' size_haystack:='%d' ", srcStr, strlen(srcStr)); 326f6603c60Sopenharmony_ci LogPrint("*needle:='%s' size_needle:='%d',\n", srcSubStr, strlen(srcSubStr)); 327f6603c60Sopenharmony_ci LogPrint(" --> return pos:='%x'\n", pos); 328f6603c60Sopenharmony_ci 329f6603c60Sopenharmony_ci ASSERT_FALSE(pos) 330f6603c60Sopenharmony_ci << "ErrInfo: memmem *haystack:='" << srcStr << " size_haystack:='" 331f6603c60Sopenharmony_ci << strlen(srcStr) << "' *needle:='" << srcSubStr << "' size_needle:='" << strlen(srcSubStr) 332f6603c60Sopenharmony_ci << " --> return pos:='" << pos << "'"; 333f6603c60Sopenharmony_ci} 334f6603c60Sopenharmony_ci 335f6603c60Sopenharmony_ci/** 336f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_OPEN_MEMSTREAM_0100 337f6603c60Sopenharmony_ci* @tc.name test open_memstream api 338f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 339f6603c60Sopenharmony_ci*/ 340f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testOpenMemStream_0100, Function | MediumTest | Level1) { 341f6603c60Sopenharmony_ci FILE *memStream; 342f6603c60Sopenharmony_ci char *ptr = nullptr; 343f6603c60Sopenharmony_ci size_t sizeLoc; 344f6603c60Sopenharmony_ci 345f6603c60Sopenharmony_ci memStream = open_memstream(&ptr, &sizeLoc); 346f6603c60Sopenharmony_ci LogPrint(" open_memstream **ptr:='*ptr' *sizeloc:='*sizeLoc', "); 347f6603c60Sopenharmony_ci LogPrint(" --> return memStream:='%x'\n", memStream); 348f6603c60Sopenharmony_ci LogPrint(" ptr:='%x', sizeLoc:='%d'\n", ptr, sizeLoc); 349f6603c60Sopenharmony_ci 350f6603c60Sopenharmony_ci ASSERT_TRUE(memStream) 351f6603c60Sopenharmony_ci << "ErrInfo: open_memstream **ptr:='*ptr' *sizeloc:='*sizeLoc', " 352f6603c60Sopenharmony_ci << " --> return memStream:='" << memStream << "'"; 353f6603c60Sopenharmony_ci 354f6603c60Sopenharmony_ci LogPrint(" fprintf(memStream, 'Hello!');\n"); 355f6603c60Sopenharmony_ci fprintf(memStream, "Hello!"); 356f6603c60Sopenharmony_ci fflush(memStream); 357f6603c60Sopenharmony_ci LogPrint(" ptr:='%s', sizeloc:='%zu'\n", ptr, sizeLoc); 358f6603c60Sopenharmony_ci 359f6603c60Sopenharmony_ci LogPrint(" fclose(memStream);\n"); 360f6603c60Sopenharmony_ci fclose(memStream); 361f6603c60Sopenharmony_ci LogPrint(" ptr:='%s', sizeloc:='%zu'\n", ptr, sizeLoc); 362f6603c60Sopenharmony_ci free(ptr); 363f6603c60Sopenharmony_ci} 364f6603c60Sopenharmony_ci 365f6603c60Sopenharmony_ci/** 366f6603c60Sopenharmony_ci* @tc.number SUB_KERNEL_NDKAPI_MEM_GETPAGESIZE_0100 367f6603c60Sopenharmony_ci* @tc.name test getpagesize api 368f6603c60Sopenharmony_ci* @tc.desc [C- SOFTWARE -0200] 369f6603c60Sopenharmony_ci*/ 370f6603c60Sopenharmony_ciHWTEST_F(ActsMemApiTest, testMemGetpagesize_0100, Function | MediumTest | Level1) { 371f6603c60Sopenharmony_ci size_t returnVal; 372f6603c60Sopenharmony_ci 373f6603c60Sopenharmony_ci returnVal = getpagesize(); 374f6603c60Sopenharmony_ci LogPrint(" getpagesize, --> returnVal:='%d'\n", returnVal); 375f6603c60Sopenharmony_ci EXPECT_GE(returnVal, 0U); 376f6603c60Sopenharmony_ci EXPECT_EQ(returnVal, PAGE_SIZE) 377f6603c60Sopenharmony_ci << "ErrInfo: getpagesize, --> returnVal:='" << returnVal << "'"; 378f6603c60Sopenharmony_ci} 379