1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 #include "media/ffmpeg/ffmpeg_common.h"
8 #include "media/filters/in_memory_url_protocol.h"
9 #include "testing/gtest/include/gtest/gtest.h"
13 static const uint8_t kData[] = {0x01, 0x02, 0x03, 0x04};
15 TEST(InMemoryUrlProtocolTest, ReadFromLargeBuffer) {
16 InMemoryUrlProtocol protocol(kData, std::numeric_limits<int64_t>::max(),
19 uint8_t out[sizeof(kData)];
20 EXPECT_EQ(4, protocol.Read(sizeof(out), out));
21 EXPECT_EQ(0, memcmp(out, kData, sizeof(out)));
24 TEST(InMemoryUrlProtocolTest, ReadWithNegativeSize) {
25 InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
27 uint8_t out[sizeof(kData)];
28 EXPECT_EQ(AVERROR(EIO), protocol.Read(-2, out));
31 TEST(InMemoryUrlProtocolTest, ReadWithZeroSize) {
32 InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
35 EXPECT_EQ(0, protocol.Read(0, &out));
38 TEST(InMemoryUrlProtocolTest, SetPosition) {
39 InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
41 EXPECT_FALSE(protocol.SetPosition(-1));
42 EXPECT_FALSE(protocol.SetPosition(sizeof(kData) + 1));
45 EXPECT_TRUE(protocol.SetPosition(sizeof(kData)));
46 EXPECT_EQ(AVERROR_EOF, protocol.Read(1, &out));
48 int i = sizeof(kData) / 2;
49 EXPECT_TRUE(protocol.SetPosition(i));
50 EXPECT_EQ(1, protocol.Read(1, &out));
51 EXPECT_EQ(kData[i], out);