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 Riddle TEST(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