1*e865fa75SRiver Riddle //===- unittest/TableGen/ParserEntryPointTest.cpp - Parser tests ----------===// 2*e865fa75SRiver Riddle // 3*e865fa75SRiver Riddle // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*e865fa75SRiver Riddle // See https://llvm.org/LICENSE.txt for license information. 5*e865fa75SRiver Riddle // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*e865fa75SRiver Riddle // 7*e865fa75SRiver Riddle //===----------------------------------------------------------------------===// 8*e865fa75SRiver Riddle 9*e865fa75SRiver Riddle #include "llvm/ADT/ArrayRef.h" 10*e865fa75SRiver Riddle #include "llvm/ADT/STLExtras.h" 11*e865fa75SRiver Riddle #include "llvm/Support/MemoryBuffer.h" 12*e865fa75SRiver Riddle #include "llvm/TableGen/Parser.h" 13*e865fa75SRiver Riddle #include "llvm/TableGen/Record.h" 14*e865fa75SRiver Riddle #include "gmock/gmock.h" 15*e865fa75SRiver Riddle #include "gtest/gtest.h" 16*e865fa75SRiver Riddle 17*e865fa75SRiver Riddle using namespace llvm; 18*e865fa75SRiver Riddle 19*e865fa75SRiver Riddle TEST(Parser, SanityTest) { 20*e865fa75SRiver Riddle // Simple TableGen source file with a single record. 21*e865fa75SRiver Riddle const char *SimpleTdSource = R"td( 22*e865fa75SRiver Riddle def Foo { 23*e865fa75SRiver Riddle string strField = "value"; 24*e865fa75SRiver Riddle } 25*e865fa75SRiver Riddle )td"; 26*e865fa75SRiver Riddle 27*e865fa75SRiver Riddle auto ProcessFn = [&](const RecordKeeper &Records) { 28*e865fa75SRiver Riddle Record *Foo = Records.getDef("Foo"); 29*e865fa75SRiver Riddle Optional<StringRef> Field = Foo->getValueAsOptionalString("strField"); 30*e865fa75SRiver Riddle EXPECT_TRUE(Field.hasValue()); 31*e865fa75SRiver Riddle EXPECT_EQ(Field.getValue(), "value"); 32*e865fa75SRiver Riddle return false; 33*e865fa75SRiver Riddle }; 34*e865fa75SRiver Riddle 35*e865fa75SRiver Riddle bool ProcessResult = TableGenParseFile( 36*e865fa75SRiver Riddle MemoryBuffer::getMemBuffer(SimpleTdSource, "test_buffer"), 37*e865fa75SRiver Riddle /*IncludeDirs=*/{}, ProcessFn); 38*e865fa75SRiver Riddle EXPECT_FALSE(ProcessResult); 39*e865fa75SRiver Riddle } 40