ExtractorUnitTest: add validation for seekability feature

Test: atest ExtractorUnitTest -- --enable-module-dynamic-download=true

Bug: 156854380

Change-Id: I8a46c5d980b7df8d3f7f661b66fe2b571c72e7b9
diff --git a/media/extractors/tests/ExtractorUnitTest.cpp b/media/extractors/tests/ExtractorUnitTest.cpp
index 1323595..13d4cf6 100644
--- a/media/extractors/tests/ExtractorUnitTest.cpp
+++ b/media/extractors/tests/ExtractorUnitTest.cpp
@@ -179,11 +179,11 @@
 
 class ExtractorFunctionalityTest
     : public ExtractorUnitTest,
-      public ::testing::TestWithParam<
-              tuple<string /* container */, string /* InputFile */, int32_t /* numTracks */>> {
+      public ::testing::TestWithParam<tuple<string /* container */, string /* InputFile */,
+                                            int32_t /* numTracks */, bool /* seekSupported */>> {
   public:
     virtual void SetUp() override {
-        tuple<string, string, int32_t> params = GetParam();
+        tuple<string, string, int32_t, bool> params = GetParam();
         mContainer = get<0>(params);
         mNumTracks = get<2>(params);
         setupExtractor(mContainer);
@@ -567,7 +567,10 @@
             << "Extractor reported wrong number of track for the given clip";
 
     uint32_t seekFlag = mExtractor->flags();
-    if (!(seekFlag & MediaExtractorPluginHelper::CAN_SEEK)) {
+    bool seekSupported = get<3>(GetParam());
+    bool seekable = seekFlag & MediaExtractorPluginHelper::CAN_SEEK;
+    if (!seekable) {
+        ASSERT_FALSE(seekSupported) << mContainer << "Extractor is expected to support seek ";
         cout << "[   WARN   ] Test Skipped. " << mContainer << " Extractor doesn't support seek\n";
         return;
     }
@@ -732,9 +735,11 @@
     ASSERT_EQ(numTracks, mNumTracks)
             << "Extractor reported wrong number of track for the given clip";
 
-    // TODO(b/156854380): add seekability validation
     uint32_t seekFlag = mExtractor->flags();
-    if (!(seekFlag & MediaExtractorPluginHelper::CAN_SEEK)) {
+    bool seekSupported = get<3>(GetParam());
+    bool seekable = seekFlag & MediaExtractorPluginHelper::CAN_SEEK;
+    if (!seekable) {
+        ASSERT_FALSE(seekSupported) << mContainer << "Extractor is expected to support seek ";
         cout << "[   WARN   ] Test Skipped. " << mContainer << " Extractor doesn't support seek\n";
         return;
     }
@@ -1095,38 +1100,39 @@
                                            make_pair("mkv", MPEG4_1),
                                            make_pair("mkv", VP9_1)));
 
+// Validate extractors for container format, input file and supports seek flag
 INSTANTIATE_TEST_SUITE_P(
         ExtractorUnitTestAll, ExtractorFunctionalityTest,
         ::testing::Values(
-                make_tuple("aac", "loudsoftaac.aac", 1),
-                make_tuple("amr", "testamr.amr", 1),
-                make_tuple("amr", "amrwb.wav", 1),
-                make_tuple("flac", "sinesweepflac.flac", 1),
-                make_tuple("midi", "midi_a.mid", 1),
-                make_tuple("mkv", "sinesweepvorbis.mkv", 1),
-                make_tuple("mkv", "sinesweepmp3lame.mkv", 1),
-                make_tuple("mkv", "loudsoftaac.mkv", 1),
-                make_tuple("mp3", "sinesweepmp3lame.mp3", 1),
-                make_tuple("mp3", "id3test10.mp3", 1),
-                make_tuple("mpeg2ts", "segment000001.ts", 2),
-                make_tuple("mpeg2ts", "testac3ts.ts", 1),
-                make_tuple("mpeg2ts", "testac4ts.ts", 1),
-                make_tuple("mpeg2ts", "testeac3ts.ts", 1),
-                make_tuple("mpeg4", "sinesweepoggmp4.mp4", 1),
-                make_tuple("mpeg4", "testac3mp4.mp4", 1),
-                make_tuple("mpeg4", "testeac3mp4.mp4", 1),
-                make_tuple("ogg", "john_cage.ogg", 1),
-                make_tuple("ogg", "testopus.opus", 1),
-                make_tuple("ogg", "sinesweepoggalbumart.ogg", 1),
-                make_tuple("wav", "monotestgsm.wav", 1),
+                make_tuple("aac", "loudsoftaac.aac", 1, true),
+                make_tuple("amr", "testamr.amr", 1, true),
+                make_tuple("amr", "amrwb.wav", 1, true),
+                make_tuple("flac", "sinesweepflac.flac", 1, true),
+                make_tuple("midi", "midi_a.mid", 1, true),
+                make_tuple("mkv", "sinesweepvorbis.mkv", 1, true),
+                make_tuple("mkv", "sinesweepmp3lame.mkv", 1, true),
+                make_tuple("mkv", "loudsoftaac.mkv", 1, true),
+                make_tuple("mp3", "sinesweepmp3lame.mp3", 1, true),
+                make_tuple("mp3", "id3test10.mp3", 1, true),
+                make_tuple("mpeg2ts", "segment000001.ts", 2, false),
+                make_tuple("mpeg2ts", "testac3ts.ts", 1, false),
+                make_tuple("mpeg2ts", "testac4ts.ts", 1, false),
+                make_tuple("mpeg2ts", "testeac3ts.ts", 1, false),
+                make_tuple("mpeg4", "sinesweepoggmp4.mp4", 1, true),
+                make_tuple("mpeg4", "testac3mp4.mp4", 1, true),
+                make_tuple("mpeg4", "testeac3mp4.mp4", 1, true),
+                make_tuple("ogg", "john_cage.ogg", 1, true),
+                make_tuple("ogg", "testopus.opus", 1, true),
+                make_tuple("ogg", "sinesweepoggalbumart.ogg", 1, true),
+                make_tuple("wav", "monotestgsm.wav", 1, true),
 
-                make_tuple("mkv", "swirl_144x136_avc.mkv", 1),
-                make_tuple("mkv", "withoutcues.mkv", 2),
-                make_tuple("mkv", "swirl_144x136_vp9.webm", 1),
-                make_tuple("mkv", "swirl_144x136_vp8.webm", 1),
-                make_tuple("mpeg2ps", "swirl_144x136_mpeg2.mpg", 1),
-                make_tuple("mpeg2ps", "programstream.mpeg", 2),
-                make_tuple("mpeg4", "swirl_132x130_mpeg4.mp4", 1)));
+                make_tuple("mkv", "swirl_144x136_avc.mkv", 1, true),
+                make_tuple("mkv", "withoutcues.mkv", 2, true),
+                make_tuple("mkv", "swirl_144x136_vp9.webm", 1, true),
+                make_tuple("mkv", "swirl_144x136_vp8.webm", 1, true),
+                make_tuple("mpeg2ps", "swirl_144x136_mpeg2.mpg", 1, false),
+                make_tuple("mpeg2ps", "programstream.mpeg", 2, false),
+                make_tuple("mpeg4", "swirl_132x130_mpeg4.mp4", 1, true)));
 
 int main(int argc, char **argv) {
     gEnv = new ExtractorUnitTestEnvironment();