1/*
2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#include "parcel.h"
17
18namespace OHOS::FileManagement::Backup {
19using namespace std;
20namespace {
21bool g_mockWriteUint32 = true;
22bool g_mockWriteString = true;
23bool g_mockWriteParcelable = true;
24bool g_mockReadParcelable = true;
25uint8_t g_mockWriteStringCount = 0;
26uint8_t g_mockWriteStringMax = 0;
27} // namespace
28
29void MockWriteUint32(bool state)
30{
31    g_mockWriteUint32 = state;
32}
33
34void MockWriteString(bool state, uint8_t count)
35{
36    g_mockWriteString = state;
37    g_mockWriteStringMax = count;
38}
39
40void MockWriteParcelable(bool state)
41{
42    g_mockWriteParcelable = state;
43}
44
45void MockReadParcelable(bool state)
46{
47    g_mockReadParcelable = state;
48}
49
50void ResetParcelState()
51{
52    g_mockWriteUint32 = true;
53    g_mockWriteString = true;
54    g_mockWriteParcelable = true;
55    g_mockReadParcelable = true;
56    g_mockWriteStringCount = 0;
57    g_mockWriteStringMax = 0;
58}
59
60bool GetMockReadParcelableState()
61{
62    return g_mockReadParcelable;
63}
64
65bool Parcel::WriteUint32(uint32_t)
66{
67    return g_mockWriteUint32;
68}
69
70bool Parcel::WriteString(const string &)
71{
72    if (g_mockWriteStringCount < g_mockWriteStringMax) {
73        g_mockWriteStringCount++;
74        return !g_mockWriteString;
75    }
76    return g_mockWriteString;
77}
78
79bool Parcel::WriteParcelable(const Parcelable *)
80{
81    return g_mockWriteParcelable;
82}
83
84bool Parcel::ReadString(string &value)
85{
86    if (g_mockWriteStringCount < g_mockWriteStringMax) {
87        g_mockWriteStringCount++;
88        return !g_mockWriteString;
89    }
90    return g_mockWriteString;
91}
92
93bool Parcel::ReadUint32(uint32_t &value)
94{
95    return g_mockWriteUint32;
96}
97} // namespace OHOS::FileManagement::Backup