OLD | NEW |
1 // Copyright (c) 2008-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008-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 "base/string_util.h" | 5 #include "base/string_util.h" |
6 #include "media/base/data_buffer.h" | 6 #include "media/base/data_buffer.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 using media::DataBuffer; | 9 using media::DataBuffer; |
10 | 10 |
11 TEST(DataBufferTest, Basic) { | 11 TEST(DataBufferTest, Basic) { |
12 const size_t kBufferSize = 32; | |
13 const char kData[] = "hello"; | 12 const char kData[] = "hello"; |
14 const size_t kDataSize = arraysize(kData); | 13 const size_t kDataSize = arraysize(kData); |
15 const char kNewData[] = "chromium"; | 14 const char kNewData[] = "chromium"; |
16 const size_t kNewDataSize = arraysize(kNewData); | 15 const size_t kNewDataSize = arraysize(kNewData); |
17 const base::TimeDelta kTimestampA = base::TimeDelta::FromMicroseconds(1337); | 16 const base::TimeDelta kTimestampA = base::TimeDelta::FromMicroseconds(1337); |
18 const base::TimeDelta kDurationA = base::TimeDelta::FromMicroseconds(1667); | 17 const base::TimeDelta kDurationA = base::TimeDelta::FromMicroseconds(1667); |
19 const base::TimeDelta kTimestampB = base::TimeDelta::FromMicroseconds(1234); | 18 const base::TimeDelta kTimestampB = base::TimeDelta::FromMicroseconds(1234); |
20 const base::TimeDelta kDurationB = base::TimeDelta::FromMicroseconds(5678); | 19 const base::TimeDelta kDurationB = base::TimeDelta::FromMicroseconds(5678); |
21 | 20 |
22 // Create our buffer and copy some data into it. | 21 // Create our buffer and copy some data into it. |
23 char* data = new char[kBufferSize]; | |
24 ASSERT_TRUE(data); | |
25 size_t copied = base::strlcpy(data, kData, kBufferSize); | |
26 EXPECT_EQ(kDataSize, copied + 1); | |
27 | |
28 // Create a DataBuffer. | 22 // Create a DataBuffer. |
29 scoped_refptr<DataBuffer> buffer; | 23 scoped_refptr<DataBuffer> buffer = new DataBuffer(); |
30 buffer = new DataBuffer(data, kBufferSize, kDataSize, | 24 ASSERT_TRUE(buffer); |
31 kTimestampA, kDurationA); | |
32 ASSERT_TRUE(buffer.get()); | |
33 | 25 |
34 // Test StreamSample implementation. | 26 // Test StreamSample implementation. |
| 27 buffer->SetTimestamp(kTimestampA); |
| 28 buffer->SetDuration(kDurationA); |
35 EXPECT_TRUE(kTimestampA == buffer->GetTimestamp()); | 29 EXPECT_TRUE(kTimestampA == buffer->GetTimestamp()); |
36 EXPECT_TRUE(kDurationA == buffer->GetDuration()); | 30 EXPECT_TRUE(kDurationA == buffer->GetDuration()); |
37 EXPECT_FALSE(buffer->IsEndOfStream()); | 31 EXPECT_FALSE(buffer->IsEndOfStream()); |
38 EXPECT_FALSE(buffer->IsDiscontinuous()); | 32 EXPECT_FALSE(buffer->IsDiscontinuous()); |
39 buffer->SetTimestamp(kTimestampB); | 33 buffer->SetTimestamp(kTimestampB); |
40 buffer->SetDuration(kDurationB); | 34 buffer->SetDuration(kDurationB); |
41 EXPECT_TRUE(kTimestampB == buffer->GetTimestamp()); | 35 EXPECT_TRUE(kTimestampB == buffer->GetTimestamp()); |
42 EXPECT_TRUE(kDurationB == buffer->GetDuration()); | 36 EXPECT_TRUE(kDurationB == buffer->GetDuration()); |
43 | 37 |
44 // Test Buffer implementation. | |
45 ASSERT_EQ(data, buffer->GetData()); | |
46 EXPECT_EQ(kDataSize, buffer->GetDataSize()); | |
47 EXPECT_STREQ(kData, buffer->GetData()); | |
48 | |
49 // Test WritableBuffer implementation. | |
50 ASSERT_EQ(data, buffer->GetWritableData()); | |
51 EXPECT_EQ(kBufferSize, buffer->GetBufferSize()); | |
52 copied = base::strlcpy(data, kNewData, kBufferSize); | |
53 EXPECT_EQ(kNewDataSize, copied + 1); | |
54 buffer->SetDataSize(kNewDataSize); | |
55 EXPECT_EQ(kNewDataSize, buffer->GetDataSize()); | |
56 | |
57 buffer->SetEndOfStream(true); | 38 buffer->SetEndOfStream(true); |
58 EXPECT_TRUE(buffer->IsEndOfStream()); | 39 EXPECT_TRUE(buffer->IsEndOfStream()); |
59 buffer->SetEndOfStream(false); | 40 buffer->SetEndOfStream(false); |
60 EXPECT_FALSE(buffer->IsEndOfStream()); | 41 EXPECT_FALSE(buffer->IsEndOfStream()); |
61 buffer->SetDiscontinuous(true); | 42 buffer->SetDiscontinuous(true); |
62 EXPECT_TRUE(buffer->IsDiscontinuous()); | 43 EXPECT_TRUE(buffer->IsDiscontinuous()); |
63 buffer->SetDiscontinuous(false); | 44 buffer->SetDiscontinuous(false); |
64 EXPECT_FALSE(buffer->IsDiscontinuous()); | 45 EXPECT_FALSE(buffer->IsDiscontinuous()); |
| 46 |
| 47 // Test WritableBuffer implementation. |
| 48 EXPECT_FALSE(buffer->GetData()); |
| 49 uint8* data = buffer->GetWritableData(kDataSize); |
| 50 ASSERT_TRUE(data); |
| 51 ASSERT_EQ(buffer->GetDataSize(), kDataSize); |
| 52 memcpy(data, kData, kDataSize); |
| 53 const uint8* read_only_data = buffer->GetData(); |
| 54 ASSERT_EQ(data, read_only_data); |
| 55 ASSERT_EQ(0, memcmp(read_only_data, kData, kDataSize)); |
| 56 |
| 57 data = buffer->GetWritableData(kNewDataSize + 10); |
| 58 ASSERT_TRUE(data); |
| 59 ASSERT_EQ(buffer->GetDataSize(), kNewDataSize + 10); |
| 60 memcpy(data, kNewData, kNewDataSize); |
| 61 read_only_data = buffer->GetData(); |
| 62 buffer->SetDataSize(kNewDataSize); |
| 63 EXPECT_EQ(buffer->GetDataSize(), kNewDataSize); |
| 64 ASSERT_EQ(data, read_only_data); |
| 65 EXPECT_EQ(0, memcmp(read_only_data, kNewData, kNewDataSize)); |
65 } | 66 } |
OLD | NEW |