10a5c7a17Sopenharmony_ci/*
20a5c7a17Sopenharmony_ci * Copyright (C) 2020-2022 Huawei Device Co., Ltd.
30a5c7a17Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
40a5c7a17Sopenharmony_ci * you may not use this file except in compliance with the License.
50a5c7a17Sopenharmony_ci * You may obtain a copy of the License at
60a5c7a17Sopenharmony_ci *
70a5c7a17Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
80a5c7a17Sopenharmony_ci *
90a5c7a17Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
100a5c7a17Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
110a5c7a17Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
120a5c7a17Sopenharmony_ci * See the License for the specific language governing permissions and
130a5c7a17Sopenharmony_ci * limitations under the License.
140a5c7a17Sopenharmony_ci */
150a5c7a17Sopenharmony_ci
160a5c7a17Sopenharmony_ci#include "camera_lite_test.h"
170a5c7a17Sopenharmony_ci
180a5c7a17Sopenharmony_ci#include <components/ui_surface_view.h>
190a5c7a17Sopenharmony_ci#include <sys/stat.h>
200a5c7a17Sopenharmony_ci#include <sys/time.h>
210a5c7a17Sopenharmony_ci#include <sys/types.h>
220a5c7a17Sopenharmony_ci
230a5c7a17Sopenharmony_ci#include <algorithm>
240a5c7a17Sopenharmony_ci#include <cstdlib>
250a5c7a17Sopenharmony_ci#include <fstream>
260a5c7a17Sopenharmony_ci#include <iostream>
270a5c7a17Sopenharmony_ci#include <memory>
280a5c7a17Sopenharmony_ci#include <sstream>
290a5c7a17Sopenharmony_ci#include <string>
300a5c7a17Sopenharmony_ci
310a5c7a17Sopenharmony_ci#include "camera_kit.h"
320a5c7a17Sopenharmony_ci
330a5c7a17Sopenharmony_ciusing namespace std;
340a5c7a17Sopenharmony_ciusing namespace OHOS;
350a5c7a17Sopenharmony_ciusing namespace OHOS::Media;
360a5c7a17Sopenharmony_ciusing namespace testing::ext;
370a5c7a17Sopenharmony_ci
380a5c7a17Sopenharmony_cinamespace OHOS {
390a5c7a17Sopenharmony_ci/* *
400a5c7a17Sopenharmony_ci * get current dir
410a5c7a17Sopenharmony_ci * @return  string current file path of the test suites
420a5c7a17Sopenharmony_ci */
430a5c7a17Sopenharmony_cistring GetCurDir()
440a5c7a17Sopenharmony_ci{
450a5c7a17Sopenharmony_ci    string filePath = "";
460a5c7a17Sopenharmony_ci    char *buffer;
470a5c7a17Sopenharmony_ci    if ((buffer = getcwd(NULL, 0)) == NULL) {
480a5c7a17Sopenharmony_ci        perror("get file path error");
490a5c7a17Sopenharmony_ci    } else {
500a5c7a17Sopenharmony_ci        printf("Current Dir: %s\r\n", buffer);
510a5c7a17Sopenharmony_ci        filePath = buffer;
520a5c7a17Sopenharmony_ci        free(buffer);
530a5c7a17Sopenharmony_ci    }
540a5c7a17Sopenharmony_ci    return filePath + "/";
550a5c7a17Sopenharmony_ci}
560a5c7a17Sopenharmony_ci
570a5c7a17Sopenharmony_ci// SetUpTestCase
580a5c7a17Sopenharmony_civoid CameraLiteTest::SetUpTestCase(void)
590a5c7a17Sopenharmony_ci{
600a5c7a17Sopenharmony_ci    g_testPath = GetCurDir();
610a5c7a17Sopenharmony_ci    cout << "SetUpTestCase" << endl;
620a5c7a17Sopenharmony_ci}
630a5c7a17Sopenharmony_ci
640a5c7a17Sopenharmony_ci// TearDownTestCase
650a5c7a17Sopenharmony_civoid CameraLiteTest::TearDownTestCase(void)
660a5c7a17Sopenharmony_ci{
670a5c7a17Sopenharmony_ci    g_testPath = "";
680a5c7a17Sopenharmony_ci    cout << "TearDownTestCase" << endl;
690a5c7a17Sopenharmony_ci}
700a5c7a17Sopenharmony_ci
710a5c7a17Sopenharmony_civoid CameraLiteTest::SetUp(void)
720a5c7a17Sopenharmony_ci{
730a5c7a17Sopenharmony_ci    // CameraSetUp
740a5c7a17Sopenharmony_ci    g_onGetCameraAbilityFlag = false;
750a5c7a17Sopenharmony_ci    g_onConfigureFlag = false;
760a5c7a17Sopenharmony_ci    g_onGetSupportedSizesFlag = false;
770a5c7a17Sopenharmony_ci
780a5c7a17Sopenharmony_ci    // CameraDeviceCallBack
790a5c7a17Sopenharmony_ci    g_onCameraAvailableFlag = false;
800a5c7a17Sopenharmony_ci    g_onCameraUnavailableFlag = false;
810a5c7a17Sopenharmony_ci
820a5c7a17Sopenharmony_ci    // CameraStateCallback
830a5c7a17Sopenharmony_ci    g_onCreatedFlag = false;
840a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
850a5c7a17Sopenharmony_ci    g_onConfiguredFlag = false;
860a5c7a17Sopenharmony_ci    g_onConfigureFailedFlag = false;
870a5c7a17Sopenharmony_ci    g_onReleasedFlag = false;
880a5c7a17Sopenharmony_ci
890a5c7a17Sopenharmony_ci    // FrameStateCallback
900a5c7a17Sopenharmony_ci    g_onCaptureTriggerAbortedFlag = false;
910a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
920a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
930a5c7a17Sopenharmony_ci    g_onFrameFinishedFlag = false;
940a5c7a17Sopenharmony_ci    g_onGetFrameConfigureType = false;
950a5c7a17Sopenharmony_ci    g_onFrameErrorFlag = false;
960a5c7a17Sopenharmony_ci    g_onFrameProgressedFlag = false;
970a5c7a17Sopenharmony_ci    g_onFrameStartedFlag = false;
980a5c7a17Sopenharmony_ci    g_onRecorderFlag = false;
990a5c7a17Sopenharmony_ci    cout << "SetUp" << endl;
1000a5c7a17Sopenharmony_ci}
1010a5c7a17Sopenharmony_ci
1020a5c7a17Sopenharmony_ci// Tear down
1030a5c7a17Sopenharmony_civoid CameraLiteTest::TearDown(void)
1040a5c7a17Sopenharmony_ci{
1050a5c7a17Sopenharmony_ci    cout << "TearDown." << endl;
1060a5c7a17Sopenharmony_ci}
1070a5c7a17Sopenharmony_ci
1080a5c7a17Sopenharmony_ciint32_t SetupAudioSource(const Recorder &rec)
1090a5c7a17Sopenharmony_ci{
1100a5c7a17Sopenharmony_ci    Recorder *recorder = (Recorder *)&rec;
1110a5c7a17Sopenharmony_ci    int32_t ret = SUCCESS;
1120a5c7a17Sopenharmony_ci    int32_t audioSourceId = 0;
1130a5c7a17Sopenharmony_ci    AudioCodecFormat audioFormat = AAC_LC;
1140a5c7a17Sopenharmony_ci    AudioSourceType inputSource = AUDIO_MIC;
1150a5c7a17Sopenharmony_ci    int32_t sampleRate = 48000;
1160a5c7a17Sopenharmony_ci    int32_t channelCount = 1;
1170a5c7a17Sopenharmony_ci    int32_t audioEncodingBitRate = sampleRate;
1180a5c7a17Sopenharmony_ci    if ((ret = recorder->SetAudioSource(inputSource, audioSourceId)) != SUCCESS) {
1190a5c7a17Sopenharmony_ci        cout << "SetAudioSource failed." << ret << endl;
1200a5c7a17Sopenharmony_ci        return FAIL;
1210a5c7a17Sopenharmony_ci    }
1220a5c7a17Sopenharmony_ci    if ((ret = recorder->SetAudioEncoder(audioSourceId, audioFormat)) != SUCCESS) {
1230a5c7a17Sopenharmony_ci        cout << "SetAudioEncoder failed." << ret << endl;
1240a5c7a17Sopenharmony_ci        return FAIL;
1250a5c7a17Sopenharmony_ci    }
1260a5c7a17Sopenharmony_ci    if ((ret = recorder->SetAudioSampleRate(audioSourceId, sampleRate)) != SUCCESS) {
1270a5c7a17Sopenharmony_ci        cout << "SetAudioSampleRate failed." << ret << endl;
1280a5c7a17Sopenharmony_ci        return FAIL;
1290a5c7a17Sopenharmony_ci    }
1300a5c7a17Sopenharmony_ci    if ((ret = recorder->SetAudioChannels(audioSourceId, channelCount)) != SUCCESS) {
1310a5c7a17Sopenharmony_ci        cout << "SetAudioChannels failed." << ret << endl;
1320a5c7a17Sopenharmony_ci        return FAIL;
1330a5c7a17Sopenharmony_ci    }
1340a5c7a17Sopenharmony_ci    if ((ret = recorder->SetAudioEncodingBitRate(audioSourceId, audioEncodingBitRate)) != SUCCESS) {
1350a5c7a17Sopenharmony_ci        cout << "SetAudioEncodingBitRate failed." << ret << endl;
1360a5c7a17Sopenharmony_ci        return FAIL;
1370a5c7a17Sopenharmony_ci    }
1380a5c7a17Sopenharmony_ci    return SUCCESS;
1390a5c7a17Sopenharmony_ci}
1400a5c7a17Sopenharmony_ci
1410a5c7a17Sopenharmony_ci/* *
1420a5c7a17Sopenharmony_ci * create Recorder
1430a5c7a17Sopenharmony_ci */
1440a5c7a17Sopenharmony_ciRecorder *SampleCreateRecorder()
1450a5c7a17Sopenharmony_ci{
1460a5c7a17Sopenharmony_ci    int ret = 0;
1470a5c7a17Sopenharmony_ci    VideoSourceType source = VIDEO_SOURCE_SURFACE_ES;
1480a5c7a17Sopenharmony_ci    int32_t frameRate = 30;
1490a5c7a17Sopenharmony_ci    double fps = 30;
1500a5c7a17Sopenharmony_ci    int32_t rate = 4096;
1510a5c7a17Sopenharmony_ci    int32_t sourceId = 0;
1520a5c7a17Sopenharmony_ci    int32_t width = 1920;
1530a5c7a17Sopenharmony_ci    int32_t height = 1080;
1540a5c7a17Sopenharmony_ci    VideoCodecFormat encoder = HEVC;
1550a5c7a17Sopenharmony_ci    Recorder *recorder = new Recorder();
1560a5c7a17Sopenharmony_ci    if ((ret = recorder->SetVideoSource(source, sourceId)) != SUCCESS) {
1570a5c7a17Sopenharmony_ci        cout << "SetVideoSource failed." << ret << endl;
1580a5c7a17Sopenharmony_ci        delete recorder;
1590a5c7a17Sopenharmony_ci        return nullptr;
1600a5c7a17Sopenharmony_ci    }
1610a5c7a17Sopenharmony_ci    if ((ret = recorder->SetVideoEncoder(sourceId, encoder)) != SUCCESS) {
1620a5c7a17Sopenharmony_ci        cout << "SetVideoEncoder failed." << ret << endl;
1630a5c7a17Sopenharmony_ci        delete recorder;
1640a5c7a17Sopenharmony_ci        return nullptr;
1650a5c7a17Sopenharmony_ci    }
1660a5c7a17Sopenharmony_ci    if ((ret = recorder->SetVideoSize(sourceId, width, height)) != SUCCESS) {
1670a5c7a17Sopenharmony_ci        cout << "SetVideoSize failed." << ret << endl;
1680a5c7a17Sopenharmony_ci        delete recorder;
1690a5c7a17Sopenharmony_ci        return nullptr;
1700a5c7a17Sopenharmony_ci    }
1710a5c7a17Sopenharmony_ci    if ((ret = recorder->SetVideoFrameRate(sourceId, frameRate)) != SUCCESS) {
1720a5c7a17Sopenharmony_ci        cout << "SetVideoFrameRate failed." << ret << endl;
1730a5c7a17Sopenharmony_ci        delete recorder;
1740a5c7a17Sopenharmony_ci        return nullptr;
1750a5c7a17Sopenharmony_ci    }
1760a5c7a17Sopenharmony_ci    if ((ret = recorder->SetVideoEncodingBitRate(sourceId, rate)) != SUCCESS) {
1770a5c7a17Sopenharmony_ci        cout << "SetVideoEncodingBitRate failed." << ret << endl;
1780a5c7a17Sopenharmony_ci        delete recorder;
1790a5c7a17Sopenharmony_ci        return nullptr;
1800a5c7a17Sopenharmony_ci    }
1810a5c7a17Sopenharmony_ci    if ((ret = recorder->SetCaptureRate(sourceId, fps)) != SUCCESS) {
1820a5c7a17Sopenharmony_ci        cout << "SetCaptureRate failed." << ret << endl;
1830a5c7a17Sopenharmony_ci        delete recorder;
1840a5c7a17Sopenharmony_ci        return nullptr;
1850a5c7a17Sopenharmony_ci    }
1860a5c7a17Sopenharmony_ci    if ((ret = SetupAudioSource(*recorder) != SUCCESS)) {
1870a5c7a17Sopenharmony_ci        delete recorder;
1880a5c7a17Sopenharmony_ci        return nullptr;
1890a5c7a17Sopenharmony_ci    }
1900a5c7a17Sopenharmony_ci    return recorder;
1910a5c7a17Sopenharmony_ci}
1920a5c7a17Sopenharmony_ci
1930a5c7a17Sopenharmony_ci/* *
1940a5c7a17Sopenharmony_ci * Create Frame StateCallback
1950a5c7a17Sopenharmony_ci */
1960a5c7a17Sopenharmony_ciclass SampleFrameStateCallback : public FrameStateCallback {
1970a5c7a17Sopenharmony_ci    /* *
1980a5c7a17Sopenharmony_ci     * check file exist
1990a5c7a17Sopenharmony_ci     *
2000a5c7a17Sopenharmony_ci     * @param filename the filename
2010a5c7a17Sopenharmony_ci     * @return  check result
2020a5c7a17Sopenharmony_ci     */
2030a5c7a17Sopenharmony_ci    int32_t FileCheck(const string &filename)
2040a5c7a17Sopenharmony_ci    {
2050a5c7a17Sopenharmony_ci        fstream fileTmp;
2060a5c7a17Sopenharmony_ci        fileTmp.open(filename);
2070a5c7a17Sopenharmony_ci        if (!fileTmp) {
2080a5c7a17Sopenharmony_ci            cout << "file is not exist!" << endl;
2090a5c7a17Sopenharmony_ci            return RET_ERR;
2100a5c7a17Sopenharmony_ci        } else {
2110a5c7a17Sopenharmony_ci            cout << "file is exist!" << endl;
2120a5c7a17Sopenharmony_ci            fileTmp.close();
2130a5c7a17Sopenharmony_ci            return RET_OK;
2140a5c7a17Sopenharmony_ci        }
2150a5c7a17Sopenharmony_ci    }
2160a5c7a17Sopenharmony_ci
2170a5c7a17Sopenharmony_ci    /* *
2180a5c7a17Sopenharmony_ci     * Save Capture
2190a5c7a17Sopenharmony_ci     *
2200a5c7a17Sopenharmony_ci     * @param testPath the file path
2210a5c7a17Sopenharmony_ci     * @param buffer the buffer
2220a5c7a17Sopenharmony_ci     * @param size the size
2230a5c7a17Sopenharmony_ci     * @return save result
2240a5c7a17Sopenharmony_ci     */
2250a5c7a17Sopenharmony_ci    int32_t SampleSaveCapture(string testPath, const char *buffer, uint32_t size)
2260a5c7a17Sopenharmony_ci    {
2270a5c7a17Sopenharmony_ci        cout << "Start saving picture" << endl;
2280a5c7a17Sopenharmony_ci        string filePath = "";
2290a5c7a17Sopenharmony_ci        struct timeval tv = {0};
2300a5c7a17Sopenharmony_ci
2310a5c7a17Sopenharmony_ci        gettimeofday(&tv, NULL);
2320a5c7a17Sopenharmony_ci        struct tm *ltm = localtime(&tv.tv_sec);
2330a5c7a17Sopenharmony_ci        if (ltm != nullptr) {
2340a5c7a17Sopenharmony_ci            ostringstream ss("Capture_");
2350a5c7a17Sopenharmony_ci            ss << "Capture" << ltm->tm_hour << "_" << ltm->tm_min << "_" << ltm->tm_sec << ".jpg";
2360a5c7a17Sopenharmony_ci            filePath = testPath + ss.str();
2370a5c7a17Sopenharmony_ci            ofstream pic(testPath + ss.str(), ofstream::out | ofstream::trunc);
2380a5c7a17Sopenharmony_ci            cout << "write " << size << " bytes" << endl;
2390a5c7a17Sopenharmony_ci            pic.write(buffer, size);
2400a5c7a17Sopenharmony_ci            cout << "Saving picture end" << endl;
2410a5c7a17Sopenharmony_ci        }
2420a5c7a17Sopenharmony_ci        const char *filename = filePath.data();
2430a5c7a17Sopenharmony_ci        int32_t ret = FileCheck(string(filename));
2440a5c7a17Sopenharmony_ci        return ret;
2450a5c7a17Sopenharmony_ci    }
2460a5c7a17Sopenharmony_ci
2470a5c7a17Sopenharmony_ci    void OnFrameFinished(Camera &cam, FrameConfig &fc, FrameResult &res) override
2480a5c7a17Sopenharmony_ci    {
2490a5c7a17Sopenharmony_ci        g_onFrameStartedFlag = true;
2500a5c7a17Sopenharmony_ci        g_onFrameProgressedFlag = true;
2510a5c7a17Sopenharmony_ci        cout << "Receive frame complete inform." << endl;
2520a5c7a17Sopenharmony_ci        if (fc.GetFrameConfigType() == FRAME_CONFIG_CAPTURE) {
2530a5c7a17Sopenharmony_ci            g_onGetFrameConfigureType = true;
2540a5c7a17Sopenharmony_ci            cout << "Capture frame received." << endl;
2550a5c7a17Sopenharmony_ci            list<Surface *> surfaceList = fc.GetSurfaces();
2560a5c7a17Sopenharmony_ci            for (Surface *surface : surfaceList) {
2570a5c7a17Sopenharmony_ci                SurfaceBuffer *buffer = surface->AcquireBuffer();
2580a5c7a17Sopenharmony_ci                if (buffer != nullptr) {
2590a5c7a17Sopenharmony_ci                    char *virtAddr = static_cast<char *>(buffer->GetVirAddr());
2600a5c7a17Sopenharmony_ci                    if (virtAddr != nullptr) {
2610a5c7a17Sopenharmony_ci                        SampleSaveCapture(g_testPath, virtAddr, buffer->GetSize());
2620a5c7a17Sopenharmony_ci                    } else {
2630a5c7a17Sopenharmony_ci                        g_onFrameErrorFlag = true;
2640a5c7a17Sopenharmony_ci                    }
2650a5c7a17Sopenharmony_ci                    surface->ReleaseBuffer(buffer);
2660a5c7a17Sopenharmony_ci                } else {
2670a5c7a17Sopenharmony_ci                    g_onFrameErrorFlag = true;
2680a5c7a17Sopenharmony_ci                }
2690a5c7a17Sopenharmony_ci                delete surface;
2700a5c7a17Sopenharmony_ci            }
2710a5c7a17Sopenharmony_ci            delete &fc;
2720a5c7a17Sopenharmony_ci        } else {
2730a5c7a17Sopenharmony_ci            g_onFrameErrorFlag = true;
2740a5c7a17Sopenharmony_ci        }
2750a5c7a17Sopenharmony_ci        g_onFrameFinishedFlag = true;
2760a5c7a17Sopenharmony_ci    }
2770a5c7a17Sopenharmony_ci};
2780a5c7a17Sopenharmony_ci
2790a5c7a17Sopenharmony_ci/* *
2800a5c7a17Sopenharmony_ci * create CameraStateCallback
2810a5c7a17Sopenharmony_ci */
2820a5c7a17Sopenharmony_ciclass SampleCameraStateMng : public CameraStateCallback {
2830a5c7a17Sopenharmony_cipublic:
2840a5c7a17Sopenharmony_ci    SampleCameraStateMng() = delete;
2850a5c7a17Sopenharmony_ci
2860a5c7a17Sopenharmony_ci    explicit SampleCameraStateMng(EventHandler &eventHdlr) : eventHandler_(eventHdlr) {}
2870a5c7a17Sopenharmony_ci
2880a5c7a17Sopenharmony_ci    ~SampleCameraStateMng()
2890a5c7a17Sopenharmony_ci    {
2900a5c7a17Sopenharmony_ci        if (recorder_ != nullptr) {
2910a5c7a17Sopenharmony_ci            recorder_->Release();
2920a5c7a17Sopenharmony_ci        }
2930a5c7a17Sopenharmony_ci        if (cam_ != nullptr) {
2940a5c7a17Sopenharmony_ci            cam_->Release();
2950a5c7a17Sopenharmony_ci        }
2960a5c7a17Sopenharmony_ci    }
2970a5c7a17Sopenharmony_ci
2980a5c7a17Sopenharmony_ci    void OnCreated(Camera &c) override
2990a5c7a17Sopenharmony_ci    {
3000a5c7a17Sopenharmony_ci        g_onCreatedFlag = true;
3010a5c7a17Sopenharmony_ci        cout << "Sample recv OnCreate camera." << endl;
3020a5c7a17Sopenharmony_ci        auto config = CameraConfig::CreateCameraConfig();
3030a5c7a17Sopenharmony_ci        config->SetFrameStateCallback(&fsCb, &eventHandler_);
3040a5c7a17Sopenharmony_ci        c.Configure(*config);
3050a5c7a17Sopenharmony_ci        g_onConfigureFlag = true;
3060a5c7a17Sopenharmony_ci        cam_ = &c;
3070a5c7a17Sopenharmony_ci    }
3080a5c7a17Sopenharmony_ci
3090a5c7a17Sopenharmony_ci    void OnCreateFailed(const std::string cameraId, int32_t errorCode) override
3100a5c7a17Sopenharmony_ci    {
3110a5c7a17Sopenharmony_ci        g_onCreateFailedFlag = true;
3120a5c7a17Sopenharmony_ci        cout << "Camera  ID: " << cameraId << endl;
3130a5c7a17Sopenharmony_ci        cout << "Sample recv OnCreateFailed camera.: " << errorCode << endl;
3140a5c7a17Sopenharmony_ci    }
3150a5c7a17Sopenharmony_ci
3160a5c7a17Sopenharmony_ci    void OnReleased(Camera &c) override
3170a5c7a17Sopenharmony_ci    {
3180a5c7a17Sopenharmony_ci        g_onReleasedFlag = true;
3190a5c7a17Sopenharmony_ci        cout << "Sample recv OnReleased camera." << endl;
3200a5c7a17Sopenharmony_ci    }
3210a5c7a17Sopenharmony_ci
3220a5c7a17Sopenharmony_ci    void StartRecord()
3230a5c7a17Sopenharmony_ci    {
3240a5c7a17Sopenharmony_ci        int ret;
3250a5c7a17Sopenharmony_ci        if (isRecording_) {
3260a5c7a17Sopenharmony_ci            cout << "Camera is already recording." << endl;
3270a5c7a17Sopenharmony_ci            return;
3280a5c7a17Sopenharmony_ci        }
3290a5c7a17Sopenharmony_ci        if (recorder_ != nullptr) {
3300a5c7a17Sopenharmony_ci            cout << "Recorder is not null" << endl;
3310a5c7a17Sopenharmony_ci        }
3320a5c7a17Sopenharmony_ci        recorder_ = SampleCreateRecorder();
3330a5c7a17Sopenharmony_ci        if (recorder_ == nullptr) {
3340a5c7a17Sopenharmony_ci            cout << "Recorder not available" << endl;
3350a5c7a17Sopenharmony_ci            return;
3360a5c7a17Sopenharmony_ci        }
3370a5c7a17Sopenharmony_ci        string path = GetCurDir();
3380a5c7a17Sopenharmony_ci        ret = recorder_->SetOutputPath(path);
3390a5c7a17Sopenharmony_ci        if (ret != SUCCESS) {
3400a5c7a17Sopenharmony_ci            cout << "SetOutputPath failed :" << ret << std::endl;
3410a5c7a17Sopenharmony_ci            return;
3420a5c7a17Sopenharmony_ci        }
3430a5c7a17Sopenharmony_ci
3440a5c7a17Sopenharmony_ci        ret = recorder_->Prepare();
3450a5c7a17Sopenharmony_ci        if (ret != SUCCESS) {
3460a5c7a17Sopenharmony_ci            cout << "Prepare failed.=" << ret << endl;
3470a5c7a17Sopenharmony_ci            return;
3480a5c7a17Sopenharmony_ci        }
3490a5c7a17Sopenharmony_ci        auto surface = recorder_->GetSurface(0);
3500a5c7a17Sopenharmony_ci        surface->SetWidthAndHeight(WIDTH, HEIGHT);
3510a5c7a17Sopenharmony_ci        surface->SetQueueSize(QUEUE_SIZE);
3520a5c7a17Sopenharmony_ci        surface->SetSize(BUFFER_SIZE * BUFFER_SIZE);
3530a5c7a17Sopenharmony_ci        FrameConfig *fc = new FrameConfig(FRAME_CONFIG_RECORD);
3540a5c7a17Sopenharmony_ci        fc->AddSurface(*surface);
3550a5c7a17Sopenharmony_ci        ret = recorder_->Start();
3560a5c7a17Sopenharmony_ci        if (ret != SUCCESS) {
3570a5c7a17Sopenharmony_ci            cout << "recorder start failed. ret=" << ret << endl;
3580a5c7a17Sopenharmony_ci            delete fc;
3590a5c7a17Sopenharmony_ci            return;
3600a5c7a17Sopenharmony_ci        }
3610a5c7a17Sopenharmony_ci        static int cnt = 3;
3620a5c7a17Sopenharmony_ci        while (cam_ == nullptr) {
3630a5c7a17Sopenharmony_ci            if (cnt-- < 0)
3640a5c7a17Sopenharmony_ci                break;
3650a5c7a17Sopenharmony_ci            cout << "Wait camera created success" << endl;
3660a5c7a17Sopenharmony_ci            sleep(1);
3670a5c7a17Sopenharmony_ci        }
3680a5c7a17Sopenharmony_ci        if (cam_ ==nullptr) {
3690a5c7a17Sopenharmony_ci            cout << "StartRecord camera created failed is cam_ is nullptr" << endl;
3700a5c7a17Sopenharmony_ci            return;
3710a5c7a17Sopenharmony_ci        }
3720a5c7a17Sopenharmony_ci        ret = cam_->TriggerLoopingCapture(*fc);
3730a5c7a17Sopenharmony_ci        if (ret != 0) {
3740a5c7a17Sopenharmony_ci            cout << "camera start recording failed. ret=" << ret << endl;
3750a5c7a17Sopenharmony_ci            return;
3760a5c7a17Sopenharmony_ci        }
3770a5c7a17Sopenharmony_ci        isRecording_ = true;
3780a5c7a17Sopenharmony_ci        g_onRecorderFlag = true;
3790a5c7a17Sopenharmony_ci        cout << "camera start recording succeed." << endl;
3800a5c7a17Sopenharmony_ci    }
3810a5c7a17Sopenharmony_ci
3820a5c7a17Sopenharmony_ci    void StartPreview()
3830a5c7a17Sopenharmony_ci    {
3840a5c7a17Sopenharmony_ci        if (isPreviewing_) {
3850a5c7a17Sopenharmony_ci            cout << "Camera is already previewing." << endl;
3860a5c7a17Sopenharmony_ci            return;
3870a5c7a17Sopenharmony_ci        }
3880a5c7a17Sopenharmony_ci        FrameConfig *fc = new FrameConfig(FRAME_CONFIG_PREVIEW);
3890a5c7a17Sopenharmony_ci        UISurfaceView *surface = new UISurfaceView();
3900a5c7a17Sopenharmony_ci        int width = 960;
3910a5c7a17Sopenharmony_ci        int height = 480;
3920a5c7a17Sopenharmony_ci        if (surface == nullptr) {
3930a5c7a17Sopenharmony_ci            cout << "CreateSurface failed" << endl;
3940a5c7a17Sopenharmony_ci            delete fc;
3950a5c7a17Sopenharmony_ci            return;
3960a5c7a17Sopenharmony_ci        }
3970a5c7a17Sopenharmony_ci        surface->SetPosition(0, 0, width, height);
3980a5c7a17Sopenharmony_ci        surface->GetSurface()->SetWidthAndHeight(WIDTH, HEIGHT);
3990a5c7a17Sopenharmony_ci        fc->AddSurface(*(surface->GetSurface()));
4000a5c7a17Sopenharmony_ci        static int cnt = 3;
4010a5c7a17Sopenharmony_ci        while (cam_ == nullptr) {
4020a5c7a17Sopenharmony_ci            if (cnt-- < 0)
4030a5c7a17Sopenharmony_ci                break;
4040a5c7a17Sopenharmony_ci            cout << "Wait camera created success" << endl;
4050a5c7a17Sopenharmony_ci            sleep(1);
4060a5c7a17Sopenharmony_ci        }
4070a5c7a17Sopenharmony_ci        if (cam_ ==nullptr) {
4080a5c7a17Sopenharmony_ci            cout << "StartPreview camera created failed is cam_ is nullptr" << endl;
4090a5c7a17Sopenharmony_ci            return;
4100a5c7a17Sopenharmony_ci        }
4110a5c7a17Sopenharmony_ci        int32_t ret = cam_->TriggerLoopingCapture(*fc);
4120a5c7a17Sopenharmony_ci        if (ret != 0) {
4130a5c7a17Sopenharmony_ci            cout << "camera start preview failed. ret=" << ret << endl;
4140a5c7a17Sopenharmony_ci            delete fc;
4150a5c7a17Sopenharmony_ci            return;
4160a5c7a17Sopenharmony_ci        }
4170a5c7a17Sopenharmony_ci        delete surface;
4180a5c7a17Sopenharmony_ci        isPreviewing_ = true;
4190a5c7a17Sopenharmony_ci        g_onPreviewFlag = true;
4200a5c7a17Sopenharmony_ci        cout << "camera start preview succeed." << endl;
4210a5c7a17Sopenharmony_ci    }
4220a5c7a17Sopenharmony_ci
4230a5c7a17Sopenharmony_ci    void Capture(void)
4240a5c7a17Sopenharmony_ci    {
4250a5c7a17Sopenharmony_ci        FrameConfig *fc = new FrameConfig(FRAME_CONFIG_CAPTURE);
4260a5c7a17Sopenharmony_ci        Surface *surface = Surface::CreateSurface();
4270a5c7a17Sopenharmony_ci        if (surface == nullptr) {
4280a5c7a17Sopenharmony_ci            cout << "CreateSurface failed" << endl;
4290a5c7a17Sopenharmony_ci            delete fc;
4300a5c7a17Sopenharmony_ci            return;
4310a5c7a17Sopenharmony_ci        }
4320a5c7a17Sopenharmony_ci        surface->SetWidthAndHeight(WIDTH, HEIGHT);
4330a5c7a17Sopenharmony_ci        fc->AddSurface(*surface);
4340a5c7a17Sopenharmony_ci        static int cnt = 3;
4350a5c7a17Sopenharmony_ci        while (cam_ == nullptr) {
4360a5c7a17Sopenharmony_ci            if (cnt-- < 0)
4370a5c7a17Sopenharmony_ci                break;
4380a5c7a17Sopenharmony_ci            cout << "Wait camera created success" << endl;
4390a5c7a17Sopenharmony_ci            sleep(1);
4400a5c7a17Sopenharmony_ci        }
4410a5c7a17Sopenharmony_ci        if (cam_ ==nullptr) {
4420a5c7a17Sopenharmony_ci            cout << "Capture camera created failed is cam_ is nullptr" << endl;
4430a5c7a17Sopenharmony_ci            return;
4440a5c7a17Sopenharmony_ci        }
4450a5c7a17Sopenharmony_ci        g_onCaptureTriggerStartedFlag = true;
4460a5c7a17Sopenharmony_ci        cam_->TriggerSingleCapture(*fc);
4470a5c7a17Sopenharmony_ci        g_onCaptureTriggerCompletedFlag = true;
4480a5c7a17Sopenharmony_ci    }
4490a5c7a17Sopenharmony_ci
4500a5c7a17Sopenharmony_ci    void Stop()
4510a5c7a17Sopenharmony_ci    {
4520a5c7a17Sopenharmony_ci        if (recorder_ != nullptr) {
4530a5c7a17Sopenharmony_ci            int32_t ret = recorder_->Stop(true);
4540a5c7a17Sopenharmony_ci            if (ret != 0) {
4550a5c7a17Sopenharmony_ci                cout << "recorder_ stop failed. ret=" << ret << endl;
4560a5c7a17Sopenharmony_ci            }
4570a5c7a17Sopenharmony_ci        }
4580a5c7a17Sopenharmony_ci
4590a5c7a17Sopenharmony_ci        if (cam_ == nullptr) {
4600a5c7a17Sopenharmony_ci            cout << "Camera is not ready." << endl;
4610a5c7a17Sopenharmony_ci            return;
4620a5c7a17Sopenharmony_ci        }
4630a5c7a17Sopenharmony_ci        cam_->StopLoopingCapture(-1);
4640a5c7a17Sopenharmony_ci        isPreviewing_ = false;
4650a5c7a17Sopenharmony_ci        isRecording_ = false;
4660a5c7a17Sopenharmony_ci        g_onRecorderFlag = false;
4670a5c7a17Sopenharmony_ci        g_onPreviewFlag = false;
4680a5c7a17Sopenharmony_ci    }
4690a5c7a17Sopenharmony_ci
4700a5c7a17Sopenharmony_ci    bool isPreviewing_ = false;
4710a5c7a17Sopenharmony_ci    bool isRecording_ = false;
4720a5c7a17Sopenharmony_ci    EventHandler &eventHandler_;
4730a5c7a17Sopenharmony_ci    Camera *cam_ = nullptr;
4740a5c7a17Sopenharmony_ci    Recorder *recorder_ = nullptr;
4750a5c7a17Sopenharmony_ci    SampleFrameStateCallback fsCb;
4760a5c7a17Sopenharmony_ci};
4770a5c7a17Sopenharmony_ci
4780a5c7a17Sopenharmony_ci/* *
4790a5c7a17Sopenharmony_ci * create CameraStateCallback for state test
4800a5c7a17Sopenharmony_ci */
4810a5c7a17Sopenharmony_ciclass SampleCameraStateCallback : public CameraStateCallback {
4820a5c7a17Sopenharmony_cipublic:
4830a5c7a17Sopenharmony_ci    SampleCameraStateCallback() = delete;
4840a5c7a17Sopenharmony_ci
4850a5c7a17Sopenharmony_ci    explicit SampleCameraStateCallback(EventHandler &eventHdlr) : eventHandler_(eventHdlr) {}
4860a5c7a17Sopenharmony_ci
4870a5c7a17Sopenharmony_ci    ~SampleCameraStateCallback()
4880a5c7a17Sopenharmony_ci    {
4890a5c7a17Sopenharmony_ci        if (cam_ != nullptr) {
4900a5c7a17Sopenharmony_ci            cam_->Release();
4910a5c7a17Sopenharmony_ci        }
4920a5c7a17Sopenharmony_ci    }
4930a5c7a17Sopenharmony_ci
4940a5c7a17Sopenharmony_ci    void OnCreated(Camera &c) override
4950a5c7a17Sopenharmony_ci    {
4960a5c7a17Sopenharmony_ci        g_onCreatedFlag = true;
4970a5c7a17Sopenharmony_ci        cout << "camera Create success." << endl;
4980a5c7a17Sopenharmony_ci        auto config = CameraConfig::CreateCameraConfig();
4990a5c7a17Sopenharmony_ci        config->SetFrameStateCallback(&fsCb, &eventHandler_);
5000a5c7a17Sopenharmony_ci        c.Configure(*config);
5010a5c7a17Sopenharmony_ci        cam_ = &c;
5020a5c7a17Sopenharmony_ci    }
5030a5c7a17Sopenharmony_ci
5040a5c7a17Sopenharmony_ci    void OnCreateFailed(const std::string cameraId, int32_t errorCode) override
5050a5c7a17Sopenharmony_ci    {
5060a5c7a17Sopenharmony_ci        g_onCreateFailedFlag = true;
5070a5c7a17Sopenharmony_ci        cout << "Camera  ID: " << cameraId << endl;
5080a5c7a17Sopenharmony_ci        cout << "Camera Create Failed: " << errorCode << endl;
5090a5c7a17Sopenharmony_ci    }
5100a5c7a17Sopenharmony_ci
5110a5c7a17Sopenharmony_ci    void OnReleased(Camera &c) override
5120a5c7a17Sopenharmony_ci    {
5130a5c7a17Sopenharmony_ci        g_onReleasedFlag = true;
5140a5c7a17Sopenharmony_ci        cout << "camera Releasedsuccess." << endl;
5150a5c7a17Sopenharmony_ci    }
5160a5c7a17Sopenharmony_ci
5170a5c7a17Sopenharmony_ci    void OnConfigured(Camera &c) override
5180a5c7a17Sopenharmony_ci    {
5190a5c7a17Sopenharmony_ci        g_onConfiguredFlag = true;
5200a5c7a17Sopenharmony_ci        cout << "Camera Configured success." << endl;
5210a5c7a17Sopenharmony_ci    }
5220a5c7a17Sopenharmony_ci
5230a5c7a17Sopenharmony_ci    void OnConfigureFailed(const std::string cameraId, int32_t errorCode) override
5240a5c7a17Sopenharmony_ci    {
5250a5c7a17Sopenharmony_ci        g_onConfigureFailedFlag = true;
5260a5c7a17Sopenharmony_ci        cout << "Camera  ID: " << cameraId << endl;
5270a5c7a17Sopenharmony_ci        cout << "Camera Configured failed: " << errorCode << endl;
5280a5c7a17Sopenharmony_ci    }
5290a5c7a17Sopenharmony_ci
5300a5c7a17Sopenharmony_ci    EventHandler &eventHandler_;
5310a5c7a17Sopenharmony_ci    Camera *cam_ = nullptr;
5320a5c7a17Sopenharmony_ci    SampleFrameStateCallback fsCb;
5330a5c7a17Sopenharmony_ci};
5340a5c7a17Sopenharmony_ci
5350a5c7a17Sopenharmony_ci/* *
5360a5c7a17Sopenharmony_ci * Create camera device callback
5370a5c7a17Sopenharmony_ci */
5380a5c7a17Sopenharmony_ciclass SampleCameraDeviceCallback : public CameraDeviceCallback {
5390a5c7a17Sopenharmony_cipublic:
5400a5c7a17Sopenharmony_ci    SampleCameraDeviceCallback() {}
5410a5c7a17Sopenharmony_ci
5420a5c7a17Sopenharmony_ci    ~SampleCameraDeviceCallback() {}
5430a5c7a17Sopenharmony_ci
5440a5c7a17Sopenharmony_ci    void OnCameraStatus(std::string cameraId, int32_t status) override
5450a5c7a17Sopenharmony_ci    {
5460a5c7a17Sopenharmony_ci        cout << "SampleCameraDeviceCallback OnCameraStatus cam Id: \n" << cameraId << endl;
5470a5c7a17Sopenharmony_ci        if (status == CAMERA_DEVICE_STATE_AVAILABLE) {
5480a5c7a17Sopenharmony_ci            g_onCameraAvailableFlag = true;
5490a5c7a17Sopenharmony_ci            cout << "SampleCameraDeviceCallback onCameraAvailable\n" << endl;
5500a5c7a17Sopenharmony_ci        } else if (status == CAMERA_DEVICE_STATE_UNAVAILABLE) {
5510a5c7a17Sopenharmony_ci            g_onCameraUnavailableFlag = true;
5520a5c7a17Sopenharmony_ci            cout << "SampleCameraDeviceCallback onCameraUnavailable\n" << endl;
5530a5c7a17Sopenharmony_ci        }
5540a5c7a17Sopenharmony_ci    }
5550a5c7a17Sopenharmony_ci};
5560a5c7a17Sopenharmony_ci
5570a5c7a17Sopenharmony_ci/* *
5580a5c7a17Sopenharmony_ci * Get camera Id
5590a5c7a17Sopenharmony_ci */
5600a5c7a17Sopenharmony_cibool GetCameraId(CameraKit *cameraKit, list<string> &cameraList, string &cameraId)
5610a5c7a17Sopenharmony_ci{
5620a5c7a17Sopenharmony_ci    cameraKit = CameraKit::GetInstance();
5630a5c7a17Sopenharmony_ci    cameraList = cameraKit->GetCameraIds();
5640a5c7a17Sopenharmony_ci    for (auto &cam : cameraList) {
5650a5c7a17Sopenharmony_ci        cout << "camera name:" << cam << endl;
5660a5c7a17Sopenharmony_ci        const CameraAbility *ability = cameraKit->GetCameraAbility(cam);
5670a5c7a17Sopenharmony_ci        g_onGetCameraAbilityFlag = true;
5680a5c7a17Sopenharmony_ci        /* find camera which fits user's ability */
5690a5c7a17Sopenharmony_ci        list<CameraPicSize> sizeList = ability->GetSupportedSizes(0);
5700a5c7a17Sopenharmony_ci        if (sizeList.size() != 0) {
5710a5c7a17Sopenharmony_ci            g_onGetSupportedSizesFlag = true;
5720a5c7a17Sopenharmony_ci        }
5730a5c7a17Sopenharmony_ci        for (auto &pic : sizeList) {
5740a5c7a17Sopenharmony_ci            cout << "Pic size: " << pic.width << "x" << pic.height << endl;
5750a5c7a17Sopenharmony_ci            if (pic.width == WIDTH && pic.height == HEIGHT) {
5760a5c7a17Sopenharmony_ci                /* 1920:width,1080:height */
5770a5c7a17Sopenharmony_ci                cameraId = cam;
5780a5c7a17Sopenharmony_ci                break;
5790a5c7a17Sopenharmony_ci            }
5800a5c7a17Sopenharmony_ci        }
5810a5c7a17Sopenharmony_ci    }
5820a5c7a17Sopenharmony_ci
5830a5c7a17Sopenharmony_ci    if (cameraId.empty()) {
5840a5c7a17Sopenharmony_ci        cout << "No available camera.(1080p wanted)" << endl;
5850a5c7a17Sopenharmony_ci        return false;
5860a5c7a17Sopenharmony_ci    } else
5870a5c7a17Sopenharmony_ci        return true;
5880a5c7a17Sopenharmony_ci}
5890a5c7a17Sopenharmony_ci
5900a5c7a17Sopenharmony_ci/* start camera kit interface test */
5910a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetInstance_001, Level1)
5920a5c7a17Sopenharmony_ci{
5930a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
5940a5c7a17Sopenharmony_ci    EXPECT_NE(cameraKit, nullptr);
5950a5c7a17Sopenharmony_ci}
5960a5c7a17Sopenharmony_ci
5970a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetInstance_001, Level1)
5980a5c7a17Sopenharmony_ci{
5990a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
6000a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
6010a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
6020a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
6030a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
6040a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
6050a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
6060a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
6070a5c7a17Sopenharmony_ci        cameraKit = CameraKit::GetInstance();
6080a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
6090a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
6100a5c7a17Sopenharmony_ci    }
6110a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
6120a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
6130a5c7a17Sopenharmony_ci}
6140a5c7a17Sopenharmony_ci
6150a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraIds_001, Level1)
6160a5c7a17Sopenharmony_ci{
6170a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
6180a5c7a17Sopenharmony_ci    list<string> cameraList = cameraKit->GetCameraIds();
6190a5c7a17Sopenharmony_ci    EXPECT_TRUE(cameraList.size() > 0);
6200a5c7a17Sopenharmony_ci}
6210a5c7a17Sopenharmony_ci
6220a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetCameraIds_001, Level1)
6230a5c7a17Sopenharmony_ci{
6240a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
6250a5c7a17Sopenharmony_ci    list<string> cameraList;
6260a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
6270a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
6280a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
6290a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
6300a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
6310a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
6320a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
6330a5c7a17Sopenharmony_ci        cameraList = cameraKit->GetCameraIds();
6340a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
6350a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
6360a5c7a17Sopenharmony_ci    }
6370a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
6380a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
6390a5c7a17Sopenharmony_ci}
6400a5c7a17Sopenharmony_ci
6410a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraAbility_001, Level1)
6420a5c7a17Sopenharmony_ci{
6430a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
6440a5c7a17Sopenharmony_ci    string cameraId = "0";
6450a5c7a17Sopenharmony_ci    const CameraAbility *ability = cameraKit->GetCameraAbility(cameraId);
6460a5c7a17Sopenharmony_ci    EXPECT_NE(ability, nullptr);
6470a5c7a17Sopenharmony_ci}
6480a5c7a17Sopenharmony_ci
6490a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraAbility_002, Level1)
6500a5c7a17Sopenharmony_ci{
6510a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
6520a5c7a17Sopenharmony_ci    string errorCameraId = "-1";
6530a5c7a17Sopenharmony_ci    const CameraAbility *ability = cameraKit->GetCameraAbility(errorCameraId);
6540a5c7a17Sopenharmony_ci    EXPECT_EQ(ability, nullptr);
6550a5c7a17Sopenharmony_ci}
6560a5c7a17Sopenharmony_ci
6570a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraAbility_003, Level1)
6580a5c7a17Sopenharmony_ci{
6590a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
6600a5c7a17Sopenharmony_ci    string errorCameraId = "main";
6610a5c7a17Sopenharmony_ci    const CameraAbility *ability = cameraKit->GetCameraAbility(errorCameraId);
6620a5c7a17Sopenharmony_ci    EXPECT_EQ(ability, nullptr);
6630a5c7a17Sopenharmony_ci}
6640a5c7a17Sopenharmony_ci
6650a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetCameraAbility_001, Level1)
6660a5c7a17Sopenharmony_ci{
6670a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
6680a5c7a17Sopenharmony_ci    const CameraAbility *ability = nullptr;
6690a5c7a17Sopenharmony_ci    string cameraId = "0";
6700a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
6710a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
6720a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
6730a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
6740a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
6750a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
6760a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
6770a5c7a17Sopenharmony_ci        ability = cameraKit->GetCameraAbility(cameraId);
6780a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
6790a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
6800a5c7a17Sopenharmony_ci    }
6810a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
6820a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
6830a5c7a17Sopenharmony_ci}
6840a5c7a17Sopenharmony_ci
6850a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraInfo_001, Level1)
6860a5c7a17Sopenharmony_ci{
6870a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
6880a5c7a17Sopenharmony_ci    list<string> cameraList = cameraKit->GetCameraIds();
6890a5c7a17Sopenharmony_ci    for (auto &cameraId : cameraList) {
6900a5c7a17Sopenharmony_ci        const CameraInfo *cameraInfo = cameraKit->GetCameraInfo(cameraId);
6910a5c7a17Sopenharmony_ci        EXPECT_NE(cameraInfo, nullptr);
6920a5c7a17Sopenharmony_ci    }
6930a5c7a17Sopenharmony_ci}
6940a5c7a17Sopenharmony_ci
6950a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraInfo_002, Level1)
6960a5c7a17Sopenharmony_ci{
6970a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
6980a5c7a17Sopenharmony_ci    string errorCameraId = "-1";
6990a5c7a17Sopenharmony_ci    const CameraInfo *cameraInfo = cameraKit->GetCameraInfo(errorCameraId);
7000a5c7a17Sopenharmony_ci    EXPECT_EQ(cameraInfo, nullptr);
7010a5c7a17Sopenharmony_ci}
7020a5c7a17Sopenharmony_ci
7030a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraInfo_003, Level1)
7040a5c7a17Sopenharmony_ci{
7050a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
7060a5c7a17Sopenharmony_ci    string errorCameraId = "main";
7070a5c7a17Sopenharmony_ci    const CameraInfo *cameraInfo = cameraKit->GetCameraInfo(errorCameraId);
7080a5c7a17Sopenharmony_ci    EXPECT_EQ(cameraInfo, nullptr);
7090a5c7a17Sopenharmony_ci}
7100a5c7a17Sopenharmony_ci
7110a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetCameraInfo_001, Level1)
7120a5c7a17Sopenharmony_ci{
7130a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
7140a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
7150a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
7160a5c7a17Sopenharmony_ci    string cameraId = "0";
7170a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
7180a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
7190a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
7200a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
7210a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
7220a5c7a17Sopenharmony_ci        cameraKit->GetCameraInfo(cameraId);
7230a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
7240a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
7250a5c7a17Sopenharmony_ci    }
7260a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
7270a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
7280a5c7a17Sopenharmony_ci}
7290a5c7a17Sopenharmony_ci
7300a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_RegisterCameraDeviceCallback_001, Level1)
7310a5c7a17Sopenharmony_ci{
7320a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
7330a5c7a17Sopenharmony_ci    list<string> cameraList;
7340a5c7a17Sopenharmony_ci    string cameraId;
7350a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
7360a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
7370a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
7380a5c7a17Sopenharmony_ci    SampleCameraDeviceCallback deviceCallback = SampleCameraDeviceCallback();
7390a5c7a17Sopenharmony_ci    g_onCameraAvailableFlag = false;
7400a5c7a17Sopenharmony_ci    cameraKit->RegisterCameraDeviceCallback(deviceCallback, eventHdlr);
7410a5c7a17Sopenharmony_ci    sleep(2);
7420a5c7a17Sopenharmony_ci    EXPECT_TRUE(g_onCameraAvailableFlag);
7430a5c7a17Sopenharmony_ci}
7440a5c7a17Sopenharmony_ci
7450a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_RegisterCameraDeviceCallback_001, Level1)
7460a5c7a17Sopenharmony_ci{
7470a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
7480a5c7a17Sopenharmony_ci    list<string> cameraList;
7490a5c7a17Sopenharmony_ci    string cameraId;
7500a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
7510a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
7520a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
7530a5c7a17Sopenharmony_ci    SampleCameraDeviceCallback deviceCallback = SampleCameraDeviceCallback();
7540a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
7550a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
7560a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
7570a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
7580a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
7590a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
7600a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
7610a5c7a17Sopenharmony_ci        cameraKit->RegisterCameraDeviceCallback(deviceCallback, eventHdlr);
7620a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
7630a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
7640a5c7a17Sopenharmony_ci    }
7650a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
7660a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
7670a5c7a17Sopenharmony_ci}
7680a5c7a17Sopenharmony_ci
7690a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_UnregisterCameraDeviceCallback_001, Level1)
7700a5c7a17Sopenharmony_ci{
7710a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
7720a5c7a17Sopenharmony_ci    list<string> cameraList;
7730a5c7a17Sopenharmony_ci    string cameraId;
7740a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
7750a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
7760a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
7770a5c7a17Sopenharmony_ci    SampleCameraDeviceCallback deviceCallback = SampleCameraDeviceCallback();
7780a5c7a17Sopenharmony_ci    g_onCameraAvailableFlag = false;
7790a5c7a17Sopenharmony_ci    cameraKit->RegisterCameraDeviceCallback(deviceCallback, eventHdlr);
7800a5c7a17Sopenharmony_ci    sleep(2);
7810a5c7a17Sopenharmony_ci    g_onCameraAvailableFlag = false;
7820a5c7a17Sopenharmony_ci    cameraKit->UnregisterCameraDeviceCallback(deviceCallback);
7830a5c7a17Sopenharmony_ci    sleep(2);
7840a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCameraAvailableFlag, false);
7850a5c7a17Sopenharmony_ci}
7860a5c7a17Sopenharmony_ci
7870a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_UnregisterCameraDeviceCallback_001, Level1)
7880a5c7a17Sopenharmony_ci{
7890a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
7900a5c7a17Sopenharmony_ci    list<string> cameraList;
7910a5c7a17Sopenharmony_ci    string cameraId;
7920a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
7930a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
7940a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
7950a5c7a17Sopenharmony_ci    SampleCameraDeviceCallback deviceCallback = SampleCameraDeviceCallback();
7960a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
7970a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
7980a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
7990a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
8000a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
8010a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
8020a5c7a17Sopenharmony_ci        cameraKit->RegisterCameraDeviceCallback(deviceCallback, eventHdlr);
8030a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
8040a5c7a17Sopenharmony_ci        cameraKit->UnregisterCameraDeviceCallback(deviceCallback);
8050a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
8060a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
8070a5c7a17Sopenharmony_ci    }
8080a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
8090a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
8100a5c7a17Sopenharmony_ci}
8110a5c7a17Sopenharmony_ci
8120a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_CreateCamera_001, Level1)
8130a5c7a17Sopenharmony_ci{
8140a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
8150a5c7a17Sopenharmony_ci    string cameraId = "0";
8160a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
8170a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
8180a5c7a17Sopenharmony_ci    g_onCreatedFlag = false;
8190a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
8200a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
8210a5c7a17Sopenharmony_ci    sleep(2);
8220a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreatedFlag, true);
8230a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreateFailedFlag, false);
8240a5c7a17Sopenharmony_ci}
8250a5c7a17Sopenharmony_ci
8260a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_CreateCamera_002, Level1)
8270a5c7a17Sopenharmony_ci{
8280a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
8290a5c7a17Sopenharmony_ci    string cameraId = "main";
8300a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
8310a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
8320a5c7a17Sopenharmony_ci    g_onCreatedFlag = false;
8330a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
8340a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
8350a5c7a17Sopenharmony_ci    sleep(2);
8360a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreatedFlag, false);
8370a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreateFailedFlag, true);
8380a5c7a17Sopenharmony_ci}
8390a5c7a17Sopenharmony_ci
8400a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_CreateCamera_003, Level1)
8410a5c7a17Sopenharmony_ci{
8420a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
8430a5c7a17Sopenharmony_ci    list<string> cameraList;
8440a5c7a17Sopenharmony_ci    string cameraId = "0";
8450a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
8460a5c7a17Sopenharmony_ci    g_onCreatedFlag = false;
8470a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
8480a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
8490a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
8500a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
8510a5c7a17Sopenharmony_ci    sleep(2);
8520a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreatedFlag, true);
8530a5c7a17Sopenharmony_ci}
8540a5c7a17Sopenharmony_ci
8550a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_CreateCamera_004, Level1)
8560a5c7a17Sopenharmony_ci{
8570a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
8580a5c7a17Sopenharmony_ci    string cameraId = "0";
8590a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
8600a5c7a17Sopenharmony_ci    g_onCreatedFlag = false;
8610a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
8620a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
8630a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
8640a5c7a17Sopenharmony_ci    sleep(2);
8650a5c7a17Sopenharmony_ci    cameraId = "-1";
8660a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
8670a5c7a17Sopenharmony_ci    sleep(2);
8680a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreatedFlag, true);
8690a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreateFailedFlag, true);
8700a5c7a17Sopenharmony_ci}
8710a5c7a17Sopenharmony_ci
8720a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_CreateCamera_001, Level1)
8730a5c7a17Sopenharmony_ci{
8740a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
8750a5c7a17Sopenharmony_ci    string cameraId = "0";
8760a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
8770a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
8780a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
8790a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
8800a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
8810a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
8820a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
8830a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
8840a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
8850a5c7a17Sopenharmony_ci        cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
8860a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
8870a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
8880a5c7a17Sopenharmony_ci    }
8890a5c7a17Sopenharmony_ci    int64_t expectTime = 500000000;
8900a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
8910a5c7a17Sopenharmony_ci} /* end camera kit interface test */
8920a5c7a17Sopenharmony_ci
8930a5c7a17Sopenharmony_ci/* start camera ability interface test */
8940a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSupportedSizes_001, Level1)
8950a5c7a17Sopenharmony_ci{
8960a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
8970a5c7a17Sopenharmony_ci    list<string> cameraList = cameraKit->GetCameraIds();
8980a5c7a17Sopenharmony_ci    for (auto &cameraId : cameraList) {
8990a5c7a17Sopenharmony_ci        const CameraAbility *ability = cameraKit->GetCameraAbility(cameraId);
9000a5c7a17Sopenharmony_ci        list<CameraPicSize> cameraPicSizes = ability->GetSupportedSizes(0);
9010a5c7a17Sopenharmony_ci        EXPECT_TRUE(cameraPicSizes.size() > 0);
9020a5c7a17Sopenharmony_ci    }
9030a5c7a17Sopenharmony_ci}
9040a5c7a17Sopenharmony_ci
9050a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetSupportedSizes_001, Level1)
9060a5c7a17Sopenharmony_ci{
9070a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
9080a5c7a17Sopenharmony_ci    string cameraId = "0";
9090a5c7a17Sopenharmony_ci    const CameraAbility *ability = cameraKit->GetCameraAbility(cameraId);
9100a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
9110a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
9120a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
9130a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
9140a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
9150a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
9160a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
9170a5c7a17Sopenharmony_ci        ability->GetSupportedSizes(0);
9180a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
9190a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
9200a5c7a17Sopenharmony_ci    }
9210a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
9220a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
9230a5c7a17Sopenharmony_ci}
9240a5c7a17Sopenharmony_ci
9250a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSupportedAfModes_001, Level1)
9260a5c7a17Sopenharmony_ci{
9270a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
9280a5c7a17Sopenharmony_ci    list<string> cameraList = cameraKit->GetCameraIds();
9290a5c7a17Sopenharmony_ci    for (auto &cameraId : cameraList) {
9300a5c7a17Sopenharmony_ci        const CameraAbility *ability = cameraKit->GetCameraAbility(cameraId);
9310a5c7a17Sopenharmony_ci        list<int32_t> afModes = ability->GetSupportedAfModes();
9320a5c7a17Sopenharmony_ci        EXPECT_TRUE(afModes.size() >= 0);
9330a5c7a17Sopenharmony_ci    }
9340a5c7a17Sopenharmony_ci}
9350a5c7a17Sopenharmony_ci
9360a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetSupportedAfModes_001, Level1)
9370a5c7a17Sopenharmony_ci{
9380a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
9390a5c7a17Sopenharmony_ci    string cameraId = "0";
9400a5c7a17Sopenharmony_ci    const CameraAbility *ability = cameraKit->GetCameraAbility(cameraId);
9410a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
9420a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
9430a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
9440a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
9450a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
9460a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
9470a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
9480a5c7a17Sopenharmony_ci        ability->GetSupportedAfModes();
9490a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
9500a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
9510a5c7a17Sopenharmony_ci    }
9520a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
9530a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
9540a5c7a17Sopenharmony_ci}
9550a5c7a17Sopenharmony_ci
9560a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSupportedAeModes_001, Level1)
9570a5c7a17Sopenharmony_ci{
9580a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
9590a5c7a17Sopenharmony_ci    list<string> cameraList = cameraKit->GetCameraIds();
9600a5c7a17Sopenharmony_ci    for (auto &cameraId : cameraList) {
9610a5c7a17Sopenharmony_ci        const CameraAbility *ability = cameraKit->GetCameraAbility(cameraId);
9620a5c7a17Sopenharmony_ci        list<int32_t> aeModes = ability->GetSupportedAeModes();
9630a5c7a17Sopenharmony_ci        EXPECT_TRUE(aeModes.size() >= 0);
9640a5c7a17Sopenharmony_ci    }
9650a5c7a17Sopenharmony_ci}
9660a5c7a17Sopenharmony_ci
9670a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetSupportedAeModes_001, Level1)
9680a5c7a17Sopenharmony_ci{
9690a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
9700a5c7a17Sopenharmony_ci    string cameraId = "0";
9710a5c7a17Sopenharmony_ci    const CameraAbility *ability = cameraKit->GetCameraAbility(cameraId);
9720a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
9730a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
9740a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
9750a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
9760a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
9770a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
9780a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
9790a5c7a17Sopenharmony_ci        ability->GetSupportedAeModes();
9800a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
9810a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
9820a5c7a17Sopenharmony_ci    }
9830a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
9840a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
9850a5c7a17Sopenharmony_ci} /* end camera ability interface test*/
9860a5c7a17Sopenharmony_ci
9870a5c7a17Sopenharmony_ci/* start camera state callback test */
9880a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_OnCreate_001, Level1)
9890a5c7a17Sopenharmony_ci{
9900a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
9910a5c7a17Sopenharmony_ci    string cameraId = "0";
9920a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
9930a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
9940a5c7a17Sopenharmony_ci    g_onCreatedFlag = false;
9950a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
9960a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
9970a5c7a17Sopenharmony_ci    sleep(2);
9980a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreatedFlag, true);
9990a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreateFailedFlag, false);
10000a5c7a17Sopenharmony_ci}
10010a5c7a17Sopenharmony_ci
10020a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_OnCreate_002, Level1)
10030a5c7a17Sopenharmony_ci{
10040a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
10050a5c7a17Sopenharmony_ci    string cameraId = "0";
10060a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
10070a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
10080a5c7a17Sopenharmony_ci    g_onCreatedFlag = false;
10090a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
10100a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
10110a5c7a17Sopenharmony_ci    sleep(2);
10120a5c7a17Sopenharmony_ci    camStateMng.Stop();
10130a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreatedFlag, true);
10140a5c7a17Sopenharmony_ci    EXPECT_NE(g_onCreateFailedFlag, true);
10150a5c7a17Sopenharmony_ci}
10160a5c7a17Sopenharmony_ci
10170a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_OnCreateFailed_001, Level1)
10180a5c7a17Sopenharmony_ci{
10190a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
10200a5c7a17Sopenharmony_ci    string cameraId = "-1";
10210a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
10220a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
10230a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
10240a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
10250a5c7a17Sopenharmony_ci    sleep(2);
10260a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreateFailedFlag, true);
10270a5c7a17Sopenharmony_ci}
10280a5c7a17Sopenharmony_ci
10290a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_OnCreateFailed_002, Level1)
10300a5c7a17Sopenharmony_ci{
10310a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
10320a5c7a17Sopenharmony_ci    string cameraId = "main";
10330a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
10340a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
10350a5c7a17Sopenharmony_ci    g_onCreateFailedFlag = false;
10360a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
10370a5c7a17Sopenharmony_ci    sleep(2);
10380a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCreateFailedFlag, true);
10390a5c7a17Sopenharmony_ci} /* end camera state callback test */
10400a5c7a17Sopenharmony_ci
10410a5c7a17Sopenharmony_ci/* start frame config & frame state call back interface test */
10420a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_FrameConfig_001, Level1)
10430a5c7a17Sopenharmony_ci{
10440a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
10450a5c7a17Sopenharmony_ci    EXPECT_NE(frameConfig.get(), nullptr);
10460a5c7a17Sopenharmony_ci}
10470a5c7a17Sopenharmony_ci
10480a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_FrameConfig_002, Level1)
10490a5c7a17Sopenharmony_ci{
10500a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_RECORD);
10510a5c7a17Sopenharmony_ci    EXPECT_NE(frameConfig.get(), nullptr);
10520a5c7a17Sopenharmony_ci}
10530a5c7a17Sopenharmony_ci
10540a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_FrameConfig_003, Level1)
10550a5c7a17Sopenharmony_ci{
10560a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
10570a5c7a17Sopenharmony_ci    EXPECT_NE(frameConfig.get(), nullptr);
10580a5c7a17Sopenharmony_ci}
10590a5c7a17Sopenharmony_ci
10600a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_FrameConfig_004, Level1)
10610a5c7a17Sopenharmony_ci{
10620a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CALLBACK);
10630a5c7a17Sopenharmony_ci    EXPECT_NE(frameConfig.get(), nullptr);
10640a5c7a17Sopenharmony_ci}
10650a5c7a17Sopenharmony_ci
10660a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_Frameconfig_001, Level1)
10670a5c7a17Sopenharmony_ci{
10680a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = nullptr;
10690a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
10700a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
10710a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
10720a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
10730a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
10740a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
10750a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
10760a5c7a17Sopenharmony_ci        frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
10770a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
10780a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
10790a5c7a17Sopenharmony_ci    }
10800a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
10810a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
10820a5c7a17Sopenharmony_ci}
10830a5c7a17Sopenharmony_ci
10840a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_Frameconfig_002, Level1)
10850a5c7a17Sopenharmony_ci{
10860a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = nullptr;
10870a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
10880a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
10890a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
10900a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
10910a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
10920a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
10930a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
10940a5c7a17Sopenharmony_ci        frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_RECORD);
10950a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
10960a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
10970a5c7a17Sopenharmony_ci    }
10980a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
10990a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
11000a5c7a17Sopenharmony_ci}
11010a5c7a17Sopenharmony_ci
11020a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_Frameconfig_003, Level1)
11030a5c7a17Sopenharmony_ci{
11040a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = nullptr;
11050a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
11060a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
11070a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
11080a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
11090a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
11100a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
11110a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
11120a5c7a17Sopenharmony_ci        frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
11130a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
11140a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
11150a5c7a17Sopenharmony_ci    }
11160a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
11170a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
11180a5c7a17Sopenharmony_ci}
11190a5c7a17Sopenharmony_ci
11200a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_Frameconfig_004, Level1)
11210a5c7a17Sopenharmony_ci{
11220a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = nullptr;
11230a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
11240a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
11250a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
11260a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
11270a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
11280a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
11290a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
11300a5c7a17Sopenharmony_ci        frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CALLBACK);
11310a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
11320a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
11330a5c7a17Sopenharmony_ci    }
11340a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
11350a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
11360a5c7a17Sopenharmony_ci}
11370a5c7a17Sopenharmony_ci
11380a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetFrameConfigureType_001, Level1)
11390a5c7a17Sopenharmony_ci{
11400a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
11410a5c7a17Sopenharmony_ci    string cameraId = "0";
11420a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
11430a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
11440a5c7a17Sopenharmony_ci    g_onGetFrameConfigureType = false;
11450a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
11460a5c7a17Sopenharmony_ci    sleep(2);
11470a5c7a17Sopenharmony_ci    camStateMng.Capture();
11480a5c7a17Sopenharmony_ci    sleep(2);
11490a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onGetFrameConfigureType, true);
11500a5c7a17Sopenharmony_ci}
11510a5c7a17Sopenharmony_ci
11520a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetFrameConfigureType_002, Level1)
11530a5c7a17Sopenharmony_ci{
11540a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
11550a5c7a17Sopenharmony_ci    string cameraId = "0";
11560a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
11570a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
11580a5c7a17Sopenharmony_ci    g_onGetFrameConfigureType = false;
11590a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
11600a5c7a17Sopenharmony_ci    sleep(2);
11610a5c7a17Sopenharmony_ci    camStateMng.Capture();
11620a5c7a17Sopenharmony_ci    sleep(2);
11630a5c7a17Sopenharmony_ci    camStateMng.Stop();
11640a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onGetFrameConfigureType, true);
11650a5c7a17Sopenharmony_ci}
11660a5c7a17Sopenharmony_ci
11670a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetFrameConfigureType_003, Level1)
11680a5c7a17Sopenharmony_ci{
11690a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
11700a5c7a17Sopenharmony_ci    string cameraId = "0";
11710a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
11720a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
11730a5c7a17Sopenharmony_ci    g_onGetFrameConfigureType = false;
11740a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
11750a5c7a17Sopenharmony_ci    sleep(2);
11760a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
11770a5c7a17Sopenharmony_ci    sleep(2);
11780a5c7a17Sopenharmony_ci    camStateMng.Stop();
11790a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onGetFrameConfigureType, false);
11800a5c7a17Sopenharmony_ci}
11810a5c7a17Sopenharmony_ci
11820a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetFrameConfigureType_004, Level1)
11830a5c7a17Sopenharmony_ci{
11840a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
11850a5c7a17Sopenharmony_ci    string cameraId = "0";
11860a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
11870a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
11880a5c7a17Sopenharmony_ci    g_onGetFrameConfigureType = false;
11890a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
11900a5c7a17Sopenharmony_ci    sleep(2);
11910a5c7a17Sopenharmony_ci    camStateMng.Capture();
11920a5c7a17Sopenharmony_ci    sleep(2);
11930a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
11940a5c7a17Sopenharmony_ci    sleep(2);
11950a5c7a17Sopenharmony_ci    camStateMng.Stop();
11960a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onGetFrameConfigureType, true);
11970a5c7a17Sopenharmony_ci}
11980a5c7a17Sopenharmony_ci
11990a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetFrameConfigureType_005, Level1)
12000a5c7a17Sopenharmony_ci{
12010a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
12020a5c7a17Sopenharmony_ci    string cameraId = "0";
12030a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
12040a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
12050a5c7a17Sopenharmony_ci    g_onGetFrameConfigureType = false;
12060a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
12070a5c7a17Sopenharmony_ci    sleep(2);
12080a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
12090a5c7a17Sopenharmony_ci    sleep(2);
12100a5c7a17Sopenharmony_ci    camStateMng.Capture();
12110a5c7a17Sopenharmony_ci    sleep(2);
12120a5c7a17Sopenharmony_ci    camStateMng.Stop();
12130a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onGetFrameConfigureType, true);
12140a5c7a17Sopenharmony_ci}
12150a5c7a17Sopenharmony_ci
12160a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_SetVendorParameter_001, Level1)
12170a5c7a17Sopenharmony_ci{
12180a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
12190a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
12200a5c7a17Sopenharmony_ci    privateTag[4] = 5;
12210a5c7a17Sopenharmony_ci    frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
12220a5c7a17Sopenharmony_ci    uint8_t *privateTagTemp = new uint8_t[10];
12230a5c7a17Sopenharmony_ci    frameConfig->GetVendorParameter(privateTagTemp, 10);
12240a5c7a17Sopenharmony_ci    EXPECT_TRUE(privateTagTemp[4] == 5);
12250a5c7a17Sopenharmony_ci    delete[] privateTag;
12260a5c7a17Sopenharmony_ci    delete[] privateTagTemp;
12270a5c7a17Sopenharmony_ci}
12280a5c7a17Sopenharmony_ci
12290a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_SetVendorParameter_002, Level1)
12300a5c7a17Sopenharmony_ci{
12310a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
12320a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
12330a5c7a17Sopenharmony_ci    privateTag[10] = 10;
12340a5c7a17Sopenharmony_ci    frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
12350a5c7a17Sopenharmony_ci    uint8_t *privateTagTemp = new uint8_t[PRIVATE_TAG_LEN];
12360a5c7a17Sopenharmony_ci    frameConfig->GetVendorParameter(privateTagTemp, PRIVATE_TAG_LEN);
12370a5c7a17Sopenharmony_ci    EXPECT_TRUE(privateTagTemp[10] == 10);
12380a5c7a17Sopenharmony_ci    delete[] privateTag;
12390a5c7a17Sopenharmony_ci    delete[] privateTagTemp;
12400a5c7a17Sopenharmony_ci}
12410a5c7a17Sopenharmony_ci
12420a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_SetVendorParameter_003, Level1)
12430a5c7a17Sopenharmony_ci{
12440a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_RECORD);
12450a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
12460a5c7a17Sopenharmony_ci    privateTag[0] = 1;
12470a5c7a17Sopenharmony_ci    frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
12480a5c7a17Sopenharmony_ci    uint8_t *privateTagTemp = new uint8_t[PRIVATE_TAG_LEN];
12490a5c7a17Sopenharmony_ci    frameConfig->GetVendorParameter(privateTagTemp, PRIVATE_TAG_LEN);
12500a5c7a17Sopenharmony_ci    EXPECT_TRUE(privateTagTemp[0] == 1);
12510a5c7a17Sopenharmony_ci    delete[] privateTag;
12520a5c7a17Sopenharmony_ci    delete[] privateTagTemp;
12530a5c7a17Sopenharmony_ci}
12540a5c7a17Sopenharmony_ci
12550a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_SetVendorParameter_004, Level1)
12560a5c7a17Sopenharmony_ci{
12570a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CALLBACK);
12580a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
12590a5c7a17Sopenharmony_ci    privateTag[31] = 31;
12600a5c7a17Sopenharmony_ci    frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
12610a5c7a17Sopenharmony_ci    uint8_t *privateTagTemp = new uint8_t[PRIVATE_TAG_LEN];
12620a5c7a17Sopenharmony_ci    frameConfig->GetVendorParameter(privateTagTemp, PRIVATE_TAG_LEN);
12630a5c7a17Sopenharmony_ci    EXPECT_TRUE(privateTagTemp[31] == 31);
12640a5c7a17Sopenharmony_ci    delete[] privateTag;
12650a5c7a17Sopenharmony_ci    delete[] privateTagTemp;
12660a5c7a17Sopenharmony_ci}
12670a5c7a17Sopenharmony_ci
12680a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_SetVendorParameter_001, Level1)
12690a5c7a17Sopenharmony_ci{
12700a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
12710a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
12720a5c7a17Sopenharmony_ci    privateTag[1] = 1;
12730a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
12740a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
12750a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
12760a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
12770a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
12780a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
12790a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
12800a5c7a17Sopenharmony_ci        frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
12810a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
12820a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
12830a5c7a17Sopenharmony_ci    }
12840a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
12850a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
12860a5c7a17Sopenharmony_ci    delete[] privateTag;
12870a5c7a17Sopenharmony_ci}
12880a5c7a17Sopenharmony_ci
12890a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_SetVendorParameter_002, Level1)
12900a5c7a17Sopenharmony_ci{
12910a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
12920a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
12930a5c7a17Sopenharmony_ci    privateTag[2] = 2;
12940a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
12950a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
12960a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
12970a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
12980a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
12990a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
13000a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
13010a5c7a17Sopenharmony_ci        frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
13020a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
13030a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
13040a5c7a17Sopenharmony_ci    }
13050a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
13060a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
13070a5c7a17Sopenharmony_ci    delete[] privateTag;
13080a5c7a17Sopenharmony_ci}
13090a5c7a17Sopenharmony_ci
13100a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_SetVendorParameter_003, Level1)
13110a5c7a17Sopenharmony_ci{
13120a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_RECORD);
13130a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
13140a5c7a17Sopenharmony_ci    privateTag[3] = 3;
13150a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
13160a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
13170a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
13180a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
13190a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
13200a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
13210a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
13220a5c7a17Sopenharmony_ci        frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
13230a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
13240a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
13250a5c7a17Sopenharmony_ci    }
13260a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
13270a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
13280a5c7a17Sopenharmony_ci    delete[] privateTag;
13290a5c7a17Sopenharmony_ci}
13300a5c7a17Sopenharmony_ci
13310a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_SetVendorParameter_004, Level1)
13320a5c7a17Sopenharmony_ci{
13330a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CALLBACK);
13340a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
13350a5c7a17Sopenharmony_ci    privateTag[4] = 4;
13360a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
13370a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
13380a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
13390a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
13400a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
13410a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
13420a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
13430a5c7a17Sopenharmony_ci        frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
13440a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
13450a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
13460a5c7a17Sopenharmony_ci    }
13470a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
13480a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
13490a5c7a17Sopenharmony_ci    delete[] privateTag;
13500a5c7a17Sopenharmony_ci}
13510a5c7a17Sopenharmony_ci
13520a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetVendorParameter_001, Level1)
13530a5c7a17Sopenharmony_ci{
13540a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
13550a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
13560a5c7a17Sopenharmony_ci    privateTag[1] = 1;
13570a5c7a17Sopenharmony_ci    frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
13580a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
13590a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
13600a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
13610a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
13620a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
13630a5c7a17Sopenharmony_ci    uint8_t *privateTagTemp = new uint8_t[PRIVATE_TAG_LEN];
13640a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
13650a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
13660a5c7a17Sopenharmony_ci        frameConfig->GetVendorParameter(privateTagTemp, PRIVATE_TAG_LEN);
13670a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
13680a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
13690a5c7a17Sopenharmony_ci    }
13700a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
13710a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
13720a5c7a17Sopenharmony_ci    delete[] privateTag;
13730a5c7a17Sopenharmony_ci    delete[] privateTagTemp;
13740a5c7a17Sopenharmony_ci}
13750a5c7a17Sopenharmony_ci
13760a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetVendorParameter_002, Level1)
13770a5c7a17Sopenharmony_ci{
13780a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
13790a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
13800a5c7a17Sopenharmony_ci    privateTag[2] = 2;
13810a5c7a17Sopenharmony_ci    frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
13820a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
13830a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
13840a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
13850a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
13860a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
13870a5c7a17Sopenharmony_ci    uint8_t *privateTagTemp = new uint8_t[PRIVATE_TAG_LEN];
13880a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
13890a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
13900a5c7a17Sopenharmony_ci        frameConfig->GetVendorParameter(privateTagTemp, PRIVATE_TAG_LEN);
13910a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
13920a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
13930a5c7a17Sopenharmony_ci    }
13940a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
13950a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
13960a5c7a17Sopenharmony_ci    delete[] privateTag;
13970a5c7a17Sopenharmony_ci    delete[] privateTagTemp;
13980a5c7a17Sopenharmony_ci}
13990a5c7a17Sopenharmony_ci
14000a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetVendorParameter_003, Level1)
14010a5c7a17Sopenharmony_ci{
14020a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_RECORD);
14030a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
14040a5c7a17Sopenharmony_ci    privateTag[3] = 3;
14050a5c7a17Sopenharmony_ci    frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
14060a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
14070a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
14080a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
14090a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
14100a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
14110a5c7a17Sopenharmony_ci    uint8_t *privateTagTemp = new uint8_t[PRIVATE_TAG_LEN];
14120a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
14130a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
14140a5c7a17Sopenharmony_ci        frameConfig->GetVendorParameter(privateTagTemp, PRIVATE_TAG_LEN);
14150a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
14160a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
14170a5c7a17Sopenharmony_ci    }
14180a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
14190a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
14200a5c7a17Sopenharmony_ci    delete[] privateTag;
14210a5c7a17Sopenharmony_ci    delete[] privateTagTemp;
14220a5c7a17Sopenharmony_ci}
14230a5c7a17Sopenharmony_ci
14240a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetVendorParameter_004, Level1)
14250a5c7a17Sopenharmony_ci{
14260a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CALLBACK);
14270a5c7a17Sopenharmony_ci    uint8_t *privateTag = new uint8_t[PRIVATE_TAG_LEN];
14280a5c7a17Sopenharmony_ci    privateTag[4] = 4;
14290a5c7a17Sopenharmony_ci    frameConfig->SetVendorParameter(privateTag, PRIVATE_TAG_LEN);
14300a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
14310a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
14320a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
14330a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
14340a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
14350a5c7a17Sopenharmony_ci    uint8_t *privateTagTemp = new uint8_t[PRIVATE_TAG_LEN];
14360a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
14370a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
14380a5c7a17Sopenharmony_ci        frameConfig->GetVendorParameter(privateTagTemp, PRIVATE_TAG_LEN);
14390a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
14400a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
14410a5c7a17Sopenharmony_ci    }
14420a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
14430a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
14440a5c7a17Sopenharmony_ci    delete[] privateTag;
14450a5c7a17Sopenharmony_ci    delete[] privateTagTemp;
14460a5c7a17Sopenharmony_ci}
14470a5c7a17Sopenharmony_ci
14480a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSurface_001, Level1)
14490a5c7a17Sopenharmony_ci{
14500a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
14510a5c7a17Sopenharmony_ci    list<string> cameraList;
14520a5c7a17Sopenharmony_ci    string cameraId;
14530a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
14540a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
14550a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
14560a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
14570a5c7a17Sopenharmony_ci    sleep(2);
14580a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
14590a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
14600a5c7a17Sopenharmony_ci    surface->SetWidthAndHeight(1920, 1080);
14610a5c7a17Sopenharmony_ci    EXPECT_EQ(1920, surface->GetWidth());
14620a5c7a17Sopenharmony_ci    EXPECT_EQ(1080, surface->GetHeight());
14630a5c7a17Sopenharmony_ci    delete surface;
14640a5c7a17Sopenharmony_ci}
14650a5c7a17Sopenharmony_ci
14660a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSurface_002, Level1)
14670a5c7a17Sopenharmony_ci{
14680a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
14690a5c7a17Sopenharmony_ci    list<string> cameraList;
14700a5c7a17Sopenharmony_ci    string cameraId;
14710a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
14720a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
14730a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
14740a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
14750a5c7a17Sopenharmony_ci    sleep(2);
14760a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
14770a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
14780a5c7a17Sopenharmony_ci    surface->SetWidthAndHeight(480, 360);
14790a5c7a17Sopenharmony_ci    EXPECT_EQ(480, surface->GetWidth());
14800a5c7a17Sopenharmony_ci    EXPECT_EQ(360, surface->GetHeight());
14810a5c7a17Sopenharmony_ci}
14820a5c7a17Sopenharmony_ci
14830a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSurface_003, Level1)
14840a5c7a17Sopenharmony_ci{
14850a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
14860a5c7a17Sopenharmony_ci    list<string> cameraList;
14870a5c7a17Sopenharmony_ci    string cameraId;
14880a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
14890a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
14900a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
14910a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
14920a5c7a17Sopenharmony_ci    sleep(2);
14930a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
14940a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
14950a5c7a17Sopenharmony_ci    surface->SetWidthAndHeight(1920, 1080);
14960a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
14970a5c7a17Sopenharmony_ci    EXPECT_FALSE(frameConfig->GetSurfaces().size() == 0);
14980a5c7a17Sopenharmony_ci}
14990a5c7a17Sopenharmony_ci
15000a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSurface_004, Level1)
15010a5c7a17Sopenharmony_ci{
15020a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
15030a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
15040a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
15050a5c7a17Sopenharmony_ci    frameConfig->RemoveSurface(*surface);
15060a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
15070a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 0);
15080a5c7a17Sopenharmony_ci}
15090a5c7a17Sopenharmony_ci
15100a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSurface_005, Level1)
15110a5c7a17Sopenharmony_ci{
15120a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_RECORD);
15130a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
15140a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
15150a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
15160a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 1);
15170a5c7a17Sopenharmony_ci}
15180a5c7a17Sopenharmony_ci
15190a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetSurface_006, Level1)
15200a5c7a17Sopenharmony_ci{
15210a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CALLBACK);
15220a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
15230a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
15240a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
15250a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 1);
15260a5c7a17Sopenharmony_ci}
15270a5c7a17Sopenharmony_ci
15280a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetSurfaces_001, Level1)
15290a5c7a17Sopenharmony_ci{
15300a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
15310a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
15320a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
15330a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
15340a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
15350a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
15360a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
15370a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
15380a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
15390a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
15400a5c7a17Sopenharmony_ci        frameConfig->GetSurfaces();
15410a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
15420a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
15430a5c7a17Sopenharmony_ci    }
15440a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
15450a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
15460a5c7a17Sopenharmony_ci}
15470a5c7a17Sopenharmony_ci
15480a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetSurfaces_002, Level1)
15490a5c7a17Sopenharmony_ci{
15500a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CAPTURE);
15510a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
15520a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
15530a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
15540a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
15550a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
15560a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
15570a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
15580a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
15590a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
15600a5c7a17Sopenharmony_ci        frameConfig->GetSurfaces();
15610a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
15620a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
15630a5c7a17Sopenharmony_ci    }
15640a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
15650a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
15660a5c7a17Sopenharmony_ci    delete surface;
15670a5c7a17Sopenharmony_ci}
15680a5c7a17Sopenharmony_ci
15690a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetSurfaces_003, Level1)
15700a5c7a17Sopenharmony_ci{
15710a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_RECORD);
15720a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
15730a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
15740a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
15750a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
15760a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
15770a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
15780a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
15790a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
15800a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
15810a5c7a17Sopenharmony_ci        frameConfig->GetSurfaces();
15820a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
15830a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
15840a5c7a17Sopenharmony_ci    }
15850a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
15860a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
15870a5c7a17Sopenharmony_ci}
15880a5c7a17Sopenharmony_ci
15890a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetSurfaces_004, Level1)
15900a5c7a17Sopenharmony_ci{
15910a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_CALLBACK);
15920a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
15930a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
15940a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
15950a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
15960a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
15970a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
15980a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
15990a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
16000a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
16010a5c7a17Sopenharmony_ci        frameConfig->GetSurfaces();
16020a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
16030a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
16040a5c7a17Sopenharmony_ci    }
16050a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
16060a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
16070a5c7a17Sopenharmony_ci}
16080a5c7a17Sopenharmony_ci
16090a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_OnFrameProgressed_001, Level1)
16100a5c7a17Sopenharmony_ci{
16110a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
16120a5c7a17Sopenharmony_ci    list<string> cameraList;
16130a5c7a17Sopenharmony_ci    string cameraId;
16140a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
16150a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
16160a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
16170a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
16180a5c7a17Sopenharmony_ci    sleep(2);
16190a5c7a17Sopenharmony_ci    camStateMng.Capture();
16200a5c7a17Sopenharmony_ci    sleep(2);
16210a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onFrameStartedFlag, true);
16220a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onFrameProgressedFlag, true);
16230a5c7a17Sopenharmony_ci}
16240a5c7a17Sopenharmony_ci
16250a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_OnFrameCompletedFlag_001, Level1)
16260a5c7a17Sopenharmony_ci{
16270a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
16280a5c7a17Sopenharmony_ci    list<string> cameraList;
16290a5c7a17Sopenharmony_ci    string cameraId;
16300a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
16310a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
16320a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
16330a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
16340a5c7a17Sopenharmony_ci    sleep(2);
16350a5c7a17Sopenharmony_ci    camStateMng.Capture();
16360a5c7a17Sopenharmony_ci    sleep(2);
16370a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onFrameFinishedFlag, true);
16380a5c7a17Sopenharmony_ci}
16390a5c7a17Sopenharmony_ci
16400a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_OnFrameErrorFlag_001, Level1)
16410a5c7a17Sopenharmony_ci{
16420a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
16430a5c7a17Sopenharmony_ci    list<string> cameraList;
16440a5c7a17Sopenharmony_ci    string cameraId;
16450a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
16460a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
16470a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
16480a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
16490a5c7a17Sopenharmony_ci    sleep(2);
16500a5c7a17Sopenharmony_ci    camStateMng.Capture();
16510a5c7a17Sopenharmony_ci    sleep(2);
16520a5c7a17Sopenharmony_ci    EXPECT_NE(g_onFrameErrorFlag, true);
16530a5c7a17Sopenharmony_ci}
16540a5c7a17Sopenharmony_ci
16550a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_AddSurface_001, Level1)
16560a5c7a17Sopenharmony_ci{
16570a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
16580a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
16590a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
16600a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
16610a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 1);
16620a5c7a17Sopenharmony_ci}
16630a5c7a17Sopenharmony_ci
16640a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_AddSurface_002, Level1)
16650a5c7a17Sopenharmony_ci{
16660a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
16670a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
16680a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
16690a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
16700a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
16710a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 1);
16720a5c7a17Sopenharmony_ci}
16730a5c7a17Sopenharmony_ci
16740a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_AddSurface_003, Level1)
16750a5c7a17Sopenharmony_ci{
16760a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
16770a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
16780a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
16790a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
16800a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
16810a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
16820a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 1);
16830a5c7a17Sopenharmony_ci}
16840a5c7a17Sopenharmony_ci
16850a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_AddSurface_001, Level1)
16860a5c7a17Sopenharmony_ci{
16870a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
16880a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
16890a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
16900a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
16910a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
16920a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
16930a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
16940a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
16950a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
16960a5c7a17Sopenharmony_ci        frameConfig->AddSurface(*surface);
16970a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
16980a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
16990a5c7a17Sopenharmony_ci    }
17000a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
17010a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
17020a5c7a17Sopenharmony_ci}
17030a5c7a17Sopenharmony_ci
17040a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_RemoveSurface_001, Level1)
17050a5c7a17Sopenharmony_ci{
17060a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
17070a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
17080a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
17090a5c7a17Sopenharmony_ci    frameConfig->RemoveSurface(*surface);
17100a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
17110a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 0);
17120a5c7a17Sopenharmony_ci}
17130a5c7a17Sopenharmony_ci
17140a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_RemoveSurface_002, Level1)
17150a5c7a17Sopenharmony_ci{
17160a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
17170a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
17180a5c7a17Sopenharmony_ci    Surface *surface1 = Surface::CreateSurface();
17190a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
17200a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface1);
17210a5c7a17Sopenharmony_ci    frameConfig->RemoveSurface(*surface1);
17220a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
17230a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 1);
17240a5c7a17Sopenharmony_ci}
17250a5c7a17Sopenharmony_ci
17260a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_RemoveSurface_003, Level1)
17270a5c7a17Sopenharmony_ci{
17280a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
17290a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
17300a5c7a17Sopenharmony_ci    Surface *surface1 = Surface::CreateSurface();
17310a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface);
17320a5c7a17Sopenharmony_ci    frameConfig->AddSurface(*surface1);
17330a5c7a17Sopenharmony_ci    frameConfig->RemoveSurface(*surface);
17340a5c7a17Sopenharmony_ci    frameConfig->RemoveSurface(*surface1);
17350a5c7a17Sopenharmony_ci    list<Surface *> list = frameConfig->GetSurfaces();
17360a5c7a17Sopenharmony_ci    EXPECT_TRUE(list.size() == 0);
17370a5c7a17Sopenharmony_ci}
17380a5c7a17Sopenharmony_ci
17390a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_RemoveSurface_001, Level1)
17400a5c7a17Sopenharmony_ci{
17410a5c7a17Sopenharmony_ci    shared_ptr<FrameConfig> frameConfig = make_shared<FrameConfig>(FRAME_CONFIG_PREVIEW);
17420a5c7a17Sopenharmony_ci    Surface *surface = Surface::CreateSurface();
17430a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
17440a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
17450a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
17460a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
17470a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
17480a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
17490a5c7a17Sopenharmony_ci        frameConfig->AddSurface(*surface);
17500a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
17510a5c7a17Sopenharmony_ci        frameConfig->RemoveSurface(*surface);
17520a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
17530a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
17540a5c7a17Sopenharmony_ci    }
17550a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
17560a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
17570a5c7a17Sopenharmony_ci}
17580a5c7a17Sopenharmony_ci
17590a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Capture_001, Level1)
17600a5c7a17Sopenharmony_ci{
17610a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
17620a5c7a17Sopenharmony_ci    list<string> cameraList;
17630a5c7a17Sopenharmony_ci    string cameraId;
17640a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
17650a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
17660a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
17670a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
17680a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
17690a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
17700a5c7a17Sopenharmony_ci    sleep(2);
17710a5c7a17Sopenharmony_ci    camStateMng.Capture();
17720a5c7a17Sopenharmony_ci    sleep(2);
17730a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerStartedFlag, true);
17740a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerCompletedFlag, true);
17750a5c7a17Sopenharmony_ci}
17760a5c7a17Sopenharmony_ci
17770a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Capture_002, Level1)
17780a5c7a17Sopenharmony_ci{
17790a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
17800a5c7a17Sopenharmony_ci    string cameraId = "0";
17810a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
17820a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
17830a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
17840a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
17850a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
17860a5c7a17Sopenharmony_ci    sleep(2);
17870a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
17880a5c7a17Sopenharmony_ci    sleep(2);
17890a5c7a17Sopenharmony_ci    camStateMng.Capture();
17900a5c7a17Sopenharmony_ci    sleep(2);
17910a5c7a17Sopenharmony_ci    camStateMng.Stop();
17920a5c7a17Sopenharmony_ci    sleep(2);
17930a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerStartedFlag, true);
17940a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerCompletedFlag, true);
17950a5c7a17Sopenharmony_ci}
17960a5c7a17Sopenharmony_ci
17970a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Capture_003, Level1)
17980a5c7a17Sopenharmony_ci{
17990a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
18000a5c7a17Sopenharmony_ci    string cameraId = "0";
18010a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
18020a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
18030a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
18040a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
18050a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
18060a5c7a17Sopenharmony_ci    sleep(2);
18070a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
18080a5c7a17Sopenharmony_ci    sleep(2);
18090a5c7a17Sopenharmony_ci    camStateMng.Stop();
18100a5c7a17Sopenharmony_ci    sleep(2);
18110a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerStartedFlag, false);
18120a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerCompletedFlag, false);
18130a5c7a17Sopenharmony_ci}
18140a5c7a17Sopenharmony_ci
18150a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Capture_004, Level1)
18160a5c7a17Sopenharmony_ci{
18170a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
18180a5c7a17Sopenharmony_ci    list<string> cameraList;
18190a5c7a17Sopenharmony_ci    string cameraId;
18200a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
18210a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
18220a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
18230a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
18240a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
18250a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
18260a5c7a17Sopenharmony_ci    sleep(2);
18270a5c7a17Sopenharmony_ci    camStateMng.Capture();
18280a5c7a17Sopenharmony_ci    sleep(2);
18290a5c7a17Sopenharmony_ci    camStateMng.Stop();
18300a5c7a17Sopenharmony_ci    sleep(2);
18310a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerStartedFlag, true);
18320a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerCompletedFlag, true);
18330a5c7a17Sopenharmony_ci}
18340a5c7a17Sopenharmony_ci
18350a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Capture_005, Level1)
18360a5c7a17Sopenharmony_ci{
18370a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
18380a5c7a17Sopenharmony_ci    list<string> cameraList;
18390a5c7a17Sopenharmony_ci    string cameraId;
18400a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
18410a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
18420a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
18430a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
18440a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
18450a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
18460a5c7a17Sopenharmony_ci    sleep(2);
18470a5c7a17Sopenharmony_ci    camStateMng.Capture();
18480a5c7a17Sopenharmony_ci    sleep(2);
18490a5c7a17Sopenharmony_ci    camStateMng.Capture();
18500a5c7a17Sopenharmony_ci    sleep(2);
18510a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerStartedFlag, true);
18520a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerCompletedFlag, true);
18530a5c7a17Sopenharmony_ci}
18540a5c7a17Sopenharmony_ci
18550a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Capture_006, Level1)
18560a5c7a17Sopenharmony_ci{
18570a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
18580a5c7a17Sopenharmony_ci    list<string> cameraList;
18590a5c7a17Sopenharmony_ci    string cameraId;
18600a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
18610a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
18620a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
18630a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
18640a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
18650a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
18660a5c7a17Sopenharmony_ci    sleep(2);
18670a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
18680a5c7a17Sopenharmony_ci    sleep(2);
18690a5c7a17Sopenharmony_ci    camStateMng.Capture();
18700a5c7a17Sopenharmony_ci    sleep(2);
18710a5c7a17Sopenharmony_ci    EXPECT_TRUE(g_onCaptureTriggerStartedFlag);
18720a5c7a17Sopenharmony_ci    EXPECT_TRUE(g_onCaptureTriggerCompletedFlag);
18730a5c7a17Sopenharmony_ci}
18740a5c7a17Sopenharmony_ci
18750a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Capture_007, Level1)
18760a5c7a17Sopenharmony_ci{
18770a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
18780a5c7a17Sopenharmony_ci    list<string> cameraList;
18790a5c7a17Sopenharmony_ci    string cameraId;
18800a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
18810a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
18820a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
18830a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
18840a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
18850a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
18860a5c7a17Sopenharmony_ci    sleep(2);
18870a5c7a17Sopenharmony_ci    camStateMng.Stop();
18880a5c7a17Sopenharmony_ci    sleep(2);
18890a5c7a17Sopenharmony_ci    camStateMng.Capture();
18900a5c7a17Sopenharmony_ci    sleep(2);
18910a5c7a17Sopenharmony_ci    EXPECT_TRUE(g_onCaptureTriggerStartedFlag);
18920a5c7a17Sopenharmony_ci    EXPECT_TRUE(g_onCaptureTriggerCompletedFlag);
18930a5c7a17Sopenharmony_ci}
18940a5c7a17Sopenharmony_ci
18950a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Capture_008, Level1)
18960a5c7a17Sopenharmony_ci{
18970a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
18980a5c7a17Sopenharmony_ci    list<string> cameraList;
18990a5c7a17Sopenharmony_ci    string cameraId;
19000a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
19010a5c7a17Sopenharmony_ci    GetCameraId(cameraKit, cameraList, cameraId);
19020a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
19030a5c7a17Sopenharmony_ci    g_onCaptureTriggerStartedFlag = false;
19040a5c7a17Sopenharmony_ci    g_onCaptureTriggerCompletedFlag = false;
19050a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
19060a5c7a17Sopenharmony_ci    sleep(2);
19070a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
19080a5c7a17Sopenharmony_ci    sleep(2);
19090a5c7a17Sopenharmony_ci    camStateMng.Stop();
19100a5c7a17Sopenharmony_ci    sleep(2);
19110a5c7a17Sopenharmony_ci    camStateMng.Capture();
19120a5c7a17Sopenharmony_ci    sleep(2);
19130a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerStartedFlag, true);
19140a5c7a17Sopenharmony_ci    EXPECT_EQ(g_onCaptureTriggerCompletedFlag, true);
19150a5c7a17Sopenharmony_ci}
19160a5c7a17Sopenharmony_ci
19170a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Preview_001, Level1)
19180a5c7a17Sopenharmony_ci{
19190a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
19200a5c7a17Sopenharmony_ci    list<string> cameraList;
19210a5c7a17Sopenharmony_ci    string cameraId;
19220a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
19230a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
19240a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
19250a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
19260a5c7a17Sopenharmony_ci    g_onPreviewFlag = false;
19270a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
19280a5c7a17Sopenharmony_ci    sleep(2);
19290a5c7a17Sopenharmony_ci    EXPECT_TRUE(g_onPreviewFlag);
19300a5c7a17Sopenharmony_ci    camStateMng.Stop();
19310a5c7a17Sopenharmony_ci}
19320a5c7a17Sopenharmony_ci
19330a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Preview_002, Level1)
19340a5c7a17Sopenharmony_ci{
19350a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
19360a5c7a17Sopenharmony_ci    list<string> cameraList;
19370a5c7a17Sopenharmony_ci    string cameraId;
19380a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
19390a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
19400a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
19410a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
19420a5c7a17Sopenharmony_ci    g_onPreviewFlag = false;
19430a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
19440a5c7a17Sopenharmony_ci    sleep(2);
19450a5c7a17Sopenharmony_ci    camStateMng.Stop();
19460a5c7a17Sopenharmony_ci    EXPECT_FALSE(g_onPreviewFlag);
19470a5c7a17Sopenharmony_ci}
19480a5c7a17Sopenharmony_ci
19490a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Preview_003, Level1)
19500a5c7a17Sopenharmony_ci{
19510a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
19520a5c7a17Sopenharmony_ci    list<string> cameraList;
19530a5c7a17Sopenharmony_ci    string cameraId;
19540a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
19550a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
19560a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
19570a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
19580a5c7a17Sopenharmony_ci    g_onPreviewFlag = false;
19590a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
19600a5c7a17Sopenharmony_ci    sleep(2);
19610a5c7a17Sopenharmony_ci    camStateMng.Stop();
19620a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
19630a5c7a17Sopenharmony_ci    sleep(2);
19640a5c7a17Sopenharmony_ci    EXPECT_TRUE(g_onPreviewFlag);
19650a5c7a17Sopenharmony_ci}
19660a5c7a17Sopenharmony_ci
19670a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Preview_004, Level1)
19680a5c7a17Sopenharmony_ci{
19690a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
19700a5c7a17Sopenharmony_ci    list<string> cameraList;
19710a5c7a17Sopenharmony_ci    string cameraId;
19720a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
19730a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
19740a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
19750a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
19760a5c7a17Sopenharmony_ci    g_onPreviewFlag = false;
19770a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
19780a5c7a17Sopenharmony_ci    sleep(2);
19790a5c7a17Sopenharmony_ci    camStateMng.Stop();
19800a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
19810a5c7a17Sopenharmony_ci    sleep(2);
19820a5c7a17Sopenharmony_ci    camStateMng.Stop();
19830a5c7a17Sopenharmony_ci    EXPECT_FALSE(g_onPreviewFlag);
19840a5c7a17Sopenharmony_ci}
19850a5c7a17Sopenharmony_ci
19860a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Preview_005, Level1)
19870a5c7a17Sopenharmony_ci{
19880a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
19890a5c7a17Sopenharmony_ci    list<string> cameraList;
19900a5c7a17Sopenharmony_ci    string cameraId;
19910a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
19920a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
19930a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
19940a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
19950a5c7a17Sopenharmony_ci    g_onPreviewFlag = false;
19960a5c7a17Sopenharmony_ci    camStateMng.Capture();
19970a5c7a17Sopenharmony_ci    sleep(2);
19980a5c7a17Sopenharmony_ci    camStateMng.Stop();
19990a5c7a17Sopenharmony_ci    sleep(2);
20000a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
20010a5c7a17Sopenharmony_ci    sleep(2);
20020a5c7a17Sopenharmony_ci    EXPECT_TRUE(g_onPreviewFlag);
20030a5c7a17Sopenharmony_ci    camStateMng.Stop();
20040a5c7a17Sopenharmony_ci}
20050a5c7a17Sopenharmony_ci
20060a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_Preview_006, Level1)
20070a5c7a17Sopenharmony_ci{
20080a5c7a17Sopenharmony_ci    CameraKit *cameraKit = nullptr;
20090a5c7a17Sopenharmony_ci    list<string> cameraList;
20100a5c7a17Sopenharmony_ci    string cameraId;
20110a5c7a17Sopenharmony_ci    EventHandler eventHdlr;
20120a5c7a17Sopenharmony_ci    ASSERT_TRUE(GetCameraId(cameraKit, cameraList, cameraId));
20130a5c7a17Sopenharmony_ci    SampleCameraStateMng camStateMng(eventHdlr);
20140a5c7a17Sopenharmony_ci    cameraKit->CreateCamera(cameraId, camStateMng, eventHdlr);
20150a5c7a17Sopenharmony_ci    g_onPreviewFlag = false;
20160a5c7a17Sopenharmony_ci    camStateMng.Capture();
20170a5c7a17Sopenharmony_ci    sleep(2);
20180a5c7a17Sopenharmony_ci    camStateMng.StartPreview();
20190a5c7a17Sopenharmony_ci    sleep(2);
20200a5c7a17Sopenharmony_ci    camStateMng.Stop();
20210a5c7a17Sopenharmony_ci    EXPECT_FALSE(g_onPreviewFlag);
20220a5c7a17Sopenharmony_ci} /* end frame config & frame state call back interface test */
20230a5c7a17Sopenharmony_ci
20240a5c7a17Sopenharmony_ci/* start camera info interface test */
20250a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraType_001, Level1)
20260a5c7a17Sopenharmony_ci{
20270a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
20280a5c7a17Sopenharmony_ci    string cameraId = "0";
20290a5c7a17Sopenharmony_ci    const CameraInfo *cameraInfo = cameraKit->GetCameraInfo(cameraId);
20300a5c7a17Sopenharmony_ci    int32_t cameraType = cameraInfo->GetCameraType();
20310a5c7a17Sopenharmony_ci    EXPECT_TRUE(cameraType <= 3);
20320a5c7a17Sopenharmony_ci    EXPECT_TRUE(cameraType >= 0);
20330a5c7a17Sopenharmony_ci}
20340a5c7a17Sopenharmony_ci
20350a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetCameraType_001, Level1)
20360a5c7a17Sopenharmony_ci{
20370a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
20380a5c7a17Sopenharmony_ci    string cameraId = "0";
20390a5c7a17Sopenharmony_ci    const CameraInfo *cameraInfo = cameraKit->GetCameraInfo(cameraId);
20400a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
20410a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
20420a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
20430a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
20440a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
20450a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
20460a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
20470a5c7a17Sopenharmony_ci        cameraInfo->GetCameraType();
20480a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
20490a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
20500a5c7a17Sopenharmony_ci    }
20510a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
20520a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
20530a5c7a17Sopenharmony_ci}
20540a5c7a17Sopenharmony_ci
20550a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, Test_GetCameraFacingType_001, Level1)
20560a5c7a17Sopenharmony_ci{
20570a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
20580a5c7a17Sopenharmony_ci    string cameraId = "0";
20590a5c7a17Sopenharmony_ci    const CameraInfo *cameraInfo = cameraKit->GetCameraInfo(cameraId);
20600a5c7a17Sopenharmony_ci    int32_t cameraFacingType = cameraInfo->GetCameraFacingType();
20610a5c7a17Sopenharmony_ci    EXPECT_TRUE(cameraFacingType <= 2);
20620a5c7a17Sopenharmony_ci    EXPECT_TRUE(cameraFacingType >= 0);
20630a5c7a17Sopenharmony_ci}
20640a5c7a17Sopenharmony_ci
20650a5c7a17Sopenharmony_ciHWTEST_F(CameraLiteTest, PrfTest_GetCameraFacingType_001, Level1)
20660a5c7a17Sopenharmony_ci{
20670a5c7a17Sopenharmony_ci    CameraKit *cameraKit = CameraKit::GetInstance();
20680a5c7a17Sopenharmony_ci    string cameraId = "0";
20690a5c7a17Sopenharmony_ci    const CameraInfo *cameraInfo = cameraKit->GetCameraInfo(cameraId);
20700a5c7a17Sopenharmony_ci    struct timespec tv1 = {0};
20710a5c7a17Sopenharmony_ci    struct timespec tv2 = {0};
20720a5c7a17Sopenharmony_ci    int64_t performanceTestTimes = 10;
20730a5c7a17Sopenharmony_ci    int64_t usecTimes = 1000000;
20740a5c7a17Sopenharmony_ci    int64_t totalTime = 0;
20750a5c7a17Sopenharmony_ci    for (int32_t i = 0; i < performanceTestTimes; i++) {
20760a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv1);
20770a5c7a17Sopenharmony_ci        cameraInfo->GetCameraFacingType();
20780a5c7a17Sopenharmony_ci        clock_gettime(CLOCK_REALTIME, &tv2);
20790a5c7a17Sopenharmony_ci        totalTime += tv2.tv_sec * usecTimes + tv2.tv_nsec - (tv1.tv_sec * usecTimes + tv1.tv_nsec);
20800a5c7a17Sopenharmony_ci    }
20810a5c7a17Sopenharmony_ci    int64_t expectTime = 1000000;
20820a5c7a17Sopenharmony_ci    EXPECT_TRUE(totalTime <= expectTime * performanceTestTimes);
20830a5c7a17Sopenharmony_ci} /* end camera info interface test */
20840a5c7a17Sopenharmony_ci}  // namespace OHOS
2085