summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/main.cpp')
-rw-r--r--test/main.cpp155
1 files changed, 127 insertions, 28 deletions
diff --git a/test/main.cpp b/test/main.cpp
index 507e0d1..8ec02a8 100644
--- a/test/main.cpp
+++ b/test/main.cpp
@@ -398,25 +398,25 @@ TEST_F(LibVintfTest, HalManifestGetTransport) {
398 398
399TEST_F(LibVintfTest, HalManifestInstances) { 399TEST_F(LibVintfTest, HalManifestInstances) {
400 HalManifest vm = testDeviceManifest(); 400 HalManifest vm = testDeviceManifest();
401 EXPECT_EQ(vm.getInstances("android.hardware.camera", "ICamera"), 401 EXPECT_EQ(vm.getInstances("android.hardware.camera", {2, 0}, "ICamera"),
402 std::set<std::string>({"default", "legacy/0"})); 402 std::set<std::string>({"default", "legacy/0"}));
403 EXPECT_EQ(vm.getInstances("android.hardware.camera", "IBetterCamera"), 403 EXPECT_EQ(vm.getInstances("android.hardware.camera", {2, 0}, "IBetterCamera"),
404 std::set<std::string>({"camera"})); 404 std::set<std::string>({"camera"}));
405 EXPECT_EQ(vm.getInstances("android.hardware.camera", "INotExist"), 405 EXPECT_EQ(vm.getInstances("android.hardware.camera", {2, 0}, "INotExist"),
406 std::set<std::string>({})); 406 std::set<std::string>({}));
407 EXPECT_EQ(vm.getInstances("android.hardware.nfc", "INfc"), 407 EXPECT_EQ(vm.getInstances("android.hardware.nfc", {1, 0}, "INfc"),
408 std::set<std::string>({"default"})); 408 std::set<std::string>({"default"}));
409 409
410 EXPECT_TRUE(vm.hasInstance("android.hardware.camera", "ICamera", "default")); 410 EXPECT_TRUE(vm.hasInstance("android.hardware.camera", {2, 0}, "ICamera", "default"));
411 EXPECT_TRUE(vm.hasInstance("android.hardware.camera", "ICamera", "legacy/0")); 411 EXPECT_TRUE(vm.hasInstance("android.hardware.camera", {2, 0}, "ICamera", "legacy/0"));
412 EXPECT_TRUE(vm.hasInstance("android.hardware.camera", "IBetterCamera", "camera")); 412 EXPECT_TRUE(vm.hasInstance("android.hardware.camera", {2, 0}, "IBetterCamera", "camera"));
413 EXPECT_TRUE(vm.hasInstance("android.hardware.nfc", "INfc", "default")); 413 EXPECT_TRUE(vm.hasInstance("android.hardware.nfc", {1, 0}, "INfc", "default"));
414 414
415 EXPECT_FALSE(vm.hasInstance("android.hardware.camera", "INotExist", "default")); 415 EXPECT_FALSE(vm.hasInstance("android.hardware.camera", {2, 0}, "INotExist", "default"));
416 EXPECT_FALSE(vm.hasInstance("android.hardware.camera", "ICamera", "notexist")); 416 EXPECT_FALSE(vm.hasInstance("android.hardware.camera", {2, 0}, "ICamera", "notexist"));
417 EXPECT_FALSE(vm.hasInstance("android.hardware.camera", "IBetterCamera", "default")); 417 EXPECT_FALSE(vm.hasInstance("android.hardware.camera", {2, 0}, "IBetterCamera", "default"));
418 EXPECT_FALSE(vm.hasInstance("android.hardware.camera", "INotExist", "notexist")); 418 EXPECT_FALSE(vm.hasInstance("android.hardware.camera", {2, 0}, "INotExist", "notexist"));
419 EXPECT_FALSE(vm.hasInstance("android.hardware.nfc", "INfc", "notexist")); 419 EXPECT_FALSE(vm.hasInstance("android.hardware.nfc", {1, 0}, "INfc", "notexist"));
420} 420}
421 421
422TEST_F(LibVintfTest, VersionConverter) { 422TEST_F(LibVintfTest, VersionConverter) {
@@ -663,15 +663,7 @@ TEST_F(LibVintfTest, HalManifestGetHalNames) {
663 {"android.hardware.camera", "android.hardware.nfc"})); 663 {"android.hardware.camera", "android.hardware.nfc"}));
664} 664}
665 665
666TEST_F(LibVintfTest, HalManifestGetInterfaceNames) { 666TEST_F(LibVintfTest, HalManifestGetAllHals) {
667 HalManifest vm = testDeviceManifest();
668 EXPECT_EQ(vm.getInterfaceNames("android.hardware.camera"),
669 std::set<std::string>({"ICamera", "IBetterCamera"}));
670 EXPECT_EQ(vm.getInterfaceNames("android.hardware.nfc"),
671 std::set<std::string>({"INfc"}));
672}
673
674TEST_F(LibVintfTest, HalManifestGetHal) {
675 HalManifest vm = testDeviceManifest(); 667 HalManifest vm = testDeviceManifest();
676 EXPECT_NE(getAnyHal(vm, "android.hardware.camera"), nullptr); 668 EXPECT_NE(getAnyHal(vm, "android.hardware.camera"), nullptr);
677 EXPECT_EQ(getAnyHal(vm, "non-existent"), nullptr); 669 EXPECT_EQ(getAnyHal(vm, "non-existent"), nullptr);
@@ -683,6 +675,113 @@ TEST_F(LibVintfTest, HalManifestGetHal) {
683 } 675 }
684} 676}
685 677
678TEST_F(LibVintfTest, HalManifestGetHals) {
679 HalManifest vm;
680 EXPECT_TRUE(
681 add(vm, ManifestHal{.format = HalFormat::HIDL,
682 .name = "android.hardware.camera",
683 .versions = {Version(1, 2)},
684 .transportArch = {Transport::HWBINDER, Arch::ARCH_EMPTY},
685 .interfaces = {{"ICamera", {"ICamera", {"legacy/0", "default"}}},
686 {"IBetterCamera", {"IBetterCamera", {"camera"}}}}}));
687 EXPECT_TRUE(
688 add(vm, ManifestHal{.format = HalFormat::HIDL,
689 .name = "android.hardware.camera",
690 .versions = {Version(2, 0)},
691 .transportArch = {Transport::HWBINDER, Arch::ARCH_EMPTY},
692 .interfaces = {{"ICamera", {"ICamera", {"legacy/0", "default"}}},
693 {"IBetterCamera", {"IBetterCamera", {"camera"}}}}}));
694 EXPECT_TRUE(add(vm, ManifestHal{.format = HalFormat::HIDL,
695 .name = "android.hardware.nfc",
696 .versions = {Version(1, 0), Version(2, 1)},
697 .transportArch = {Transport::PASSTHROUGH, Arch::ARCH_32_64},
698 .interfaces = {{"INfc", {"INfc", {"default"}}}}}));
699 ManifestHal expectedCameraHalV1_2 =
700 ManifestHal{.format = HalFormat::HIDL,
701 .name = "android.hardware.camera",
702 .versions = {Version(1, 2)},
703 .transportArch = {Transport::HWBINDER, Arch::ARCH_EMPTY},
704 .interfaces = {{"ICamera", {"ICamera", {"legacy/0", "default"}}},
705 {"IBetterCamera", {"IBetterCamera", {"camera"}}}}};
706 ManifestHal expectedCameraHalV2_0 =
707 ManifestHal{.format = HalFormat::HIDL,
708 .name = "android.hardware.camera",
709 .versions = {Version(2, 0)},
710 .transportArch = {Transport::HWBINDER, Arch::ARCH_EMPTY},
711 .interfaces = {{"ICamera", {"ICamera", {"legacy/0", "default"}}},
712 {"IBetterCamera", {"IBetterCamera", {"camera"}}}}};
713 ManifestHal expectedNfcHal =
714 ManifestHal{.format = HalFormat::HIDL,
715 .name = "android.hardware.nfc",
716 .versions = {Version(1, 0), Version(2, 1)},
717 .transportArch = {Transport::PASSTHROUGH, Arch::ARCH_32_64},
718 .interfaces = {{"INfc", {"INfc", {"default"}}}}};
719 auto cameraHals = vm.getHals("android.hardware.camera");
720 EXPECT_EQ((int)cameraHals.size(), 2);
721 EXPECT_EQ(*cameraHals[0], expectedCameraHalV1_2);
722 EXPECT_EQ(*cameraHals[1], expectedCameraHalV2_0);
723 auto nfcHals = vm.getHals("android.hardware.nfc");
724 EXPECT_EQ((int)nfcHals.size(), 1);
725 EXPECT_EQ(*nfcHals[0], expectedNfcHal);
726
727 EXPECT_EQ(*vm.getHal("android.hardware.camera", {1, 1}), expectedCameraHalV1_2);
728 EXPECT_EQ(*vm.getHal("android.hardware.camera", {2, 0}), expectedCameraHalV2_0);
729 EXPECT_EQ(*vm.getHal("android.hardware.nfc", {1, 0}), expectedNfcHal);
730 EXPECT_EQ(*vm.getHal("android.hardware.nfc", {2, 0}), expectedNfcHal);
731 EXPECT_EQ(*vm.getHal("android.hardware.nfc", {2, 1}), expectedNfcHal);
732
733 EXPECT_EQ(vm.getHal("non-existent", {1, 0}), nullptr);
734 EXPECT_EQ(vm.getHal("android.hardware.camera", {2, 1}), nullptr);
735 EXPECT_EQ(vm.getHal("android.hardware.camera", {1, 3}), nullptr);
736 EXPECT_EQ(vm.getHal("android.hardware.nfc", {1, 1}), nullptr);
737 EXPECT_EQ(vm.getHal("android.hardware.nfc", {3, 0}), nullptr);
738}
739
740TEST_F(LibVintfTest, CompatibilityMatrixGetHals) {
741 CompatibilityMatrix cm;
742 EXPECT_TRUE(add(cm, MatrixHal{HalFormat::NATIVE,
743 "android.hardware.camera",
744 {{VersionRange(1, 2, 3), VersionRange(4, 5, 6)}},
745 false /* optional */,
746 testHalInterfaces()}));
747 EXPECT_TRUE(add(cm, MatrixHal{HalFormat::NATIVE,
748 "android.hardware.nfc",
749 {{VersionRange(4, 5, 6), VersionRange(10, 11, 12)}},
750 true /* optional */,
751 testHalInterfaces()}));
752
753 MatrixHal expectedCameraHal = MatrixHal{
754 HalFormat::NATIVE,
755 "android.hardware.camera",
756 {{VersionRange(1, 2, 3), VersionRange(4, 5, 6)}},
757 false /* optional */,
758 testHalInterfaces(),
759 };
760 MatrixHal expectedNfcHal = MatrixHal{HalFormat::NATIVE,
761 "android.hardware.nfc",
762 {{VersionRange(4, 5, 6), VersionRange(10, 11, 12)}},
763 true /* optional */,
764 testHalInterfaces()};
765 auto cameraHals = cm.getHals("android.hardware.camera");
766 EXPECT_EQ((int)cameraHals.size(), 1);
767 EXPECT_EQ(*cameraHals[0], expectedCameraHal);
768 auto nfcHals = cm.getHals("android.hardware.nfc");
769 EXPECT_EQ((int)nfcHals.size(), 1);
770 EXPECT_EQ(*nfcHals[0], expectedNfcHal);
771
772 EXPECT_EQ(*cm.getHal("android.hardware.camera", {1, 2}), expectedCameraHal);
773 EXPECT_EQ(*cm.getHal("android.hardware.camera", {1, 3}), expectedCameraHal);
774 EXPECT_EQ(*cm.getHal("android.hardware.camera", {4, 5}), expectedCameraHal);
775 EXPECT_EQ(*cm.getHal("android.hardware.nfc", {4, 5}), expectedNfcHal);
776 EXPECT_EQ(*cm.getHal("android.hardware.nfc", {10, 12}), expectedNfcHal);
777
778 EXPECT_EQ(cm.getHal("non-existent", {1, 0}), nullptr);
779 EXPECT_EQ(cm.getHal("android.hardware.camera", {2, 1}), nullptr);
780 EXPECT_EQ(cm.getHal("android.hardware.camera", {1, 0}), nullptr);
781 EXPECT_EQ(cm.getHal("android.hardware.nfc", {3, 0}), nullptr);
782 EXPECT_EQ(cm.getHal("android.hardware.nfc", {4, 7}), nullptr);
783}
784
686TEST_F(LibVintfTest, RuntimeInfo) { 785TEST_F(LibVintfTest, RuntimeInfo) {
687 RuntimeInfo ki = testRuntimeInfo(); 786 RuntimeInfo ki = testRuntimeInfo();
688 using KernelConfigs = std::vector<KernelConfig>; 787 using KernelConfigs = std::vector<KernelConfig>;