1 //===-- BreakpadRecordsTest.cpp ---------------------------------*- C++ -*-===// 2 // 3 // 4 // The LLVM Compiler Infrastructure 5 // 6 // This file is distributed under the University of Illinois Open Source 7 // License. See LICENSE.TXT for details. 8 // 9 //===----------------------------------------------------------------------===// 10 11 #include "Plugins/ObjectFile/Breakpad/BreakpadRecords.h" 12 #include "gtest/gtest.h" 13 14 using namespace lldb_private; 15 using namespace lldb_private::breakpad; 16 17 TEST(Record, classify) { 18 EXPECT_EQ(Record::Module, Record::classify("MODULE")); 19 EXPECT_EQ(Record::Info, Record::classify("INFO")); 20 EXPECT_EQ(Record::File, Record::classify("FILE")); 21 EXPECT_EQ(Record::Func, Record::classify("FUNC")); 22 EXPECT_EQ(Record::Public, Record::classify("PUBLIC")); 23 EXPECT_EQ(Record::Stack, Record::classify("STACK")); 24 25 // Any line which does not start with a known keyword will be classified as a 26 // line record, as those are the only ones that start without a keyword. 27 EXPECT_EQ(Record::Line, Record::classify("deadbeef")); 28 EXPECT_EQ(Record::Line, Record::classify("12")); 29 EXPECT_EQ(Record::Line, Record::classify("CODE_ID")); 30 } 31 32 TEST(ModuleRecord, parse) { 33 EXPECT_EQ(ModuleRecord(llvm::Triple::Linux, llvm::Triple::x86_64, 34 UUID::fromData("@ABCDEFGHIJKLMNO", 16)), 35 ModuleRecord::parse( 36 "MODULE Linux x86_64 434241404544474648494a4b4c4d4e4f0 a.out")); 37 38 EXPECT_EQ(llvm::None, ModuleRecord::parse("MODULE")); 39 EXPECT_EQ(llvm::None, ModuleRecord::parse("MODULE Linux")); 40 EXPECT_EQ(llvm::None, ModuleRecord::parse("MODULE Linux x86_64")); 41 EXPECT_EQ(llvm::None, 42 ModuleRecord::parse("MODULE Linux x86_64 deadbeefbaadf00d")); 43 } 44 45 TEST(InfoRecord, parse) { 46 EXPECT_EQ(InfoRecord(UUID::fromData("@ABCDEFGHIJKLMNO", 16)), 47 InfoRecord::parse("INFO CODE_ID 404142434445464748494a4b4c4d4e4f")); 48 EXPECT_EQ(InfoRecord(UUID()), InfoRecord::parse("INFO CODE_ID 47 a.exe")); 49 50 EXPECT_EQ(llvm::None, InfoRecord::parse("INFO")); 51 EXPECT_EQ(llvm::None, InfoRecord::parse("INFO CODE_ID")); 52 } 53 54 TEST(PublicRecord, parse) { 55 EXPECT_EQ(PublicRecord(true, 0x47, 0x8, "foo"), 56 PublicRecord::parse("PUBLIC m 47 8 foo")); 57 EXPECT_EQ(PublicRecord(false, 0x47, 0x8, "foo"), 58 PublicRecord::parse("PUBLIC 47 8 foo")); 59 60 EXPECT_EQ(llvm::None, PublicRecord::parse("PUBLIC 47 8")); 61 EXPECT_EQ(llvm::None, PublicRecord::parse("PUBLIC 47")); 62 EXPECT_EQ(llvm::None, PublicRecord::parse("PUBLIC m")); 63 EXPECT_EQ(llvm::None, PublicRecord::parse("PUBLIC")); 64 } 65