| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <regex> |
| |
| #include <fidl/flat_ast.h> |
| #include <zxtest/zxtest.h> |
| |
| namespace { |
| |
| using fidl::flat::HandleType; |
| using fidl::flat::Name; |
| using fidl::types::HandleSubtype; |
| using fidl::types::Nullability; |
| |
| TEST(FlatAstTests, implicit_assumptions) { |
| // Preconditions to unit test cases: if these change, we need to rewrite the tests themselves. |
| EXPECT_TRUE(HandleSubtype::kChannel < HandleSubtype::kEvent); |
| EXPECT_TRUE(Nullability::kNullable < Nullability::kNonnullable); |
| } |
| |
| TEST(FlatAstTests, compare_handles) { |
| auto name_not_important = Name::CreateIntrinsic("ignore"); |
| HandleType nonnullable_channel(name_not_important, HandleSubtype::kChannel, nullptr, |
| Nullability::kNonnullable); |
| HandleType nullable_channel(name_not_important, HandleSubtype::kChannel, nullptr, |
| Nullability::kNullable); |
| HandleType nonnullable_event(name_not_important, HandleSubtype::kEvent, nullptr, |
| Nullability::kNonnullable); |
| HandleType nullable_event(name_not_important, HandleSubtype::kEvent, nullptr, |
| Nullability::kNullable); |
| |
| // Comparison is nullability, then type. |
| EXPECT_TRUE(nullable_channel < nonnullable_channel); |
| EXPECT_TRUE(nullable_event < nonnullable_event); |
| EXPECT_TRUE(nonnullable_channel < nonnullable_event); |
| EXPECT_TRUE(nullable_channel < nullable_event); |
| } |
| |
| } // namespace |