xref: /aosp_15_r20/external/pigweed/pw_transfer/pw_transfer_private/chunk_testing.h (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1 // Copyright 2023 The Pigweed Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
4 // use this file except in compliance with the License. You may obtain a copy of
5 // the License at
6 //
7 //     https://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, WITHOUT
11 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 // License for the specific language governing permissions and limitations under
13 // the License.
14 #pragma once
15 
16 #include "pw_bytes/span.h"
17 #include "pw_containers/vector.h"
18 #include "pw_transfer/internal/chunk.h"
19 #include "pw_unit_test/framework.h"
20 
21 namespace pw::transfer::test {
22 
EncodeChunk(const internal::Chunk & chunk)23 Vector<std::byte, 64> EncodeChunk(const internal::Chunk& chunk) {
24   Vector<std::byte, 64> buffer(64);
25   auto result = chunk.Encode(buffer);
26   EXPECT_EQ(result.status(), OkStatus());
27   buffer.resize(result.value().size());
28   return buffer;
29 }
30 
DecodeChunk(ConstByteSpan buffer)31 internal::Chunk DecodeChunk(ConstByteSpan buffer) {
32   auto result = internal::Chunk::Parse(buffer);
33   EXPECT_EQ(result.status(), OkStatus());
34   return *result;
35 }
36 
37 }  // namespace pw::transfer::test
38