| /* |
| * Copyright (C) 2018 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #include "tools/ftrace_proto_gen/ftrace_proto_gen.h" |
| #include <gtest/gtest.h> |
| |
| namespace perfetto { |
| namespace { |
| |
| TEST(FtraceEventParserTest, InferProtoType) { |
| using Field = FtraceEvent::Field; |
| EXPECT_EQ(InferProtoType(Field{"char foo[16]", 0, 16, false}).ToString(), |
| "string"); |
| EXPECT_EQ(InferProtoType(Field{"char bar_42[64]", 0, 64, false}).ToString(), |
| "string"); |
| EXPECT_EQ( |
| InferProtoType(Field{"__data_loc char[] foo", 0, 4, false}).ToString(), |
| "string"); |
| EXPECT_EQ(InferProtoType(Field{"char[] foo", 0, 8, false}).ToString(), |
| "string"); |
| EXPECT_EQ(InferProtoType(Field{"char * foo", 0, 8, false}).ToString(), |
| "string"); |
| |
| EXPECT_EQ(InferProtoType(Field{"int foo", 0, 4, true}).ToString(), "int32"); |
| EXPECT_EQ(InferProtoType(Field{"s32 signal", 50, 4, true}).ToString(), |
| "int32"); |
| |
| EXPECT_EQ(InferProtoType(Field{"unsigned int foo", 0, 4, false}).ToString(), |
| "uint32"); |
| EXPECT_EQ(InferProtoType(Field{"u32 control_freq", 44, 4, false}).ToString(), |
| "uint32"); |
| |
| EXPECT_EQ(InferProtoType(Field{"ino_t foo", 0, 4, false}).ToString(), |
| "uint64"); |
| EXPECT_EQ(InferProtoType(Field{"ino_t foo", 0, 8, false}).ToString(), |
| "uint64"); |
| |
| EXPECT_EQ(InferProtoType(Field{"dev_t foo", 0, 4, false}).ToString(), |
| "uint64"); |
| EXPECT_EQ(InferProtoType(Field{"dev_t foo", 0, 8, false}).ToString(), |
| "uint64"); |
| |
| EXPECT_EQ(InferProtoType(Field{"char foo", 0, 0, false}).ToString(), |
| "string"); |
| } |
| |
| TEST(FtraceEventParserTest, GenerateProtoName) { |
| FtraceEvent input; |
| Proto output; |
| input.name = "the_snake_case_name"; |
| |
| GenerateProto(input, &output); |
| |
| EXPECT_EQ(output.name, "TheSnakeCaseNameFtraceEvent"); |
| } |
| |
| } // namespace |
| } // namespace perfetto |