1 // Copyright 2018 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Copyright 2018 The Fuchsia Authors. All rights reserved.
6 // Use of this source code is governed by a BSD-style license that can be
7 // found in the LICENSE file.
8 
9 #include <regex>
10 #include <unittest/unittest.h>
11 
12 #include <fidl/flat_ast.h>
13 
14 namespace {
15 
16 using fidl::flat::HandleType;
17 using fidl::types::HandleSubtype;
18 using fidl::types::Nullability;
19 
implicit_assumptions()20 static bool implicit_assumptions() {
21     // Preconditions to unit test cases: if these change, we need to rewrite the tests themselves.
22     EXPECT_TRUE(HandleSubtype::kChannel < HandleSubtype::kEvent);
23     EXPECT_TRUE(Nullability::kNullable < Nullability::kNonnullable);
24 
25     return true;
26 }
27 
compare_handles()28 static bool compare_handles() {
29     HandleType nonnullable_channel(HandleSubtype::kChannel, Nullability::kNonnullable);
30     HandleType nullable_channel(HandleSubtype::kChannel, Nullability::kNullable);
31     HandleType nonnullable_event(HandleSubtype::kEvent, Nullability::kNonnullable);
32     HandleType nullable_event(HandleSubtype::kEvent, Nullability::kNullable);
33 
34     // Comparison is nullability, then type.
35     EXPECT_TRUE(nullable_channel < nonnullable_channel);
36     EXPECT_TRUE(nullable_event < nonnullable_event);
37     EXPECT_TRUE(nonnullable_channel < nonnullable_event);
38     EXPECT_TRUE(nullable_channel < nullable_event);
39 
40     return true;
41 }
42 
43 } // namespace
44 
45 BEGIN_TEST_CASE(flat_ast_tests);
46 RUN_TEST(implicit_assumptions);
47 RUN_TEST(compare_handles);
48 END_TEST_CASE(flat_ast_tests);
49