1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "gtest/gtest.h"
18 
19 #include <cinttypes>
20 #include <vector>
21 
22 #include "buffer.h"
23 
24 namespace nogrod {
25 
TEST(buffer,smoke)26 TEST(buffer, smoke) {
27   std::vector<uint8_t> v{30, 31, 32, 33, 34};
28   // 1. Create a buffer not backed by the vector
29   Buffer b{v.data(), v.size()};
30 
31   EXPECT_EQ(b.data(), v.data());
32   EXPECT_EQ(b.size(), v.size());
33 
34   // 2. Move vector to buffer
35   Buffer b1(std::move(v));
36   EXPECT_EQ(b1.size(), 5U);
37   EXPECT_EQ(b1.data()[0], 30);
38   EXPECT_EQ(b1.data()[1], 31);
39   EXPECT_EQ(b1.data()[2], 32);
40   EXPECT_EQ(b1.data()[3], 33);
41   EXPECT_EQ(b1.data()[4], 34);
42 }
43 
TEST(buffer,move)44 TEST(buffer, move) {
45   std::vector<uint8_t> v{30, 31, 32, 33, 34};
46   // 1. Create a buffer not backed by the vector
47   Buffer b_to_move{v.data(), v.size()};
48 
49   Buffer b = std::move(b_to_move);
50 
51   EXPECT_EQ(b.data(), v.data());
52   EXPECT_EQ(b.size(), v.size());
53 
54   // 2. Move vector to buffer
55   Buffer b1_to_move(std::move(v));
56   Buffer b1 = std::move(b1_to_move);
57   EXPECT_EQ(b1.size(), 5U);
58   EXPECT_EQ(b1.data()[0], 30);
59   EXPECT_EQ(b1.data()[1], 31);
60   EXPECT_EQ(b1.data()[2], 32);
61   EXPECT_EQ(b1.data()[3], 33);
62   EXPECT_EQ(b1.data()[4], 34);
63 }
64 
65 }  // namespace nogrod