| /* |
| * Copyright 2020 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. |
| */ |
| |
| #define LOG_TAG "IoModuleTests" |
| |
| #include "CarModelConfigReader.h" |
| |
| #include "MathHelp.h" |
| #include "core_lib.h" |
| |
| #include <gtest/gtest.h> |
| #include <string> |
| |
| namespace android { |
| namespace hardware { |
| namespace automotive { |
| namespace sv { |
| namespace V1_0 { |
| namespace implementation { |
| namespace { |
| |
| TEST(CarModelConfigReaderTests, CarModelReadConfigSuccess) { |
| AnimationConfig animationConfig; |
| EXPECT_EQ(ReadCarModelConfig("/vendor/automotive/sv/sv_sample_car_model_config.xml", |
| &animationConfig), |
| IOStatus::OK); |
| |
| EXPECT_EQ(animationConfig.version, "1.0"); |
| |
| ASSERT_EQ(animationConfig.animations.size(), 2); |
| |
| { |
| AnimationInfo doorAnimation = animationConfig.animations.at(0); |
| EXPECT_EQ(doorAnimation.partId, "door"); |
| EXPECT_EQ(doorAnimation.childIds.size(), 2); |
| EXPECT_EQ(doorAnimation.pose, gMat4Identity); |
| |
| EXPECT_EQ(doorAnimation.rotationOpsMap.size(), 1); |
| { |
| RotationOp rotationOp = (doorAnimation.rotationOpsMap.at(0x16000B0000000001)).at(0); |
| EXPECT_EQ(rotationOp.vhalProperty, 0x16000B0000000001); |
| EXPECT_EQ(rotationOp.type, AnimationType::ROTATION_ANGLE); |
| EXPECT_EQ(rotationOp.animationTime, 2000); |
| std::array<float, 3> axis = {0, 0, 1}; |
| EXPECT_EQ(rotationOp.axis.axisVector, axis); |
| std::array<float, 3> point = {0, 0, 0}; |
| EXPECT_EQ(rotationOp.axis.rotationPoint, point); |
| EXPECT_EQ(rotationOp.rotationRange.start, 0.0); |
| EXPECT_EQ(rotationOp.rotationRange.end, 90.0); |
| EXPECT_EQ(rotationOp.vhalRange.start, 0); |
| EXPECT_EQ(rotationOp.vhalRange.end, 0x7FFFFFFF); |
| } |
| } |
| |
| { |
| AnimationInfo windowAnimation = animationConfig.animations.at(1); |
| EXPECT_EQ(windowAnimation.partId, "window"); |
| EXPECT_EQ(windowAnimation.childIds.size(), 0); |
| EXPECT_EQ(windowAnimation.pose, gMat4Identity); |
| |
| EXPECT_EQ(windowAnimation.translationOpsMap.size(), 1); |
| { |
| TranslationOp translationOp = |
| (windowAnimation.translationOpsMap.at(0x13000BC000000010)).at(0); |
| EXPECT_EQ(translationOp.vhalProperty, 0x13000BC000000010); |
| EXPECT_EQ(translationOp.type, AnimationType::TRANSLATION); |
| EXPECT_EQ(translationOp.animationTime, 2000); |
| std::array<float, 3> dir = {0.0, 0.0, -1.0}; |
| EXPECT_EQ(translationOp.direction, dir); |
| EXPECT_EQ(translationOp.defaultTranslationValue, 0.0); |
| EXPECT_EQ(translationOp.translationRange.start, 0.0); |
| EXPECT_EQ(translationOp.translationRange.end, 1.0); |
| EXPECT_EQ(translationOp.vhalRange.start, 0); |
| EXPECT_EQ(translationOp.vhalRange.end, 0x7FFFFFFF); |
| } |
| } |
| } |
| |
| } // namespace |
| } // namespace implementation |
| } // namespace V1_0 |
| } // namespace sv |
| } // namespace automotive |
| } // namespace hardware |
| } // namespace android |