Add more tests for derive_sdk am: b7545f9e07

Original change: https://android-review.googlesource.com/c/platform/packages/modules/SdkExtensions/+/1537284

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id8909dd1567c0641f952e1249bd6c5a3ebb1c04f
diff --git a/derive_sdk/derive_sdk_test.cpp b/derive_sdk/derive_sdk_test.cpp
index 5dbfdb7..72ff9ab 100644
--- a/derive_sdk/derive_sdk_test.cpp
+++ b/derive_sdk/derive_sdk_test.cpp
@@ -14,16 +14,42 @@
  * limitations under the License.
  */
 
+#define LOG_TAG "derive_sdk_test"
+
 #include "derive_sdk.h"
 
+#include <android-base/file.h>
+#include <android-base/logging.h>
 #include <android-base/properties.h>
 #include <gtest/gtest.h>
+#include <sys/stat.h>
 
 #include <cstdlib>
 
+#include "packages/modules/SdkExtensions/derive_sdk/sdk.pb.h"
+
+using com::android::sdkext::proto::SdkVersion;
+
 class DeriveSdkTest : public ::testing::Test {
  protected:
   void TearDown() override { android::derivesdk::SetSdkLevels("/apex"); }
+
+  std::string dir() { return std::string(dir_.path); }
+
+  void MakeSdkVersion(std::string apex, int version) {
+    SdkVersion sdk_version;
+    sdk_version.set_version(version);
+    std::string buf;
+    ASSERT_TRUE(sdk_version.SerializeToString(&buf));
+    std::string path = dir() + "/" + apex;
+    ASSERT_EQ(0, mkdir(path.c_str(), 0755));
+    path += "/etc";
+    ASSERT_EQ(0, mkdir(path.c_str(), 0755));
+    path += "/sdkinfo.binarypb";
+    ASSERT_TRUE(android::base::WriteStringToFile(buf, path, true));
+  }
+
+  TemporaryDir dir_;
 };
 
 int R() {
@@ -32,6 +58,23 @@
 
 TEST_F(DeriveSdkTest, CurrentSystemImageValue) { EXPECT_EQ(R(), 0); }
 
+TEST_F(DeriveSdkTest, OneApex) {
+  MakeSdkVersion("a", 3);
+
+  android::derivesdk::SetSdkLevels(dir());
+
+  EXPECT_EQ(R(), 3);
+}
+
+TEST_F(DeriveSdkTest, TwoApexes) {
+  MakeSdkVersion("a", 3);
+  MakeSdkVersion("b", 5);
+
+  android::derivesdk::SetSdkLevels(dir());
+
+  EXPECT_EQ(R(), 3);
+}
+
 int main(int argc, char **argv) {
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();