1c42dd5dbSRiver Riddle //===- SubElementInterfaceTest.cpp - SubElementInterface unit tests -------===// 2c42dd5dbSRiver Riddle // 3c42dd5dbSRiver Riddle // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4c42dd5dbSRiver Riddle // See https://llvm.org/LICENSE.txt for license information. 5c42dd5dbSRiver Riddle // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6c42dd5dbSRiver Riddle // 7c42dd5dbSRiver Riddle //===----------------------------------------------------------------------===// 8c42dd5dbSRiver Riddle 9c42dd5dbSRiver Riddle #include "mlir/IR/Builders.h" 10c42dd5dbSRiver Riddle #include "mlir/IR/BuiltinAttributes.h" 11c42dd5dbSRiver Riddle #include "mlir/IR/SubElementInterfaces.h" 12c42dd5dbSRiver Riddle #include "gtest/gtest.h" 13c42dd5dbSRiver Riddle #include <cstdint> 14c42dd5dbSRiver Riddle 15c42dd5dbSRiver Riddle using namespace mlir; 16c42dd5dbSRiver Riddle using namespace mlir::detail; 17c42dd5dbSRiver Riddle 18c42dd5dbSRiver Riddle namespace { TEST(SubElementInterfaceTest,Nested)19c42dd5dbSRiver RiddleTEST(SubElementInterfaceTest, Nested) { 20c42dd5dbSRiver Riddle MLIRContext context; 21c42dd5dbSRiver Riddle Builder builder(&context); 22c42dd5dbSRiver Riddle 23c42dd5dbSRiver Riddle BoolAttr trueAttr = builder.getBoolAttr(true); 24c42dd5dbSRiver Riddle BoolAttr falseAttr = builder.getBoolAttr(false); 25c42dd5dbSRiver Riddle ArrayAttr boolArrayAttr = builder.getArrayAttr({trueAttr, falseAttr}); 26c42dd5dbSRiver Riddle DictionaryAttr dictAttr = 27c42dd5dbSRiver Riddle builder.getDictionaryAttr(builder.getNamedAttr("array", boolArrayAttr)); 28c42dd5dbSRiver Riddle 29c42dd5dbSRiver Riddle SmallVector<Attribute> subAttrs; 30c42dd5dbSRiver Riddle dictAttr.walkSubAttrs([&](Attribute attr) { subAttrs.push_back(attr); }); 31c42dd5dbSRiver Riddle EXPECT_EQ(llvm::makeArrayRef(subAttrs), 32c42dd5dbSRiver Riddle ArrayRef<Attribute>({trueAttr, falseAttr, boolArrayAttr})); 33c42dd5dbSRiver Riddle } 34c42dd5dbSRiver Riddle 35*be0a7e9fSMehdi Amini } // namespace 36