1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/ffmpeg/ffmpeg_common.h"
6 #include "media/filters/in_memory_url_protocol.h"
7 #include "testing/gtest/include/gtest/gtest.h"
11 static const uint8 kData[] = { 0x01, 0x02, 0x03, 0x04 };
13 TEST(InMemoryUrlProtocolTest, ReadFromLargeBuffer) {
14 InMemoryUrlProtocol protocol(kData, std::numeric_limits<int64>::max(), false);
16 uint8 out[sizeof(kData)];
17 EXPECT_EQ(4, protocol.Read(sizeof(out), out));
18 EXPECT_EQ(0, memcmp(out, kData, sizeof(out)));
21 TEST(InMemoryUrlProtocolTest, ReadWithNegativeSize) {
22 InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
24 uint8 out[sizeof(kData)];
25 EXPECT_EQ(AVERROR(EIO), protocol.Read(-2, out));
28 TEST(InMemoryUrlProtocolTest, ReadWithZeroSize) {
29 InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
32 EXPECT_EQ(0, protocol.Read(0, &out));
35 TEST(InMemoryUrlProtocolTest, SetPosition) {
36 InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
38 EXPECT_FALSE(protocol.SetPosition(-1));
39 EXPECT_FALSE(protocol.SetPosition(sizeof(kData) + 1));
42 EXPECT_TRUE(protocol.SetPosition(sizeof(kData)));
43 EXPECT_EQ(0, protocol.Read(1, &out));
45 int i = sizeof(kData) / 2;
46 EXPECT_TRUE(protocol.SetPosition(i));
47 EXPECT_EQ(1, protocol.Read(1, &out));
48 EXPECT_EQ(kData[i], out);