#include "llvm/ADT/BitmaskEnum.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/YAMLTraits.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
Hex16;
Hex32;
Hex64;
Hex8;
Input;
isNumeric;
MappingNormalization;
MappingTraits;
Output;
ScalarTraits;
StartsWith;
static void suppressErrorMessages(const llvm::SMDiagnostic &, void *) { … }
struct FooBar { … };
FooBarSequence;
LLVM_YAML_IS_SEQUENCE_VECTOR(FooBar)
struct FooBarContainer { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<FooBar> { … };
template <> struct MappingTraits<FooBarContainer> { … };
}
}
TEST(YAMLIO, TestMapRead) { … }
TEST(YAMLIO, TestMalformedMapRead) { … }
TEST(YAMLIO, TestMapDuplicatedKeysRead) { … }
TEST(YAMLIO, TestSequenceMapRead) { … }
TEST(YAMLIO, TestContainerSequenceMapRead) { … }
TEST(YAMLIO, TestMalformedContainerSequenceMapRead) { … }
TEST(YAMLIO, TestSequenceMapWriteAndRead) { … }
struct FooBarEnum { … };
namespace llvm {
namespace yaml {
template <> struct MappingTraits<FooBarEnum> { … };
}
}
TEST(YAMLIO, TestMapEnumRead) { … }
static void testErrorFilename(const llvm::SMDiagnostic &Error, void *) { … }
TEST(YAMLIO, TestGivenFilename) { … }
struct WithStringField { … };
namespace llvm {
namespace yaml {
template <> struct MappingTraits<WithStringField> { … };
}
}
TEST(YAMLIO, MultilineStrings) { … }
TEST(YAMLIO, NoQuotesForTab) { … }
struct BuiltInTypes { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<BuiltInTypes> { … };
}
}
TEST(YAMLIO, TestReadBuiltInTypes) { … }
TEST(YAMLIO, TestReadWriteBuiltInTypes) { … }
struct EndianTypes { … };
namespace llvm {
namespace yaml {
template <> struct MappingTraits<EndianTypes> { … };
}
}
TEST(YAMLIO, TestReadEndianTypes) { … }
TEST(YAMLIO, TestReadWriteEndianTypes) { … }
enum class Enum : uint16_t { … };
enum class BitsetEnum : uint16_t { … };
LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(…);
struct EndianEnums { … };
namespace llvm {
namespace yaml {
template <> struct ScalarEnumerationTraits<Enum> { … };
template <> struct ScalarBitSetTraits<BitsetEnum> { … };
template <> struct MappingTraits<EndianEnums> { … };
}
}
TEST(YAMLIO, TestReadEndianEnums) { … }
TEST(YAMLIO, TestReadWriteEndianEnums) { … }
struct StringTypes { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<StringTypes> { … };
}
}
TEST(YAMLIO, TestReadWriteStringTypes) { … }
enum Colors { … };
struct ColorMap { … };
namespace llvm {
namespace yaml {
template <>
struct ScalarEnumerationTraits<Colors> { … };
template <>
struct MappingTraits<ColorMap> { … };
}
}
TEST(YAMLIO, TestEnumRead) { … }
enum MyFlags { … };
inline MyFlags operator|(MyFlags a, MyFlags b) { … }
struct FlagsMap { … };
namespace llvm {
namespace yaml {
template <>
struct ScalarBitSetTraits<MyFlags> { … };
template <>
struct MappingTraits<FlagsMap> { … };
}
}
TEST(YAMLIO, TestFlagsRead) { … }
TEST(YAMLIO, TestReadWriteFlags) { … }
struct MyCustomType { … };
struct MyCustomTypeMap { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<MyCustomTypeMap> { … };
template<>
struct ScalarTraits<MyCustomType> { … };
}
}
TEST(YAMLIO, TestReadWriteMyCustomType) { … }
struct MultilineStringType { … };
struct MultilineStringTypeMap { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<MultilineStringTypeMap> { … };
template <>
struct BlockScalarTraits<MultilineStringType> { … };
}
}
LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(…)
TEST(YAMLIO, TestReadWriteMultilineStringType) { … }
TEST(YAMLIO, TestReadWriteBlockScalarDocuments) { … }
TEST(YAMLIO, TestReadWriteBlockScalarValue) { … }
LLVM_YAML_STRONG_TYPEDEF(int, MyNumber)
LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(MyNumber)
LLVM_YAML_STRONG_TYPEDEF(llvm::StringRef, MyString)
LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(MyString)
namespace llvm {
namespace yaml {
template<>
struct ScalarTraits<MyNumber> { … };
template <> struct ScalarTraits<MyString> { … };
}
}
struct NameAndNumbers { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<NameAndNumbers> { … };
}
}
MyNumberFlowSequence;
LLVM_YAML_IS_SEQUENCE_VECTOR(MyNumberFlowSequence)
struct NameAndNumbersFlow { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<NameAndNumbersFlow> { … };
}
}
TEST(YAMLIO, TestReadWriteMyFlowSequence) { … }
TEST(YAMLIO, TestReadWriteSequenceOfMyFlowSequence) { … }
LLVM_YAML_STRONG_TYPEDEF(…)
SecondsSequence;
LLVM_YAML_IS_SEQUENCE_VECTOR(TotalSeconds)
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<TotalSeconds> { … };
}
}
TEST(YAMLIO, TestReadMySecondsSequence) { … }
TEST(YAMLIO, TestReadWriteMySecondsSequence) { … }
enum AFlags { … };
enum BFlags { … };
enum Kind { … };
struct KindAndFlags { … };
KindAndFlagsSequence;
LLVM_YAML_IS_SEQUENCE_VECTOR(KindAndFlags)
namespace llvm {
namespace yaml {
template <>
struct ScalarEnumerationTraits<AFlags> { … };
template <>
struct ScalarEnumerationTraits<BFlags> { … };
template <>
struct ScalarEnumerationTraits<Kind> { … };
template <>
struct MappingTraits<KindAndFlags> { … };
}
}
TEST(YAMLIO, TestReadKindAndFlagsSequence) { … }
TEST(YAMLIO, TestReadWriteKindAndFlagsSequence) { … }
struct FooBarMap { … };
FooBarMapDocumentList;
LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(…)
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<FooBarMap> { … };
}
}
TEST(YAMLIO, TestDocRead) { … }
TEST(YAMLIO, TestSequenceDocListWriteAndRead) { … }
struct MyDouble { … };
LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(…)
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<MyDouble> { … };
}
}
TEST(YAMLIO, TestTaggedDocuments) { … }
TEST(YAMLIO, TestTaggedDocumentsWriteAndRead) { … }
struct MyValidation { … };
LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(…)
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<MyValidation> { … };
}
}
TEST(YAMLIO, TestValidatingInput) { … }
struct FlowFooBar { … };
FlowFooBarSequence;
LLVM_YAML_IS_SEQUENCE_VECTOR(FlowFooBar)
struct FlowFooBarDoc { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<FlowFooBar> { … };
template <>
struct MappingTraits<FlowFooBarDoc> { … };
}
}
TEST(YAMLIO, TestReadWriteMyFlowMapping) { … }
TEST(YAMLIO, TestColorsReadError) { … }
TEST(YAMLIO, TestFlagsReadError) { … }
TEST(YAMLIO, TestReadBuiltInTypesUint8Error) { … }
TEST(YAMLIO, TestReadBuiltInTypesUint16Error) { … }
TEST(YAMLIO, TestReadBuiltInTypesUint32Error) { … }
TEST(YAMLIO, TestReadBuiltInTypesUint64Error) { … }
TEST(YAMLIO, TestReadBuiltInTypesint8OverError) { … }
TEST(YAMLIO, TestReadBuiltInTypesint8UnderError) { … }
TEST(YAMLIO, TestReadBuiltInTypesint16UnderError) { … }
TEST(YAMLIO, TestReadBuiltInTypesint16OverError) { … }
TEST(YAMLIO, TestReadBuiltInTypesint32UnderError) { … }
TEST(YAMLIO, TestReadBuiltInTypesint32OverError) { … }
TEST(YAMLIO, TestReadBuiltInTypesint64UnderError) { … }
TEST(YAMLIO, TestReadBuiltInTypesint64OverError) { … }
TEST(YAMLIO, TestReadBuiltInTypesFloatError) { … }
TEST(YAMLIO, TestReadBuiltInTypesDoubleError) { … }
TEST(YAMLIO, TestReadBuiltInTypesHex8Error) { … }
TEST(YAMLIO, TestReadBuiltInTypesHex16Error) { … }
TEST(YAMLIO, TestReadBuiltInTypesHex32Error) { … }
TEST(YAMLIO, TestReadBuiltInTypesHex64Error) { … }
TEST(YAMLIO, TestMalformedMapFailsGracefully) { … }
struct OptionalTest { … };
struct OptionalTestSeq { … };
LLVM_YAML_IS_SEQUENCE_VECTOR(OptionalTest)
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<OptionalTest> { … };
template <>
struct MappingTraits<OptionalTestSeq> { … };
}
}
TEST(YAMLIO, SequenceElideTest) { … }
TEST(YAMLIO, TestEmptyStringFailsForMapWithRequiredFields) { … }
TEST(YAMLIO, TestEmptyStringSucceedsForMapWithOptionalFields) { … }
TEST(YAMLIO, TestEmptyStringSucceedsForSequence) { … }
struct FlowMap { … };
struct FlowSeq { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<FlowMap> { … };
template <>
struct ScalarTraits<FlowSeq> { … };
}
}
LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(FlowSeq)
TEST(YAMLIO, TestWrapFlow) { … }
struct MappingContext { … };
struct SimpleMap { … };
struct NestedMap { … };
namespace llvm {
namespace yaml {
template <> struct MappingContextTraits<SimpleMap, MappingContext> { … };
template <> struct MappingTraits<NestedMap> { … };
}
}
TEST(YAMLIO, TestMapWithContext) { … }
LLVM_YAML_IS_STRING_MAP(…)
TEST(YAMLIO, TestCustomMapping) { … }
LLVM_YAML_IS_STRING_MAP(…)
TEST(YAMLIO, TestCustomMappingStruct) { … }
struct FooBarMapMap { … };
namespace llvm {
namespace yaml {
template <> struct MappingTraits<FooBarMapMap> { … };
}
}
TEST(YAMLIO, TestEmptyMapWrite) { … }
TEST(YAMLIO, TestEmptySequenceWrite) { … }
static void TestEscaped(llvm::StringRef Input, llvm::StringRef Expected) { … }
TEST(YAMLIO, TestEscaped) { … }
TEST(YAMLIO, Numeric) { … }
struct QuotedKeyStruct { … };
namespace llvm {
namespace yaml {
template <> struct MappingTraits<QuotedKeyStruct> { … };
}
}
TEST(YAMLIO, TestQuotedKeyRead) { … }
TEST(YAMLIO, TestQuotedKeyWriteRead) { … }
struct Poly { … };
struct Scalar : Poly { … };
struct Seq : Poly, std::vector<std::unique_ptr<Poly>> { … };
struct Map : Poly, llvm::StringMap<std::unique_ptr<Poly>> { … };
namespace llvm {
namespace yaml {
template <> struct PolymorphicTraits<std::unique_ptr<Poly>> { … };
template <> struct TaggedScalarTraits<Scalar> { … };
template <> struct CustomMappingTraits<Map> { … };
template <> struct SequenceTraits<Seq> { … };
}
}
TEST(YAMLIO, TestReadWritePolymorphicScalar) { … }
TEST(YAMLIO, TestReadWritePolymorphicSeq) { … }
TEST(YAMLIO, TestReadWritePolymorphicMap) { … }
TEST(YAMLIO, TestAnchorMapError) { … }
TEST(YAMLIO, TestFlowSequenceTokenErrors) { … }
TEST(YAMLIO, TestDirectiveMappingNoValue) { … }
TEST(YAMLIO, TestUnescapeInfiniteLoop) { … }
TEST(YAMLIO, TestScannerUnexpectedCharacter) { … }
TEST(YAMLIO, TestUnknownDirective) { … }
TEST(YAMLIO, TestEmptyAlias) { … }
TEST(YAMLIO, TestEmptyAnchor) { … }
TEST(YAMLIO, TestScannerNoNullEmpty) { … }
TEST(YAMLIO, TestScannerNoNullSequenceOfNull) { … }
TEST(YAMLIO, TestScannerNoNullSimpleSequence) { … }
TEST(YAMLIO, TestScannerNoNullUnbalancedMap) { … }
TEST(YAMLIO, TestScannerNoNullEmptyMap) { … }
TEST(YAMLIO, TestScannerNoNullUnbalancedSequence) { … }
TEST(YAMLIO, TestScannerNoNullEmptySequence) { … }
TEST(YAMLIO, TestScannerNoNullScalarUnbalancedDoubleQuote) { … }
TEST(YAMLIO, TestScannerNoNullScalarUnbalancedSingleQuote) { … }
TEST(YAMLIO, TestScannerNoNullEmptyAlias) { … }
TEST(YAMLIO, TestScannerNoNullEmptyAnchor) { … }
TEST(YAMLIO, TestScannerNoNullDecodeInvalidUTF8) { … }
TEST(YAMLIO, TestScannerNoNullScanPlainScalarInFlow) { … }
struct FixedArray { … };
namespace llvm {
namespace yaml {
template <>
struct MappingTraits<FixedArray> { … };
}
}
TEST(YAMLIO, FixedSizeArray) { … }
TEST(YAMLIO, FixedSizeArrayMismatch) { … }