| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/base/filters.h" | 5 #include "media/base/filters.h" |
| 6 #include "media/base/mock_media_filters.h" | 6 #include "media/base/mock_media_filters.h" |
| 7 #include "media/filters/ffmpeg_common.h" | 7 #include "media/filters/ffmpeg_common.h" |
| 8 #include "media/filters/ffmpeg_glue.h" | 8 #include "media/filters/ffmpeg_glue.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 EXPECT_TRUE(g_protocol->url_write); | 48 EXPECT_TRUE(g_protocol->url_write); |
| 49 } | 49 } |
| 50 | 50 |
| 51 TEST(FFmpegGlueTest, AddRemoveGetDataSource) { | 51 TEST(FFmpegGlueTest, AddRemoveGetDataSource) { |
| 52 // Prepare testing data. | 52 // Prepare testing data. |
| 53 media::FFmpegGlue* glue = media::FFmpegGlue::get(); | 53 media::FFmpegGlue* glue = media::FFmpegGlue::get(); |
| 54 | 54 |
| 55 // Create our data sources and add them to the glue layer. | 55 // Create our data sources and add them to the glue layer. |
| 56 bool deleted_a = false; | 56 bool deleted_a = false; |
| 57 bool deleted_b = false; | 57 bool deleted_b = false; |
| 58 media::MockFilterConfig config_a; | 58 media::old_mocks::MockFilterConfig config_a; |
| 59 media::MockFilterConfig config_b; | 59 media::old_mocks::MockFilterConfig config_b; |
| 60 scoped_refptr<media::MockDataSource> data_source_a | 60 scoped_refptr<media::old_mocks::MockDataSource> data_source_a |
| 61 = new media::MockDataSource(&config_a, &deleted_a); | 61 = new media::old_mocks::MockDataSource(&config_a, &deleted_a); |
| 62 scoped_refptr<media::MockDataSource> data_source_b | 62 scoped_refptr<media::old_mocks::MockDataSource> data_source_b |
| 63 = new media::MockDataSource(&config_b, &deleted_b); | 63 = new media::old_mocks::MockDataSource(&config_b, &deleted_b); |
| 64 | 64 |
| 65 // Make sure the keys are unique. | 65 // Make sure the keys are unique. |
| 66 std::string key_a = glue->AddDataSource(data_source_a); | 66 std::string key_a = glue->AddDataSource(data_source_a); |
| 67 std::string key_b = glue->AddDataSource(data_source_b); | 67 std::string key_b = glue->AddDataSource(data_source_b); |
| 68 EXPECT_EQ(0, key_a.find("http://")); | 68 EXPECT_EQ(0u, key_a.find("http://")); |
| 69 EXPECT_EQ(0, key_b.find("http://")); | 69 EXPECT_EQ(0u, key_b.find("http://")); |
| 70 EXPECT_NE(key_a, key_b); | 70 EXPECT_NE(key_a, key_b); |
| 71 | 71 |
| 72 // Our keys should return our data sources. | 72 // Our keys should return our data sources. |
| 73 scoped_refptr<media::DataSource> data_source_c; | 73 scoped_refptr<media::DataSource> data_source_c; |
| 74 scoped_refptr<media::DataSource> data_source_d; | 74 scoped_refptr<media::DataSource> data_source_d; |
| 75 glue->GetDataSource(key_a, &data_source_c); | 75 glue->GetDataSource(key_a, &data_source_c); |
| 76 glue->GetDataSource(key_b, &data_source_d); | 76 glue->GetDataSource(key_b, &data_source_d); |
| 77 EXPECT_EQ(data_source_a, data_source_c); | 77 EXPECT_EQ(data_source_a, data_source_c); |
| 78 EXPECT_EQ(data_source_b, data_source_d); | 78 EXPECT_EQ(data_source_b, data_source_d); |
| 79 | 79 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 101 EXPECT_TRUE(deleted_a); | 101 EXPECT_TRUE(deleted_a); |
| 102 EXPECT_TRUE(deleted_b); | 102 EXPECT_TRUE(deleted_b); |
| 103 } | 103 } |
| 104 | 104 |
| 105 TEST(FFmpegGlueTest, OpenClose) { | 105 TEST(FFmpegGlueTest, OpenClose) { |
| 106 // Prepare testing data. | 106 // Prepare testing data. |
| 107 media::FFmpegGlue* glue = media::FFmpegGlue::get(); | 107 media::FFmpegGlue* glue = media::FFmpegGlue::get(); |
| 108 | 108 |
| 109 // Create our data source and add them to the glue layer. | 109 // Create our data source and add them to the glue layer. |
| 110 bool deleted = false; | 110 bool deleted = false; |
| 111 media::MockFilterConfig config; | 111 media::old_mocks::MockFilterConfig config; |
| 112 scoped_refptr<media::MockDataSource> data_source | 112 scoped_refptr<media::old_mocks::MockDataSource> data_source |
| 113 = new media::MockDataSource(&config, &deleted); | 113 = new media::old_mocks::MockDataSource(&config, &deleted); |
| 114 std::string key = glue->AddDataSource(data_source); | 114 std::string key = glue->AddDataSource(data_source); |
| 115 | 115 |
| 116 // Prepare FFmpeg URLContext structure. | 116 // Prepare FFmpeg URLContext structure. |
| 117 URLContext context; | 117 URLContext context; |
| 118 memset(&context, 0, sizeof(context)); | 118 memset(&context, 0, sizeof(context)); |
| 119 | 119 |
| 120 // Test opening a URLContext with a data source that doesn't exist. | 120 // Test opening a URLContext with a data source that doesn't exist. |
| 121 EXPECT_EQ(AVERROR_IO, g_protocol->url_open(&context, "foobar", 0)); | 121 EXPECT_EQ(AVERROR_IO, g_protocol->url_open(&context, "foobar", 0)); |
| 122 | 122 |
| 123 // Test opening a URLContext with our data source. | 123 // Test opening a URLContext with our data source. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 140 } | 140 } |
| 141 | 141 |
| 142 TEST(FFmpegGlueTest, ReadingWriting) { | 142 TEST(FFmpegGlueTest, ReadingWriting) { |
| 143 // Prepare testing data. | 143 // Prepare testing data. |
| 144 media::FFmpegGlue* glue = media::FFmpegGlue::get(); | 144 media::FFmpegGlue* glue = media::FFmpegGlue::get(); |
| 145 const size_t kBufferSize = 16; | 145 const size_t kBufferSize = 16; |
| 146 unsigned char buffer[kBufferSize]; | 146 unsigned char buffer[kBufferSize]; |
| 147 | 147 |
| 148 // Configure MockDataSource to be 8 characters long and fill reads with | 148 // Configure MockDataSource to be 8 characters long and fill reads with |
| 149 // periods. Therefore our expected string should be a character of 8 periods. | 149 // periods. Therefore our expected string should be a character of 8 periods. |
| 150 const size_t kExpectedSize = 8; | 150 const int kExpectedSize = 8; |
| 151 media::MockFilterConfig config; | 151 media::old_mocks::MockFilterConfig config; |
| 152 config.media_total_bytes = kExpectedSize; | 152 config.media_total_bytes = kExpectedSize; |
| 153 config.data_source_value = '.'; | 153 config.data_source_value = '.'; |
| 154 const char kExpected[] = "........"; | 154 const char kExpected[] = "........"; |
| 155 COMPILE_ASSERT(kExpectedSize == (arraysize(kExpected) - 1), string_length); | 155 COMPILE_ASSERT(kExpectedSize == (arraysize(kExpected) - 1), string_length); |
| 156 | 156 |
| 157 // Create our data source and add them to the glue layer. | 157 // Create our data source and add them to the glue layer. |
| 158 bool deleted = false; | 158 bool deleted = false; |
| 159 scoped_refptr<media::MockDataSource> data_source | 159 scoped_refptr<media::old_mocks::MockDataSource> data_source |
| 160 = new media::MockDataSource(&config, &deleted); | 160 = new media::old_mocks::MockDataSource(&config, &deleted); |
| 161 std::string key = glue->AddDataSource(data_source); | 161 std::string key = glue->AddDataSource(data_source); |
| 162 | 162 |
| 163 // Open our data source and then remove it from the glue layer. | 163 // Open our data source and then remove it from the glue layer. |
| 164 URLContext context; | 164 URLContext context; |
| 165 memset(&context, 0, sizeof(context)); | 165 memset(&context, 0, sizeof(context)); |
| 166 EXPECT_EQ(0, g_protocol->url_open(&context, key.c_str(), 0)); | 166 EXPECT_EQ(0, g_protocol->url_open(&context, key.c_str(), 0)); |
| 167 glue->RemoveDataSource(data_source); | 167 glue->RemoveDataSource(data_source); |
| 168 EXPECT_FALSE(deleted); | 168 EXPECT_FALSE(deleted); |
| 169 | 169 |
| 170 // Writing should always fail. | 170 // Writing should always fail. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 197 EXPECT_TRUE(deleted); | 197 EXPECT_TRUE(deleted); |
| 198 } | 198 } |
| 199 | 199 |
| 200 TEST(FFmpegGlueTest, Seeking) { | 200 TEST(FFmpegGlueTest, Seeking) { |
| 201 // Prepare testing data. | 201 // Prepare testing data. |
| 202 media::FFmpegGlue* glue = media::FFmpegGlue::get(); | 202 media::FFmpegGlue* glue = media::FFmpegGlue::get(); |
| 203 const int64 kSize = 32; | 203 const int64 kSize = 32; |
| 204 | 204 |
| 205 // Create our data source and add them to the glue layer. | 205 // Create our data source and add them to the glue layer. |
| 206 bool deleted = false; | 206 bool deleted = false; |
| 207 media::MockFilterConfig config; | 207 media::old_mocks::MockFilterConfig config; |
| 208 config.media_total_bytes = kSize; | 208 config.media_total_bytes = kSize; |
| 209 scoped_refptr<media::MockDataSource> data_source | 209 scoped_refptr<media::old_mocks::MockDataSource> data_source |
| 210 = new media::MockDataSource(&config, &deleted); | 210 = new media::old_mocks::MockDataSource(&config, &deleted); |
| 211 std::string key = glue->AddDataSource(data_source); | 211 std::string key = glue->AddDataSource(data_source); |
| 212 | 212 |
| 213 // Open our data source and then remove it from the glue layer. | 213 // Open our data source and then remove it from the glue layer. |
| 214 URLContext context; | 214 URLContext context; |
| 215 memset(&context, 0, sizeof(context)); | 215 memset(&context, 0, sizeof(context)); |
| 216 EXPECT_EQ(0, g_protocol->url_open(&context, key.c_str(), 0)); | 216 EXPECT_EQ(0, g_protocol->url_open(&context, key.c_str(), 0)); |
| 217 glue->RemoveDataSource(data_source); | 217 glue->RemoveDataSource(data_source); |
| 218 EXPECT_FALSE(deleted); | 218 EXPECT_FALSE(deleted); |
| 219 | 219 |
| 220 // Test SEEK_SET operations. | 220 // Test SEEK_SET operations. |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 | 285 |
| 286 TEST(FFmpegGlueTest, Destructor) { | 286 TEST(FFmpegGlueTest, Destructor) { |
| 287 // Prepare testing data. | 287 // Prepare testing data. |
| 288 media::FFmpegGlue* glue = media::FFmpegGlue::get(); | 288 media::FFmpegGlue* glue = media::FFmpegGlue::get(); |
| 289 | 289 |
| 290 // We use a static bool since ~FFmpegGlue() will set it to true sometime | 290 // We use a static bool since ~FFmpegGlue() will set it to true sometime |
| 291 // after this function exits. | 291 // after this function exits. |
| 292 static bool deleted = false; | 292 static bool deleted = false; |
| 293 | 293 |
| 294 // Create our data source and add them to the glue layer. | 294 // Create our data source and add them to the glue layer. |
| 295 media::MockFilterConfig config; | 295 media::old_mocks::MockFilterConfig config; |
| 296 scoped_refptr<media::MockDataSource> data_source | 296 scoped_refptr<media::old_mocks::MockDataSource> data_source |
| 297 = new media::MockDataSource(&config, &deleted); | 297 = new media::old_mocks::MockDataSource(&config, &deleted); |
| 298 std::string key = glue->AddDataSource(data_source); | 298 std::string key = glue->AddDataSource(data_source); |
| 299 | 299 |
| 300 // Remove our own reference. | 300 // Remove our own reference. |
| 301 data_source = NULL; | 301 data_source = NULL; |
| 302 EXPECT_FALSE(deleted); | 302 EXPECT_FALSE(deleted); |
| 303 | 303 |
| 304 // ~FFmpegGlue() will be called when this unit test finishes execution. By | 304 // ~FFmpegGlue() will be called when this unit test finishes execution. By |
| 305 // leaving something inside FFmpegGlue's map we get to test our cleanup code. | 305 // leaving something inside FFmpegGlue's map we get to test our cleanup code. |
| 306 // | 306 // |
| 307 // MockDataSource will be holding onto a bad MockFilterConfig pointer at this | 307 // MockDataSource will be holding onto a bad MockFilterConfig pointer at this |
| 308 // point but since no one is calling it everything will be ok. | 308 // point but since no one is calling it everything will be ok. |
| 309 } | 309 } |
| OLD | NEW |