xref: /aosp_15_r20/external/cronet/third_party/boringssl/src/pki/input_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2015 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "input.h"
6 
7 #include <gtest/gtest.h>
8 
9 namespace bssl::der::test {
10 
11 constexpr uint8_t kInput[] = {'t', 'e', 's', 't'};
12 const uint8_t kInput2[] = {'t', 'e', 'a', 'l'};
13 
TEST(InputTest,Equals)14 TEST(InputTest, Equals) {
15   Input test(kInput);
16   Input test2(kInput);
17   EXPECT_EQ(test, test2);
18 
19   uint8_t input_copy[std::size(kInput)] = {0};
20   memcpy(input_copy, kInput, std::size(kInput));
21   Input test_copy(input_copy);
22   EXPECT_EQ(test, test_copy);
23 
24   Input test_truncated(kInput, std::size(kInput) - 1);
25   EXPECT_NE(test, test_truncated);
26   EXPECT_NE(test_truncated, test);
27 }
28 
TEST(InputTest,LessThan)29 TEST(InputTest, LessThan) {
30   Input test(kInput);
31   EXPECT_FALSE(test < test);
32 
33   Input test2(kInput2);
34   EXPECT_FALSE(test < test2);
35   EXPECT_TRUE(test2 < test);
36 
37   Input test_truncated(kInput, std::size(kInput) - 1);
38   EXPECT_FALSE(test < test_truncated);
39   EXPECT_TRUE(test_truncated < test);
40 }
41 
TEST(InputTest,AsString)42 TEST(InputTest, AsString) {
43   Input input(kInput);
44   std::string expected_string(reinterpret_cast<const char *>(kInput),
45                               std::size(kInput));
46   EXPECT_EQ(expected_string, input.AsString());
47 }
48 
TEST(InputTest,StaticArray)49 TEST(InputTest, StaticArray) {
50   Input input(kInput);
51   EXPECT_EQ(std::size(kInput), input.size());
52 
53   Input input2(kInput);
54   EXPECT_EQ(input, input2);
55 }
56 
TEST(InputTest,ConstExpr)57 TEST(InputTest, ConstExpr) {
58   constexpr Input default_input;
59   static_assert(default_input.size() == 0);
60   static_assert(default_input.data() == nullptr);
61 
62   constexpr Input const_array_input(kInput);
63   static_assert(const_array_input.size() == 4);
64   static_assert(const_array_input.data() == kInput);
65   static_assert(default_input < const_array_input);
66 
67   constexpr Input ptr_len_input(kInput, 2);
68   static_assert(ptr_len_input.size() == 2);
69   static_assert(ptr_len_input.data() == kInput);
70   static_assert(ptr_len_input < const_array_input);
71 
72   Input runtime_input(kInput2, 2);
73   EXPECT_EQ(runtime_input, ptr_len_input);
74 }
75 
TEST(ByteReaderTest,NoReadPastEnd)76 TEST(ByteReaderTest, NoReadPastEnd) {
77   ByteReader reader(Input(nullptr, 0));
78   uint8_t data;
79   EXPECT_FALSE(reader.ReadByte(&data));
80 }
81 
TEST(ByteReaderTest,ReadToEnd)82 TEST(ByteReaderTest, ReadToEnd) {
83   uint8_t out;
84   ByteReader reader((Input(kInput)));
85   for (uint8_t input : kInput) {
86     ASSERT_TRUE(reader.ReadByte(&out));
87     ASSERT_EQ(input, out);
88   }
89   EXPECT_FALSE(reader.ReadByte(&out));
90 }
91 
TEST(ByteReaderTest,PartialReadFails)92 TEST(ByteReaderTest, PartialReadFails) {
93   Input out;
94   ByteReader reader((Input(kInput)));
95   EXPECT_FALSE(reader.ReadBytes(5, &out));
96 }
97 
TEST(ByteReaderTest,HasMore)98 TEST(ByteReaderTest, HasMore) {
99   Input out;
100   ByteReader reader((Input(kInput)));
101 
102   ASSERT_TRUE(reader.HasMore());
103   ASSERT_TRUE(reader.ReadBytes(std::size(kInput), &out));
104   ASSERT_FALSE(reader.HasMore());
105 }
106 
107 }  // namespace bssl::der::test
108