Upload upstream chromium 108.0.5359.1
[platform/framework/web/chromium-efl.git] / media / filters / in_memory_url_protocol_unittest.cc
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.
4
5 #include <stdint.h>
6
7 #include "media/ffmpeg/ffmpeg_common.h"
8 #include "media/filters/in_memory_url_protocol.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace media {
12
13 static const uint8_t kData[] = {0x01, 0x02, 0x03, 0x04};
14
15 TEST(InMemoryUrlProtocolTest, ReadFromLargeBuffer) {
16   InMemoryUrlProtocol protocol(kData, std::numeric_limits<int64_t>::max(),
17                                false);
18
19   uint8_t out[sizeof(kData)];
20   EXPECT_EQ(4, protocol.Read(sizeof(out), out));
21   EXPECT_EQ(0, memcmp(out, kData, sizeof(out)));
22 }
23
24 TEST(InMemoryUrlProtocolTest, ReadWithNegativeSize) {
25   InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
26
27   uint8_t out[sizeof(kData)];
28   EXPECT_EQ(AVERROR(EIO), protocol.Read(-2, out));
29 }
30
31 TEST(InMemoryUrlProtocolTest, ReadWithZeroSize) {
32   InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
33
34   uint8_t out;
35   EXPECT_EQ(0, protocol.Read(0, &out));
36 }
37
38 TEST(InMemoryUrlProtocolTest, SetPosition) {
39   InMemoryUrlProtocol protocol(kData, sizeof(kData), false);
40
41   EXPECT_FALSE(protocol.SetPosition(-1));
42   EXPECT_FALSE(protocol.SetPosition(sizeof(kData) + 1));
43
44   uint8_t out;
45   EXPECT_TRUE(protocol.SetPosition(sizeof(kData)));
46   EXPECT_EQ(AVERROR_EOF, protocol.Read(1, &out));
47
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);
52 }
53
54 }  // namespace media