]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - unittests/Core/DataExtractorTest.cpp
Vendor import of lldb trunk r290819:
[FreeBSD/FreeBSD.git] / unittests / Core / DataExtractorTest.cpp
1 //===-- DataExtractorTest.cpp -----------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #if defined(_MSC_VER) && (_HAS_EXCEPTIONS == 0)
11 // Workaround for MSVC standard library bug, which fails to include <thread>
12 // when
13 // exceptions are disabled.
14 #include <eh.h>
15 #endif
16
17 #include "gtest/gtest.h"
18
19 #include "lldb/Core/DataExtractor.h"
20
21 using namespace lldb_private;
22
23 TEST(DataExtractorTest, GetBitfield) {
24   uint8_t buffer[] = {0x01, 0x23, 0x45, 0x67};
25   DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle,
26                    sizeof(void *));
27   DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, sizeof(void *));
28
29   lldb::offset_t offset;
30
31   offset = 0;
32   ASSERT_EQ(buffer[1], LE.GetMaxU64Bitfield(&offset, sizeof(buffer), 8, 8));
33   offset = 0;
34   ASSERT_EQ(buffer[1], BE.GetMaxU64Bitfield(&offset, sizeof(buffer), 8, 8));
35
36   offset = 0;
37   ASSERT_EQ(int8_t(buffer[1]),
38             LE.GetMaxS64Bitfield(&offset, sizeof(buffer), 8, 8));
39   offset = 0;
40   ASSERT_EQ(int8_t(buffer[1]),
41             BE.GetMaxS64Bitfield(&offset, sizeof(buffer), 8, 8));
42 }
43
44 TEST(DataExtractorTest, PeekData) {
45   uint8_t buffer[] = {0x01, 0x02, 0x03, 0x04};
46   DataExtractor E(buffer, sizeof buffer, lldb::eByteOrderLittle, 4);
47
48   EXPECT_EQ(buffer + 0, E.PeekData(0, 0));
49   EXPECT_EQ(buffer + 0, E.PeekData(0, 4));
50   EXPECT_EQ(nullptr, E.PeekData(0, 5));
51
52   EXPECT_EQ(buffer + 2, E.PeekData(2, 0));
53   EXPECT_EQ(buffer + 2, E.PeekData(2, 2));
54   EXPECT_EQ(nullptr, E.PeekData(2, 3));
55
56   EXPECT_EQ(buffer + 4, E.PeekData(4, 0));
57   EXPECT_EQ(nullptr, E.PeekData(4, 1));
58 }