1 //===-- DataExtractorTest.cpp -----------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #if defined(_MSC_VER) && (_HAS_EXCEPTIONS == 0)
11 // Workaround for MSVC standard library bug, which fails to include <thread>
13 // exceptions are disabled.
17 #include "gtest/gtest.h"
19 #include "lldb/Core/DataExtractor.h"
21 using namespace lldb_private;
23 TEST(DataExtractorTest, GetBitfield) {
24 uint8_t buffer[] = {0x01, 0x23, 0x45, 0x67};
25 DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle,
27 DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, sizeof(void *));
29 lldb::offset_t offset;
32 ASSERT_EQ(buffer[1], LE.GetMaxU64Bitfield(&offset, sizeof(buffer), 8, 8));
34 ASSERT_EQ(buffer[1], BE.GetMaxU64Bitfield(&offset, sizeof(buffer), 8, 8));
37 ASSERT_EQ(int8_t(buffer[1]),
38 LE.GetMaxS64Bitfield(&offset, sizeof(buffer), 8, 8));
40 ASSERT_EQ(int8_t(buffer[1]),
41 BE.GetMaxS64Bitfield(&offset, sizeof(buffer), 8, 8));
44 TEST(DataExtractorTest, PeekData) {
45 uint8_t buffer[] = {0x01, 0x02, 0x03, 0x04};
46 DataExtractor E(buffer, sizeof buffer, lldb::eByteOrderLittle, 4);
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));
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));
56 EXPECT_EQ(buffer + 4, E.PeekData(4, 0));
57 EXPECT_EQ(nullptr, E.PeekData(4, 1));