146debc2cSopenharmony_ci/*
246debc2cSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
346debc2cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
446debc2cSopenharmony_ci * you may not use this file except in compliance with the License.
546debc2cSopenharmony_ci * You may obtain a copy of the License at
646debc2cSopenharmony_ci *
746debc2cSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
846debc2cSopenharmony_ci *
946debc2cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1046debc2cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1146debc2cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1246debc2cSopenharmony_ci * See the License for the specific language governing permissions and
1346debc2cSopenharmony_ci * limitations under the License.
1446debc2cSopenharmony_ci */
1546debc2cSopenharmony_ci
1646debc2cSopenharmony_ci#include "fuzzer/FuzzedDataProvider.h"
1746debc2cSopenharmony_ci#include "napi/native_api.h"
1846debc2cSopenharmony_ci#include "message_parcel.h"
1946debc2cSopenharmony_ci#include "scanhelper_fuzzer.h"
2046debc2cSopenharmony_ci#include "scan_option_descriptor.h"
2146debc2cSopenharmony_ci#include "scan_option_value.h"
2246debc2cSopenharmony_ci#include "scan_parameters.h"
2346debc2cSopenharmony_ci#include "scan_progress.h"
2446debc2cSopenharmony_ci#include "scanner_info.h"
2546debc2cSopenharmony_ci#include "scan_range.h"
2646debc2cSopenharmony_ci#include "scan_option_descriptor_helper.h"
2746debc2cSopenharmony_ci#include "scan_option_value_helper.h"
2846debc2cSopenharmony_ci#include "scan_parameters_helper.h"
2946debc2cSopenharmony_ci#include "scan_progress_helper.h"
3046debc2cSopenharmony_ci#include "scan_range_helper.h"
3146debc2cSopenharmony_ci#include "scanner_info_helper.h"
3246debc2cSopenharmony_ci
3346debc2cSopenharmony_cinamespace OHOS {
3446debc2cSopenharmony_cinamespace Scan {
3546debc2cSopenharmony_ciconstexpr uint8_t MAX_STRING_LENGTH = 255;
3646debc2cSopenharmony_ciconstexpr int MAX_SET_NUMBER = 100;
3746debc2cSopenharmony_ciconstexpr size_t FOO_MAX_LEN = 1024;
3846debc2cSopenharmony_ciconstexpr size_t U32_AT_SIZE = 4;
3946debc2cSopenharmony_ci
4046debc2cSopenharmony_civoid TestSetOptionName(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
4146debc2cSopenharmony_ci{
4246debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
4346debc2cSopenharmony_ci    std::string optionName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
4446debc2cSopenharmony_ci    scanOptDes.SetOptionName(optionName);
4546debc2cSopenharmony_ci    optionName = scanOptDes.GetOptionName();
4646debc2cSopenharmony_ci}
4746debc2cSopenharmony_ci
4846debc2cSopenharmony_civoid TestSetOptionTitle(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
4946debc2cSopenharmony_ci{
5046debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
5146debc2cSopenharmony_ci    std::string optionTitle = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
5246debc2cSopenharmony_ci    scanOptDes.SetOptionTitle(optionTitle);
5346debc2cSopenharmony_ci    optionTitle = scanOptDes.GetOptionTitle();
5446debc2cSopenharmony_ci}
5546debc2cSopenharmony_ci
5646debc2cSopenharmony_civoid TestSetOptionDesc(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
5746debc2cSopenharmony_ci{
5846debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
5946debc2cSopenharmony_ci    std::string optionDesc = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
6046debc2cSopenharmony_ci    scanOptDes.SetOptionDesc(optionDesc);
6146debc2cSopenharmony_ci    optionDesc = scanOptDes.GetOptionDesc();
6246debc2cSopenharmony_ci}
6346debc2cSopenharmony_ci
6446debc2cSopenharmony_civoid TestSetOptionType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
6546debc2cSopenharmony_ci{
6646debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
6746debc2cSopenharmony_ci    uint32_t optionType = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
6846debc2cSopenharmony_ci    scanOptDes.SetOptionType(optionType);
6946debc2cSopenharmony_ci    optionType = scanOptDes.GetOptionType();
7046debc2cSopenharmony_ci}
7146debc2cSopenharmony_ci
7246debc2cSopenharmony_civoid TestSetOptionUnit(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
7346debc2cSopenharmony_ci{
7446debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
7546debc2cSopenharmony_ci    uint32_t optionUnit = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
7646debc2cSopenharmony_ci    scanOptDes.SetOptionUnit(optionUnit);
7746debc2cSopenharmony_ci    optionUnit = scanOptDes.GetOptionUnit();
7846debc2cSopenharmony_ci}
7946debc2cSopenharmony_ci
8046debc2cSopenharmony_civoid TestSetOptionSize(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
8146debc2cSopenharmony_ci{
8246debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
8346debc2cSopenharmony_ci    int32_t optionSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
8446debc2cSopenharmony_ci    scanOptDes.SetOptionSize(optionSize);
8546debc2cSopenharmony_ci    optionSize = scanOptDes.GetOptionSize();
8646debc2cSopenharmony_ci}
8746debc2cSopenharmony_ci
8846debc2cSopenharmony_civoid TestSetOptionCap(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
8946debc2cSopenharmony_ci{
9046debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
9146debc2cSopenharmony_ci    int32_t optionCap = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
9246debc2cSopenharmony_ci    scanOptDes.SetOptionCap(optionCap);
9346debc2cSopenharmony_ci    optionCap = scanOptDes.GetOptionCap();
9446debc2cSopenharmony_ci}
9546debc2cSopenharmony_ci
9646debc2cSopenharmony_civoid TestSetOptionConstraintType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
9746debc2cSopenharmony_ci{
9846debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
9946debc2cSopenharmony_ci    uint32_t optionConstraintType = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
10046debc2cSopenharmony_ci    scanOptDes.SetOptionConstraintType(optionConstraintType);
10146debc2cSopenharmony_ci    optionConstraintType = scanOptDes.GetOptionConstraintType();
10246debc2cSopenharmony_ci}
10346debc2cSopenharmony_ci
10446debc2cSopenharmony_civoid TestSetOptionConstraintString(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
10546debc2cSopenharmony_ci{
10646debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
10746debc2cSopenharmony_ci    std::vector<std::string> optionConstraintString;
10846debc2cSopenharmony_ci    int32_t vectorSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
10946debc2cSopenharmony_ci    for (int i = 0; i< vectorSize; i++) {
11046debc2cSopenharmony_ci        std::string teststr = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
11146debc2cSopenharmony_ci        optionConstraintString.emplace_back(teststr);
11246debc2cSopenharmony_ci    }
11346debc2cSopenharmony_ci    scanOptDes.SetOptionConstraintString(optionConstraintString);
11446debc2cSopenharmony_ci    scanOptDes.GetOptionConstraintString(optionConstraintString);
11546debc2cSopenharmony_ci}
11646debc2cSopenharmony_ci
11746debc2cSopenharmony_civoid TestSetOptionConstraintNumber(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
11846debc2cSopenharmony_ci{
11946debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
12046debc2cSopenharmony_ci    std::vector<int32_t> optionConstraintNumber;
12146debc2cSopenharmony_ci    int32_t vectorSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
12246debc2cSopenharmony_ci    for (int i = 0; i< vectorSize; i++) {
12346debc2cSopenharmony_ci        int32_t testNumber = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
12446debc2cSopenharmony_ci        optionConstraintNumber.emplace_back(testNumber);
12546debc2cSopenharmony_ci    }
12646debc2cSopenharmony_ci    scanOptDes.SetOptionConstraintNumber(optionConstraintNumber);
12746debc2cSopenharmony_ci    scanOptDes.GetOptionConstraintNumber(optionConstraintNumber);
12846debc2cSopenharmony_ci}
12946debc2cSopenharmony_ci
13046debc2cSopenharmony_civoid TestSetOptionConstraintRange(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
13146debc2cSopenharmony_ci{
13246debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDes;
13346debc2cSopenharmony_ci    ScanRange optionConstraintRange;
13446debc2cSopenharmony_ci    scanOptDes.SetOptionConstraintRange(optionConstraintRange);
13546debc2cSopenharmony_ci    scanOptDes.GetOptionConstraintRange(optionConstraintRange);
13646debc2cSopenharmony_ci    std::string optionName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
13746debc2cSopenharmony_ci    scanOptDes.SetOptionName(optionName);
13846debc2cSopenharmony_ci}
13946debc2cSopenharmony_ci
14046debc2cSopenharmony_civoid TestScanOptionDescriptor(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
14146debc2cSopenharmony_ci{
14246debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDesTmp;
14346debc2cSopenharmony_ci    uint32_t optionConstraintType = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
14446debc2cSopenharmony_ci    scanOptDesTmp.SetOptionConstraintType(optionConstraintType);
14546debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDesBak(scanOptDesTmp);
14646debc2cSopenharmony_ci    ScanOptionDescriptor scanOptDesOpera = scanOptDesTmp;
14746debc2cSopenharmony_ci    scanOptDesOpera.Dump();
14846debc2cSopenharmony_ci    MessageParcel parcel;
14946debc2cSopenharmony_ci    scanOptDesOpera.Marshalling(parcel);
15046debc2cSopenharmony_ci    auto scanOptDesMarShall = ScanOptionDescriptor::Unmarshalling(parcel);
15146debc2cSopenharmony_ci}
15246debc2cSopenharmony_ci
15346debc2cSopenharmony_civoid TestSetScanOptionValueType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
15446debc2cSopenharmony_ci{
15546debc2cSopenharmony_ci    ScanOptionValue scanOptVal;
15646debc2cSopenharmony_ci    int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
15746debc2cSopenharmony_ci    scanOptVal.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
15846debc2cSopenharmony_ci    valueType = scanOptVal.GetScanOptionValueType();
15946debc2cSopenharmony_ci}
16046debc2cSopenharmony_ci
16146debc2cSopenharmony_civoid TestSetValueSize(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
16246debc2cSopenharmony_ci{
16346debc2cSopenharmony_ci    ScanOptionValue scanOptVal;
16446debc2cSopenharmony_ci    int32_t valueSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
16546debc2cSopenharmony_ci    scanOptVal.SetValueSize(valueSize);
16646debc2cSopenharmony_ci    valueSize = scanOptVal.GetValueSize();
16746debc2cSopenharmony_ci}
16846debc2cSopenharmony_ci
16946debc2cSopenharmony_civoid TestSetNumValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
17046debc2cSopenharmony_ci{
17146debc2cSopenharmony_ci    ScanOptionValue scanOptVal;
17246debc2cSopenharmony_ci    int32_t numValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
17346debc2cSopenharmony_ci    scanOptVal.SetNumValue(numValue);
17446debc2cSopenharmony_ci    numValue = scanOptVal.GetNumValue();
17546debc2cSopenharmony_ci}
17646debc2cSopenharmony_ci
17746debc2cSopenharmony_civoid TestSetNumListValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
17846debc2cSopenharmony_ci{
17946debc2cSopenharmony_ci    ScanOptionValue scanOptVal;
18046debc2cSopenharmony_ci    int32_t vecSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
18146debc2cSopenharmony_ci    std::vector<int32_t> numListValue;
18246debc2cSopenharmony_ci    for (int i = 0; i < vecSize; i++) {
18346debc2cSopenharmony_ci        int32_t number = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
18446debc2cSopenharmony_ci        numListValue.emplace_back(number);
18546debc2cSopenharmony_ci    }
18646debc2cSopenharmony_ci    scanOptVal.SetNumListValue(numListValue);
18746debc2cSopenharmony_ci    scanOptVal.GetNumListValue(numListValue);
18846debc2cSopenharmony_ci}
18946debc2cSopenharmony_ci
19046debc2cSopenharmony_civoid TestSetStrValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
19146debc2cSopenharmony_ci{
19246debc2cSopenharmony_ci    ScanOptionValue scanOptVal;
19346debc2cSopenharmony_ci    std::string optionTitle = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
19446debc2cSopenharmony_ci    scanOptVal.SetStrValue(optionTitle);
19546debc2cSopenharmony_ci    optionTitle = scanOptVal.GetStrValue();
19646debc2cSopenharmony_ci}
19746debc2cSopenharmony_ci
19846debc2cSopenharmony_civoid TestSetBoolValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
19946debc2cSopenharmony_ci{
20046debc2cSopenharmony_ci    ScanOptionValue scanOptVal;
20146debc2cSopenharmony_ci    bool boolValue = dataProvider->ConsumeBool();
20246debc2cSopenharmony_ci    scanOptVal.SetBoolValue(boolValue);
20346debc2cSopenharmony_ci    boolValue = scanOptVal.GetBoolValue();
20446debc2cSopenharmony_ci}
20546debc2cSopenharmony_ci
20646debc2cSopenharmony_civoid TestScanOptionValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
20746debc2cSopenharmony_ci{
20846debc2cSopenharmony_ci    ScanOptionValue scanOptVal;
20946debc2cSopenharmony_ci    int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
21046debc2cSopenharmony_ci    scanOptVal.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
21146debc2cSopenharmony_ci    ScanOptionValue scanOptValBak = scanOptVal;
21246debc2cSopenharmony_ci    scanOptValBak.Reset();
21346debc2cSopenharmony_ci    ScanOptionValue scanOptValOpera(scanOptValBak);
21446debc2cSopenharmony_ci    int32_t valueSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
21546debc2cSopenharmony_ci    scanOptValOpera.SetValueSize(valueSize);
21646debc2cSopenharmony_ci    MessageParcel parcel;
21746debc2cSopenharmony_ci    scanOptValOpera.Marshalling(parcel);
21846debc2cSopenharmony_ci    auto scanOptValMarShall = ScanOptionDescriptor::Unmarshalling(parcel);
21946debc2cSopenharmony_ci    scanOptValMarShall->Dump();
22046debc2cSopenharmony_ci}
22146debc2cSopenharmony_ci
22246debc2cSopenharmony_civoid TestSetFormat(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
22346debc2cSopenharmony_ci{
22446debc2cSopenharmony_ci    ScanParameters scanPara;
22546debc2cSopenharmony_ci    int32_t format = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
22646debc2cSopenharmony_ci    scanPara.SetFormat(static_cast<ScanFrame>(format));
22746debc2cSopenharmony_ci    format = scanPara.GetFormat();
22846debc2cSopenharmony_ci}
22946debc2cSopenharmony_ci
23046debc2cSopenharmony_civoid TestSetLastFrame(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
23146debc2cSopenharmony_ci{
23246debc2cSopenharmony_ci    ScanParameters scanPara;
23346debc2cSopenharmony_ci    bool lastFrame = dataProvider->ConsumeBool();
23446debc2cSopenharmony_ci    scanPara.SetLastFrame(lastFrame);
23546debc2cSopenharmony_ci    lastFrame = scanPara.GetLastFrame();
23646debc2cSopenharmony_ci}
23746debc2cSopenharmony_ci
23846debc2cSopenharmony_civoid TestSetBytesPerLine(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
23946debc2cSopenharmony_ci{
24046debc2cSopenharmony_ci    ScanParameters scanPara;
24146debc2cSopenharmony_ci    int32_t bytesPerLine = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
24246debc2cSopenharmony_ci    scanPara.SetBytesPerLine(bytesPerLine);
24346debc2cSopenharmony_ci    bytesPerLine = scanPara.GetBytesPerLine();
24446debc2cSopenharmony_ci}
24546debc2cSopenharmony_ci
24646debc2cSopenharmony_civoid TestSetPixelsPerLine(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
24746debc2cSopenharmony_ci{
24846debc2cSopenharmony_ci    ScanParameters scanPara;
24946debc2cSopenharmony_ci    int32_t pixelsPerLine = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
25046debc2cSopenharmony_ci    scanPara.SetPixelsPerLine(pixelsPerLine);
25146debc2cSopenharmony_ci    pixelsPerLine = scanPara.GetPixelsPerLine();
25246debc2cSopenharmony_ci}
25346debc2cSopenharmony_ci
25446debc2cSopenharmony_civoid TestSetLines(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
25546debc2cSopenharmony_ci{
25646debc2cSopenharmony_ci    ScanParameters scanPara;
25746debc2cSopenharmony_ci    int32_t lines = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
25846debc2cSopenharmony_ci    scanPara.SetLines(lines);
25946debc2cSopenharmony_ci    lines = scanPara.GetLines();
26046debc2cSopenharmony_ci}
26146debc2cSopenharmony_ci
26246debc2cSopenharmony_civoid TestSetDepth(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
26346debc2cSopenharmony_ci{
26446debc2cSopenharmony_ci    ScanParameters scanPara;
26546debc2cSopenharmony_ci    int32_t depth = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
26646debc2cSopenharmony_ci    scanPara.SetDepth(depth);
26746debc2cSopenharmony_ci    depth = scanPara.GetDepth();
26846debc2cSopenharmony_ci}
26946debc2cSopenharmony_ci
27046debc2cSopenharmony_civoid TestScanParameters(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
27146debc2cSopenharmony_ci{
27246debc2cSopenharmony_ci    ScanParameters scanPara;
27346debc2cSopenharmony_ci    int32_t lines = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
27446debc2cSopenharmony_ci    scanPara.SetLines(lines);
27546debc2cSopenharmony_ci    ScanParameters scanParaTmp(scanPara);
27646debc2cSopenharmony_ci    ScanParameters scanParaBak = scanParaTmp;
27746debc2cSopenharmony_ci    scanParaBak.Dump();
27846debc2cSopenharmony_ci    MessageParcel parcel;
27946debc2cSopenharmony_ci    scanParaBak.Marshalling(parcel);
28046debc2cSopenharmony_ci    auto scanParaBakMarShall = ScanParameters::Unmarshalling(parcel);
28146debc2cSopenharmony_ci}
28246debc2cSopenharmony_ci
28346debc2cSopenharmony_civoid TestSetScanProgress(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
28446debc2cSopenharmony_ci{
28546debc2cSopenharmony_ci    ScanProgress scanProg;
28646debc2cSopenharmony_ci    int32_t progress = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
28746debc2cSopenharmony_ci    scanProg.SetScanProgress(progress);
28846debc2cSopenharmony_ci    progress = scanProg.GetScanProgress();
28946debc2cSopenharmony_ci}
29046debc2cSopenharmony_ci
29146debc2cSopenharmony_civoid TestSetScanPictureFd(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
29246debc2cSopenharmony_ci{
29346debc2cSopenharmony_ci    ScanProgress scanProg;
29446debc2cSopenharmony_ci    int32_t fd = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
29546debc2cSopenharmony_ci    scanProg.SetScanPictureFd(fd);
29646debc2cSopenharmony_ci    fd = scanProg.GetScanPictureFd();
29746debc2cSopenharmony_ci}
29846debc2cSopenharmony_ci
29946debc2cSopenharmony_civoid TestSetIsFinal(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
30046debc2cSopenharmony_ci{
30146debc2cSopenharmony_ci    ScanProgress scanProg;
30246debc2cSopenharmony_ci    bool isFinal = dataProvider->ConsumeBool();
30346debc2cSopenharmony_ci    scanProg.SetIsFinal(isFinal);
30446debc2cSopenharmony_ci    isFinal = scanProg.GetIsFinal();
30546debc2cSopenharmony_ci}
30646debc2cSopenharmony_ci
30746debc2cSopenharmony_civoid TestSetPictureId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
30846debc2cSopenharmony_ci{
30946debc2cSopenharmony_ci    ScanProgress scanProg;
31046debc2cSopenharmony_ci    int32_t pictureId = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
31146debc2cSopenharmony_ci    scanProg.SetPictureId(pictureId);
31246debc2cSopenharmony_ci    pictureId = scanProg.GetPictureId();
31346debc2cSopenharmony_ci}
31446debc2cSopenharmony_ci
31546debc2cSopenharmony_civoid TestSetTaskCode(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
31646debc2cSopenharmony_ci{
31746debc2cSopenharmony_ci    ScanProgress scanProg;
31846debc2cSopenharmony_ci    int32_t taskCode = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
31946debc2cSopenharmony_ci    scanProg.SetTaskCode(static_cast<ScanErrorCode>(taskCode));
32046debc2cSopenharmony_ci    taskCode = scanProg.GetTaskCode();
32146debc2cSopenharmony_ci}
32246debc2cSopenharmony_ci
32346debc2cSopenharmony_civoid TestScanProgress(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
32446debc2cSopenharmony_ci{
32546debc2cSopenharmony_ci    ScanProgress scanProg;
32646debc2cSopenharmony_ci    int32_t taskCode = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
32746debc2cSopenharmony_ci    scanProg.SetTaskCode(static_cast<ScanErrorCode>(taskCode));
32846debc2cSopenharmony_ci    scanProg.Dump();
32946debc2cSopenharmony_ci    taskCode = scanProg.GetTaskCode();
33046debc2cSopenharmony_ci    ScanProgress scanProgTmp(scanProg);
33146debc2cSopenharmony_ci    ScanProgress scanProgBak = scanProgTmp;
33246debc2cSopenharmony_ci    MessageParcel parcel;
33346debc2cSopenharmony_ci    scanProgBak.Marshalling(parcel);
33446debc2cSopenharmony_ci    auto scanOptValMarShall = ScanProgress::Unmarshalling(parcel);
33546debc2cSopenharmony_ci}
33646debc2cSopenharmony_ci
33746debc2cSopenharmony_civoid TestTCPSetDeviceName(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
33846debc2cSopenharmony_ci{
33946debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
34046debc2cSopenharmony_ci    std::string deviceName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
34146debc2cSopenharmony_ci    scanDevInfoTcp.SetDeviceName(deviceName);
34246debc2cSopenharmony_ci    deviceName = scanDevInfoTcp.GetDeviceName();
34346debc2cSopenharmony_ci}
34446debc2cSopenharmony_ci
34546debc2cSopenharmony_civoid TestTCPSetUuid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
34646debc2cSopenharmony_ci{
34746debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
34846debc2cSopenharmony_ci    std::string uuid = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
34946debc2cSopenharmony_ci    scanDevInfoTcp.SetUuid(uuid);
35046debc2cSopenharmony_ci    uuid = scanDevInfoTcp.GetUuid();
35146debc2cSopenharmony_ci}
35246debc2cSopenharmony_ci
35346debc2cSopenharmony_civoid TestTCPSetModel(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
35446debc2cSopenharmony_ci{
35546debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
35646debc2cSopenharmony_ci    std::string model = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
35746debc2cSopenharmony_ci    scanDevInfoTcp.SetModel(model);
35846debc2cSopenharmony_ci    model = scanDevInfoTcp.GetModel();
35946debc2cSopenharmony_ci}
36046debc2cSopenharmony_ci
36146debc2cSopenharmony_civoid TestTCPSetManufacturer(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
36246debc2cSopenharmony_ci{
36346debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
36446debc2cSopenharmony_ci    std::string manufacturer = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
36546debc2cSopenharmony_ci    scanDevInfoTcp.SetManufacturer(manufacturer);
36646debc2cSopenharmony_ci    manufacturer = scanDevInfoTcp.GetManufacturer();
36746debc2cSopenharmony_ci}
36846debc2cSopenharmony_ci
36946debc2cSopenharmony_civoid TestTCPSetDeviceType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
37046debc2cSopenharmony_ci{
37146debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
37246debc2cSopenharmony_ci    std::string deviceType = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
37346debc2cSopenharmony_ci    scanDevInfoTcp.SetDeviceType(deviceType);
37446debc2cSopenharmony_ci    deviceType = scanDevInfoTcp.GetDeviceType();
37546debc2cSopenharmony_ci}
37646debc2cSopenharmony_ci
37746debc2cSopenharmony_civoid TestTCPSetPort(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
37846debc2cSopenharmony_ci{
37946debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
38046debc2cSopenharmony_ci    std::string port = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
38146debc2cSopenharmony_ci    scanDevInfoTcp.SetPort(port);
38246debc2cSopenharmony_ci    port = scanDevInfoTcp.GetPort();
38346debc2cSopenharmony_ci}
38446debc2cSopenharmony_ci
38546debc2cSopenharmony_ci
38646debc2cSopenharmony_civoid TestTCPSetAddr(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
38746debc2cSopenharmony_ci{
38846debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
38946debc2cSopenharmony_ci    std::string addr = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
39046debc2cSopenharmony_ci    scanDevInfoTcp.SetAddr(addr);
39146debc2cSopenharmony_ci    addr = scanDevInfoTcp.GetAddr();
39246debc2cSopenharmony_ci}
39346debc2cSopenharmony_ci
39446debc2cSopenharmony_civoid TestTCPSetButton(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
39546debc2cSopenharmony_ci{
39646debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
39746debc2cSopenharmony_ci    std::string button = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
39846debc2cSopenharmony_ci    scanDevInfoTcp.SetButton(button);
39946debc2cSopenharmony_ci    button = scanDevInfoTcp.GetButton();
40046debc2cSopenharmony_ci}
40146debc2cSopenharmony_ci
40246debc2cSopenharmony_civoid TestTCPSetFeeder(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
40346debc2cSopenharmony_ci{
40446debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
40546debc2cSopenharmony_ci    std::string feeder = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
40646debc2cSopenharmony_ci    scanDevInfoTcp.SetFeeder(feeder);
40746debc2cSopenharmony_ci    feeder = scanDevInfoTcp.GetFeeder();
40846debc2cSopenharmony_ci}
40946debc2cSopenharmony_ci
41046debc2cSopenharmony_civoid TestTCPSetDeviceState(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
41146debc2cSopenharmony_ci{
41246debc2cSopenharmony_ci    ScanDeviceInfoTCP scanDevInfoTcp;
41346debc2cSopenharmony_ci    uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
41446debc2cSopenharmony_ci    scanDevInfoTcp.SetDeviceState(deviceState);
41546debc2cSopenharmony_ci    deviceState = scanDevInfoTcp.GetDeviceState();
41646debc2cSopenharmony_ci}
41746debc2cSopenharmony_ci
41846debc2cSopenharmony_civoid TestUSBSetDeviceId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
41946debc2cSopenharmony_ci{
42046debc2cSopenharmony_ci    ScanDeviceInfo deviceInfo;
42146debc2cSopenharmony_ci    std::string deviceId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
42246debc2cSopenharmony_ci    deviceInfo.SetDeviceId(deviceId);
42346debc2cSopenharmony_ci    deviceId = deviceInfo.GetDeviceId();
42446debc2cSopenharmony_ci}
42546debc2cSopenharmony_ci
42646debc2cSopenharmony_civoid TestUSBSetManufacturer(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
42746debc2cSopenharmony_ci{
42846debc2cSopenharmony_ci    ScanDeviceInfo deviceInfo;
42946debc2cSopenharmony_ci    std::string manufacturer = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
43046debc2cSopenharmony_ci    deviceInfo.SetManufacturer(manufacturer);
43146debc2cSopenharmony_ci    manufacturer = deviceInfo.GetManufacturer();
43246debc2cSopenharmony_ci}
43346debc2cSopenharmony_ci
43446debc2cSopenharmony_civoid TestUSBSetModel(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
43546debc2cSopenharmony_ci{
43646debc2cSopenharmony_ci    ScanDeviceInfo deviceInfo;
43746debc2cSopenharmony_ci    std::string model = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
43846debc2cSopenharmony_ci    deviceInfo.SetModel(model);
43946debc2cSopenharmony_ci    model = deviceInfo.GetModel();
44046debc2cSopenharmony_ci}
44146debc2cSopenharmony_ci
44246debc2cSopenharmony_civoid TestUSBSetDeviceType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
44346debc2cSopenharmony_ci{
44446debc2cSopenharmony_ci    ScanDeviceInfo deviceInfo;
44546debc2cSopenharmony_ci    std::string deviceType = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
44646debc2cSopenharmony_ci    deviceInfo.SetDeviceType(deviceType);
44746debc2cSopenharmony_ci    deviceType = deviceInfo.GetDeviceType();
44846debc2cSopenharmony_ci}
44946debc2cSopenharmony_ci
45046debc2cSopenharmony_civoid TestUSBSetDeviceState(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
45146debc2cSopenharmony_ci{
45246debc2cSopenharmony_ci    ScanDeviceInfo deviceInfo;
45346debc2cSopenharmony_ci    uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
45446debc2cSopenharmony_ci    deviceInfo.SetDeviceState(deviceState);
45546debc2cSopenharmony_ci    deviceState = deviceInfo.GetDeviceState();
45646debc2cSopenharmony_ci}
45746debc2cSopenharmony_ci
45846debc2cSopenharmony_civoid TestUSBSetDiscoverMode(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
45946debc2cSopenharmony_ci{
46046debc2cSopenharmony_ci    ScanDeviceInfo deviceInfo;
46146debc2cSopenharmony_ci    std::string discoverMode = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
46246debc2cSopenharmony_ci    deviceInfo.SetDiscoverMode(discoverMode);
46346debc2cSopenharmony_ci    discoverMode = deviceInfo.GetDiscoverMode();
46446debc2cSopenharmony_ci}
46546debc2cSopenharmony_ci
46646debc2cSopenharmony_civoid TestUSBSetSerialNumber(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
46746debc2cSopenharmony_ci{
46846debc2cSopenharmony_ci    ScanDeviceInfo deviceInfo;
46946debc2cSopenharmony_ci    std::string serialNumber = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
47046debc2cSopenharmony_ci    deviceInfo.SetSerialNumber(serialNumber);
47146debc2cSopenharmony_ci    serialNumber = deviceInfo.GetSerialNumber();
47246debc2cSopenharmony_ci}
47346debc2cSopenharmony_ci
47446debc2cSopenharmony_civoid TestSetMinValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
47546debc2cSopenharmony_ci{
47646debc2cSopenharmony_ci    ScanRange range;
47746debc2cSopenharmony_ci    int32_t minValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
47846debc2cSopenharmony_ci    range.SetMinValue(minValue);
47946debc2cSopenharmony_ci    minValue = range.GetMinValue();
48046debc2cSopenharmony_ci}
48146debc2cSopenharmony_ci
48246debc2cSopenharmony_civoid TestSetMaxValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
48346debc2cSopenharmony_ci{
48446debc2cSopenharmony_ci    ScanRange range;
48546debc2cSopenharmony_ci    int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
48646debc2cSopenharmony_ci    range.SetMaxValue(maxValue);
48746debc2cSopenharmony_ci    maxValue = range.GetMaxValue();
48846debc2cSopenharmony_ci}
48946debc2cSopenharmony_ci
49046debc2cSopenharmony_civoid TestSetQuantValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
49146debc2cSopenharmony_ci{
49246debc2cSopenharmony_ci    ScanRange range;
49346debc2cSopenharmony_ci    int32_t quantValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
49446debc2cSopenharmony_ci    range.SetQuantValue(quantValue);
49546debc2cSopenharmony_ci    quantValue = range.GetQuantValue();
49646debc2cSopenharmony_ci}
49746debc2cSopenharmony_ci
49846debc2cSopenharmony_civoid TestScanRange(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
49946debc2cSopenharmony_ci{
50046debc2cSopenharmony_ci    ScanRange range;
50146debc2cSopenharmony_ci    range.Reset();
50246debc2cSopenharmony_ci    int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
50346debc2cSopenharmony_ci    range.SetMaxValue(maxValue);
50446debc2cSopenharmony_ci    ScanRange rangeBak(range);
50546debc2cSopenharmony_ci    MessageParcel parcel;
50646debc2cSopenharmony_ci    range.Marshalling(parcel);
50746debc2cSopenharmony_ci    auto rangeMarshall = ScanRange::Unmarshalling(parcel);
50846debc2cSopenharmony_ci}
50946debc2cSopenharmony_ci
51046debc2cSopenharmony_civoid TestDeviceInfo(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
51146debc2cSopenharmony_ci{
51246debc2cSopenharmony_ci    ScanDeviceInfoTCP infoTcp;
51346debc2cSopenharmony_ci    uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
51446debc2cSopenharmony_ci    infoTcp.SetDeviceState(deviceState);
51546debc2cSopenharmony_ci    ScanDeviceInfoTCP infoTcpTmp(infoTcp);
51646debc2cSopenharmony_ci    ScanDeviceInfoTCP infoTcpBak(infoTcpTmp);
51746debc2cSopenharmony_ci    MessageParcel parcel;
51846debc2cSopenharmony_ci    infoTcpBak.Marshalling(parcel);
51946debc2cSopenharmony_ci    auto infoTcpMarshall = ScanDeviceInfoTCP::Unmarshalling(parcel);
52046debc2cSopenharmony_ci
52146debc2cSopenharmony_ci    ScanDeviceInfo info;
52246debc2cSopenharmony_ci    info.SetDeviceState(deviceState);
52346debc2cSopenharmony_ci    ScanDeviceInfo infoTmp(info);
52446debc2cSopenharmony_ci    ScanDeviceInfo infoBak(infoTmp);
52546debc2cSopenharmony_ci    infoBak.Marshalling(parcel);
52646debc2cSopenharmony_ci    auto infoMarshall = ScanDeviceInfo::Unmarshalling(parcel);
52746debc2cSopenharmony_ci}
52846debc2cSopenharmony_ci
52946debc2cSopenharmony_civoid TestScanOptDesNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
53046debc2cSopenharmony_ci{
53146debc2cSopenharmony_ci    napi_env env = nullptr;
53246debc2cSopenharmony_ci    ScanOptionDescriptor info;
53346debc2cSopenharmony_ci    uint32_t optionUnit = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
53446debc2cSopenharmony_ci    info.SetOptionUnit(optionUnit);
53546debc2cSopenharmony_ci    ScanOptionDescriptorHelper::MakeJsObject(env, info);
53646debc2cSopenharmony_ci    napi_value jsValue = nullptr;
53746debc2cSopenharmony_ci    ScanOptionDescriptorHelper::BuildFromJs(env, jsValue);
53846debc2cSopenharmony_ci}
53946debc2cSopenharmony_ci
54046debc2cSopenharmony_civoid TestScanOptValNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
54146debc2cSopenharmony_ci{
54246debc2cSopenharmony_ci    napi_env env = nullptr;
54346debc2cSopenharmony_ci    ScanOptionValue info;
54446debc2cSopenharmony_ci    int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
54546debc2cSopenharmony_ci    info.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
54646debc2cSopenharmony_ci    ScanOptionValueHelper::MakeJsObject(env, info);
54746debc2cSopenharmony_ci    napi_value jsValue = nullptr;
54846debc2cSopenharmony_ci    ScanOptionValueHelper::BuildFromJs(env, jsValue);
54946debc2cSopenharmony_ci}
55046debc2cSopenharmony_ci
55146debc2cSopenharmony_civoid TestScanParaNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
55246debc2cSopenharmony_ci{
55346debc2cSopenharmony_ci    napi_env env = nullptr;
55446debc2cSopenharmony_ci    ScanParameters info;
55546debc2cSopenharmony_ci    int32_t format = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
55646debc2cSopenharmony_ci    info.SetFormat(static_cast<ScanFrame>(format));
55746debc2cSopenharmony_ci    ScanParametersHelper::MakeJsObject(env, info);
55846debc2cSopenharmony_ci    napi_value jsValue = nullptr;
55946debc2cSopenharmony_ci    ScanParametersHelper::BuildFromJs(env, jsValue);
56046debc2cSopenharmony_ci}
56146debc2cSopenharmony_ci
56246debc2cSopenharmony_civoid TestScanProgNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
56346debc2cSopenharmony_ci{
56446debc2cSopenharmony_ci    napi_env env = nullptr;
56546debc2cSopenharmony_ci    ScanProgress info;
56646debc2cSopenharmony_ci    int32_t progress = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
56746debc2cSopenharmony_ci    info.SetScanProgress(progress);
56846debc2cSopenharmony_ci    ScanProgressHelper::MakeJsObject(env, info);
56946debc2cSopenharmony_ci}
57046debc2cSopenharmony_ci
57146debc2cSopenharmony_civoid TestScanRangeNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
57246debc2cSopenharmony_ci{
57346debc2cSopenharmony_ci    napi_env env = nullptr;
57446debc2cSopenharmony_ci    ScanRange info;
57546debc2cSopenharmony_ci    int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
57646debc2cSopenharmony_ci    info.SetMaxValue(maxValue);
57746debc2cSopenharmony_ci    ScanRangeHelper::MakeJsObject(env, info);
57846debc2cSopenharmony_ci    napi_value jsValue = nullptr;
57946debc2cSopenharmony_ci    ScanRangeHelper::BuildFromJs(env, jsValue);
58046debc2cSopenharmony_ci}
58146debc2cSopenharmony_ci
58246debc2cSopenharmony_civoid TestScannerInfoNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
58346debc2cSopenharmony_ci{
58446debc2cSopenharmony_ci    napi_env env = nullptr;
58546debc2cSopenharmony_ci    ScanDeviceInfo info;
58646debc2cSopenharmony_ci    std::string deviceId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
58746debc2cSopenharmony_ci    info.SetDeviceId(deviceId);
58846debc2cSopenharmony_ci    ScannerInfoHelper::MakeJsObject(env, info);
58946debc2cSopenharmony_ci}
59046debc2cSopenharmony_ci
59146debc2cSopenharmony_civoid TestScannerInfoTCPNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
59246debc2cSopenharmony_ci{
59346debc2cSopenharmony_ci    napi_env env = nullptr;
59446debc2cSopenharmony_ci    ScanDeviceInfoTCP info;
59546debc2cSopenharmony_ci    uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
59646debc2cSopenharmony_ci    info.SetDeviceState(deviceState);
59746debc2cSopenharmony_ci    ScannerInfoHelperTCP::MakeJsObject(env, info);
59846debc2cSopenharmony_ci}
59946debc2cSopenharmony_ci
60046debc2cSopenharmony_civoid TestGetExtensionIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
60146debc2cSopenharmony_ci{
60246debc2cSopenharmony_ci    std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
60346debc2cSopenharmony_ci    NapiScanUtils::GetExtensionId(globalId);
60446debc2cSopenharmony_ci}
60546debc2cSopenharmony_ci
60646debc2cSopenharmony_civoid TestGetGlobalIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
60746debc2cSopenharmony_ci{
60846debc2cSopenharmony_ci    std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
60946debc2cSopenharmony_ci    std::string localId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
61046debc2cSopenharmony_ci    NapiScanUtils::GetGlobalId(globalId, localId);
61146debc2cSopenharmony_ci}
61246debc2cSopenharmony_ci
61346debc2cSopenharmony_civoid TestGetLocalIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
61446debc2cSopenharmony_ci{
61546debc2cSopenharmony_ci    std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
61646debc2cSopenharmony_ci    std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
61746debc2cSopenharmony_ci    NapiScanUtils::GetLocalId(globalId, extensionId);
61846debc2cSopenharmony_ci}
61946debc2cSopenharmony_ci
62046debc2cSopenharmony_civoid TestEncodeExtensionCidInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
62146debc2cSopenharmony_ci{
62246debc2cSopenharmony_ci    std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
62346debc2cSopenharmony_ci    uint32_t callbackId = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
62446debc2cSopenharmony_ci    NapiScanUtils::EncodeExtensionCid(globalId, callbackId);
62546debc2cSopenharmony_ci}
62646debc2cSopenharmony_ci
62746debc2cSopenharmony_civoid TestDecodeExtensionCid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
62846debc2cSopenharmony_ci{
62946debc2cSopenharmony_ci    std::string cid = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
63046debc2cSopenharmony_ci    std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
63146debc2cSopenharmony_ci    uint32_t callbackId = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
63246debc2cSopenharmony_ci    NapiScanUtils::DecodeExtensionCid(cid, extensionId, callbackId);
63346debc2cSopenharmony_ci}
63446debc2cSopenharmony_ci
63546debc2cSopenharmony_civoid TestGetTaskEventId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
63646debc2cSopenharmony_ci{
63746debc2cSopenharmony_ci    std::string taskId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
63846debc2cSopenharmony_ci    std::string type = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
63946debc2cSopenharmony_ci    NapiScanUtils::GetTaskEventId(taskId, type);
64046debc2cSopenharmony_ci}
64146debc2cSopenharmony_ci
64246debc2cSopenharmony_civoid TestOpenFile(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
64346debc2cSopenharmony_ci{
64446debc2cSopenharmony_ci    std::string filePath = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
64546debc2cSopenharmony_ci    NapiScanUtils::OpenFile(filePath);
64646debc2cSopenharmony_ci}
64746debc2cSopenharmony_ci
64846debc2cSopenharmony_civoid TestIsPathValid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
64946debc2cSopenharmony_ci{
65046debc2cSopenharmony_ci    std::string filePath = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
65146debc2cSopenharmony_ci    NapiScanUtils::IsPathValid(filePath);
65246debc2cSopenharmony_ci}
65346debc2cSopenharmony_ci
65446debc2cSopenharmony_civoid ScanOptionDescriptorFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
65546debc2cSopenharmony_ci{
65646debc2cSopenharmony_ci    TestSetOptionName(data, size, dataProvider);
65746debc2cSopenharmony_ci    TestSetOptionTitle(data, size, dataProvider);
65846debc2cSopenharmony_ci    TestSetOptionDesc(data, size, dataProvider);
65946debc2cSopenharmony_ci    TestSetOptionType(data, size, dataProvider);
66046debc2cSopenharmony_ci    TestSetOptionUnit(data, size, dataProvider);
66146debc2cSopenharmony_ci    TestSetOptionSize(data, size, dataProvider);
66246debc2cSopenharmony_ci    TestSetOptionCap(data, size, dataProvider);
66346debc2cSopenharmony_ci    TestSetOptionConstraintType(data, size, dataProvider);
66446debc2cSopenharmony_ci    TestSetOptionConstraintString(data, size, dataProvider);
66546debc2cSopenharmony_ci    TestSetOptionConstraintNumber(data, size, dataProvider);
66646debc2cSopenharmony_ci    TestSetOptionConstraintRange(data, size, dataProvider);
66746debc2cSopenharmony_ci    TestScanOptionDescriptor(data, size, dataProvider);
66846debc2cSopenharmony_ci}
66946debc2cSopenharmony_ci
67046debc2cSopenharmony_civoid ScanOptionValueFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
67146debc2cSopenharmony_ci{
67246debc2cSopenharmony_ci    TestSetScanOptionValueType(data, size, dataProvider);
67346debc2cSopenharmony_ci    TestSetValueSize(data, size, dataProvider);
67446debc2cSopenharmony_ci    TestSetNumValue(data, size, dataProvider);
67546debc2cSopenharmony_ci    TestSetNumListValue(data, size, dataProvider);
67646debc2cSopenharmony_ci    TestSetStrValue(data, size, dataProvider);
67746debc2cSopenharmony_ci    TestSetBoolValue(data, size, dataProvider);
67846debc2cSopenharmony_ci    TestScanOptionValue(data, size, dataProvider);
67946debc2cSopenharmony_ci}
68046debc2cSopenharmony_ci
68146debc2cSopenharmony_civoid ScanParametersFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
68246debc2cSopenharmony_ci{
68346debc2cSopenharmony_ci    TestSetFormat(data, size, dataProvider);
68446debc2cSopenharmony_ci    TestSetLastFrame(data, size, dataProvider);
68546debc2cSopenharmony_ci    TestSetBytesPerLine(data, size, dataProvider);
68646debc2cSopenharmony_ci    TestSetPixelsPerLine(data, size, dataProvider);
68746debc2cSopenharmony_ci    TestSetLines(data, size, dataProvider);
68846debc2cSopenharmony_ci    TestSetDepth(data, size, dataProvider);
68946debc2cSopenharmony_ci    TestScanParameters(data, size, dataProvider);
69046debc2cSopenharmony_ci}
69146debc2cSopenharmony_ci
69246debc2cSopenharmony_civoid ScanDeviceInfoFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
69346debc2cSopenharmony_ci{
69446debc2cSopenharmony_ci    TestSetScanProgress(data, size, dataProvider);
69546debc2cSopenharmony_ci    TestSetScanPictureFd(data, size, dataProvider);
69646debc2cSopenharmony_ci    TestSetIsFinal(data, size, dataProvider);
69746debc2cSopenharmony_ci    TestSetPictureId(data, size, dataProvider);
69846debc2cSopenharmony_ci    TestSetTaskCode(data, size, dataProvider);
69946debc2cSopenharmony_ci    TestScanProgress(data, size, dataProvider);
70046debc2cSopenharmony_ci}
70146debc2cSopenharmony_ci
70246debc2cSopenharmony_civoid ScannerInfoFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
70346debc2cSopenharmony_ci{
70446debc2cSopenharmony_ci    TestTCPSetDeviceName(data, size, dataProvider);
70546debc2cSopenharmony_ci    TestTCPSetUuid(data, size, dataProvider);
70646debc2cSopenharmony_ci    TestTCPSetModel(data, size, dataProvider);
70746debc2cSopenharmony_ci    TestTCPSetManufacturer(data, size, dataProvider);
70846debc2cSopenharmony_ci    TestTCPSetDeviceType(data, size, dataProvider);
70946debc2cSopenharmony_ci    TestTCPSetPort(data, size, dataProvider);
71046debc2cSopenharmony_ci    TestTCPSetAddr(data, size, dataProvider);
71146debc2cSopenharmony_ci    TestTCPSetButton(data, size, dataProvider);
71246debc2cSopenharmony_ci    TestTCPSetFeeder(data, size, dataProvider);
71346debc2cSopenharmony_ci    TestTCPSetDeviceState(data, size, dataProvider);
71446debc2cSopenharmony_ci    TestUSBSetDeviceId(data, size, dataProvider);
71546debc2cSopenharmony_ci    TestUSBSetManufacturer(data, size, dataProvider);
71646debc2cSopenharmony_ci    TestUSBSetModel(data, size, dataProvider);
71746debc2cSopenharmony_ci    TestUSBSetDeviceType(data, size, dataProvider);
71846debc2cSopenharmony_ci    TestUSBSetDeviceState(data, size, dataProvider);
71946debc2cSopenharmony_ci    TestUSBSetDiscoverMode(data, size, dataProvider);
72046debc2cSopenharmony_ci    TestUSBSetSerialNumber(data, size, dataProvider);
72146debc2cSopenharmony_ci    TestDeviceInfo(data, size, dataProvider);
72246debc2cSopenharmony_ci}
72346debc2cSopenharmony_ci
72446debc2cSopenharmony_civoid ScanRangeFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
72546debc2cSopenharmony_ci{
72646debc2cSopenharmony_ci    TestSetMinValue(data, size, dataProvider);
72746debc2cSopenharmony_ci    TestSetMaxValue(data, size, dataProvider);
72846debc2cSopenharmony_ci    TestSetQuantValue(data, size, dataProvider);
72946debc2cSopenharmony_ci    TestScanRange(data, size, dataProvider);
73046debc2cSopenharmony_ci}
73146debc2cSopenharmony_ci
73246debc2cSopenharmony_civoid ScanOptionDescriptorHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
73346debc2cSopenharmony_ci{
73446debc2cSopenharmony_ci    TestScanOptDesNapiInterface(data, size, dataProvider);
73546debc2cSopenharmony_ci}
73646debc2cSopenharmony_ci
73746debc2cSopenharmony_civoid ScanOptionValueHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
73846debc2cSopenharmony_ci{
73946debc2cSopenharmony_ci    TestScanOptValNapiInterface(data, size, dataProvider);
74046debc2cSopenharmony_ci}
74146debc2cSopenharmony_ci
74246debc2cSopenharmony_civoid ScanParametersHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
74346debc2cSopenharmony_ci{
74446debc2cSopenharmony_ci    TestScanParaNapiInterface(data, size, dataProvider);
74546debc2cSopenharmony_ci}
74646debc2cSopenharmony_ci
74746debc2cSopenharmony_civoid ScanProgressHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
74846debc2cSopenharmony_ci{
74946debc2cSopenharmony_ci    TestScanProgNapiInterface(data, size, dataProvider);
75046debc2cSopenharmony_ci}
75146debc2cSopenharmony_ci
75246debc2cSopenharmony_civoid ScanRangeHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
75346debc2cSopenharmony_ci{
75446debc2cSopenharmony_ci    TestScanRangeNapiInterface(data, size, dataProvider);
75546debc2cSopenharmony_ci}
75646debc2cSopenharmony_ci
75746debc2cSopenharmony_civoid ScannerInfoHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
75846debc2cSopenharmony_ci{
75946debc2cSopenharmony_ci    TestScannerInfoNapiInterface(data, size, dataProvider);
76046debc2cSopenharmony_ci    TestScannerInfoTCPNapiInterface(data, size, dataProvider);
76146debc2cSopenharmony_ci}
76246debc2cSopenharmony_ci
76346debc2cSopenharmony_civoid NapiScanUtilsFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
76446debc2cSopenharmony_ci{
76546debc2cSopenharmony_ci    TestGetExtensionIdInterface(data, size, dataProvider);
76646debc2cSopenharmony_ci    TestGetGlobalIdInterface(data, size, dataProvider);
76746debc2cSopenharmony_ci    TestGetLocalIdInterface(data, size, dataProvider);
76846debc2cSopenharmony_ci    TestEncodeExtensionCidInterface(data, size, dataProvider);
76946debc2cSopenharmony_ci    TestDecodeExtensionCid(data, size, dataProvider);
77046debc2cSopenharmony_ci    TestGetTaskEventId(data, size, dataProvider);
77146debc2cSopenharmony_ci    TestOpenFile(data, size, dataProvider);
77246debc2cSopenharmony_ci    TestIsPathValid(data, size, dataProvider);
77346debc2cSopenharmony_ci}
77446debc2cSopenharmony_ci
77546debc2cSopenharmony_ci}
77646debc2cSopenharmony_ci}
77746debc2cSopenharmony_ci
77846debc2cSopenharmony_ci/* Fuzzer entry point */
77946debc2cSopenharmony_ciextern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
78046debc2cSopenharmony_ci{
78146debc2cSopenharmony_ci    if (data == nullptr) {
78246debc2cSopenharmony_ci        return 0;
78346debc2cSopenharmony_ci    }
78446debc2cSopenharmony_ci
78546debc2cSopenharmony_ci    if (size < OHOS::Scan::U32_AT_SIZE || size > OHOS::Scan::FOO_MAX_LEN) {
78646debc2cSopenharmony_ci        return 0;
78746debc2cSopenharmony_ci    }
78846debc2cSopenharmony_ci    FuzzedDataProvider dataProvider(data, size);
78946debc2cSopenharmony_ci    OHOS::Scan::ScanOptionDescriptorFuzzTest(data, size, &dataProvider);
79046debc2cSopenharmony_ci    OHOS::Scan::ScanOptionValueFuzzTest(data, size, &dataProvider);
79146debc2cSopenharmony_ci    OHOS::Scan::ScanParametersFuzzTest(data, size, &dataProvider);
79246debc2cSopenharmony_ci    OHOS::Scan::ScanDeviceInfoFuzzTest(data, size, &dataProvider);
79346debc2cSopenharmony_ci    OHOS::Scan::ScannerInfoFuzzTest(data, size, &dataProvider);
79446debc2cSopenharmony_ci    OHOS::Scan::ScanRangeFuzzTest(data, size, &dataProvider);
79546debc2cSopenharmony_ci    OHOS::Scan::ScanOptionDescriptorHelperFuzzTest(data, size, &dataProvider);
79646debc2cSopenharmony_ci    OHOS::Scan::ScanOptionValueHelperFuzzTest(data, size, &dataProvider);
79746debc2cSopenharmony_ci    OHOS::Scan::ScanParametersHelperFuzzTest(data, size, &dataProvider);
79846debc2cSopenharmony_ci    OHOS::Scan::ScanProgressHelperFuzzTest(data, size, &dataProvider);
79946debc2cSopenharmony_ci    OHOS::Scan::ScanRangeHelperFuzzTest(data, size, &dataProvider);
80046debc2cSopenharmony_ci    OHOS::Scan::ScannerInfoHelperFuzzTest(data, size, &dataProvider);
80146debc2cSopenharmony_ci    OHOS::Scan::NapiScanUtilsFuzzTest(data, size, &dataProvider);
80246debc2cSopenharmony_ci    return 0;
80346debc2cSopenharmony_ci}
80446debc2cSopenharmony_ci
805