1/* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include <stdio.h> 17#include <wchar.h> 18#include "test.h" 19 20#define BUFF_SIZE (20) 21#define RESULT_VAL (2) 22 23/** 24 * @tc.name : swscanf_0100 25 * @tc.desc : Reads data from the wide string ws and stores them according to parameter format 26 * @tc.level : Level 0 27 */ 28void swscanf_0100(void) 29{ 30 wchar_t wstr[] = L"swscanf 123"; 31 wchar_t tmp[BUFF_SIZE]; 32 int i; 33 int result = swscanf(wstr, L"%ls %d", tmp, &i); 34 if (result == EOF) { 35 t_error("%s swscanf failed\n", __func__); 36 return; 37 } 38 39 if (i != 123) { 40 t_error("%s i = %d is not want 123\n", __func__, i); 41 } 42 if (wcscmp(tmp, L"swscanf")) { 43 t_error("%s wide string is %s not swscanf\n", __func__, tmp); 44 } 45} 46 47/** 48 * @tc.name : swscanf_0200 49 * @tc.desc : Different formatted data 50 * @tc.level : Level 1 51 */ 52void swscanf_0200(void) 53{ 54 wchar_t wstr[] = L"swscanf 123"; 55 wchar_t tmp1[BUFF_SIZE]; 56 wchar_t tmp2[BUFF_SIZE]; 57 int i; 58 int result = swscanf(wstr, L"%ls %ls", tmp1, tmp2); 59 if (result == EOF) { 60 t_error("%s swscanf failed\n", __func__); 61 return; 62 } 63 if (wcscmp(tmp1, L"swscanf")) { 64 t_error("%s tmp1 = %s is not want swscanf\n", __func__, tmp1); 65 } 66 if (wcscmp(tmp2, L"123")) { 67 t_error("%s tmp2 = %s is not want 123\n", __func__, tmp2); 68 } 69} 70 71/** 72 * @tc.name : swscanf_0300 73 * @tc.desc : Formatting exception 74 * @tc.level : Level 2 75 */ 76void swscanf_0300(void) 77{ 78 wchar_t wstr[] = L"swscanf 123"; 79 int i, j; 80 int result = swscanf(wstr, L"%d %d", &i, &j); 81 if (result >= RESULT_VAL) { 82 t_error("%s swscanf expect failed\n", __func__); 83 } 84} 85 86int main(int argc, char *argv[]) 87{ 88 swscanf_0100(); 89 swscanf_0200(); 90 swscanf_0300(); 91 return t_status; 92}