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 <fcntl.h>
17#include <stdio.h>
18#include <stdlib.h>
19#include "functionalext.h"
20
21const int32_t ERRORLEN = -1;
22
23/**
24 * @tc.name:      fprintf_0100
25 * @tc.desc:      Verify fprintf and stdout process success.
26 * @tc.level:     level 0.
27 */
28void fprintf_0100(void)
29{
30    char str[] = "This is a fprintf_0100";
31    int32_t len = fprintf(stdout, "%s", str);
32    EXPECT_EQ("fprintf_0100", len, strlen(str));
33}
34
35/**
36 * @tc.name:      fprintf_0200
37 * @tc.desc:      Verify fprintf and stderr process success.
38 * @tc.level:     level 0.
39 */
40void fprintf_0200(void)
41{
42    char str[] = "This is a test fprintf_0200";
43    int32_t len = fprintf(stderr, "%s", str);
44    EXPECT_EQ("fprintf_0200", len, strlen(str));
45}
46
47/**
48 * @tc.name:      fprintf_0300
49 * @tc.desc:      Verify fprintf and fopen("w") process success.
50 * @tc.level:     level 0.
51 */
52void fprintf_0300(void)
53{
54    char str[] = "这是一个测试";
55    int len = 0;
56    FILE *fptr = fopen("tempory_testfprintf.txt", "w");
57    if (fptr != NULL) {
58        len = fprintf(fptr, "%s", str);
59        fclose(fptr);
60    }
61    EXPECT_EQ("fprintf_0300", len, strlen(str));
62}
63
64/**
65 * @tc.name:      fprintf_0400
66 * @tc.desc:      Verify fflush and fopen("r") and fclose and return -1.
67 * @tc.level:     level 2.
68 */
69void fprintf_0400(void)
70{
71    char str[] = "这是一个测试";
72    int32_t len = 0;
73    FILE *fptr = fopen("tempory_testfprintf.txt", "r");
74    if (fptr != NULL) {
75        len = fprintf(fptr, "%s", str);
76        fclose(fptr);
77    }
78    EXPECT_EQ("fprintf_0400", len, ERRORLEN);
79    remove("tempory_testfprintf.txt");
80}
81
82int main(void)
83{
84    fprintf_0100();
85    fprintf_0200();
86    fprintf_0300();
87    fprintf_0400();
88    return t_status;
89}
90