History

reorganize tests

Licai Guo committed 12 years ago

Commit f26bb571 parent 667bfe223 files · +68 −43Browse files

Showing the changes to test/api/cpp_interface_test.cpp (1 of 23 files). Show all

Unified · Split

test/api/cpp_interface_test.cpp+129−0
@@ -0,0 +1,129 @@
1+#include <gtest/gtest.h>
2+#include "codec_api.h"
3+#include <stddef.h>
4+
5+static void CheckFunctionOrder(int expect, int actual, const char* name) {
6+ EXPECT_EQ(expect, actual) << "Wrong function order: " << name;
7+}
8+
9+typedef void(*CheckFunc)(int, int, const char*);
10+extern "C" void CheckEncoderInterface(ISVCEncoder* p, CheckFunc);
11+extern "C" void CheckDecoderInterface(ISVCDecoder* p, CheckFunc);
12+extern "C" size_t GetBoolSize(void);
13+extern "C" size_t GetBoolOffset(void);
14+extern "C" size_t GetBoolStructSize(void);
15+
16+// Store the 'this' pointer to verify 'this' is received as expected from C code.
17+static void* gThis;
18+
19+/**
20+ * Return a unique number for each virtual function so that we are able to
21+ * check if the order of functions in the virtual table is as expected.
22+ */
23+struct SVCEncoderImpl : public ISVCEncoder {
24+ virtual ~SVCEncoderImpl() {}
25+ virtual int EXTAPI Initialize(const SEncParamBase* pParam) {
26+ EXPECT_TRUE(gThis == this);
27+ return 1;
28+ }
29+ virtual int EXTAPI InitializeExt(const SEncParamExt* pParam) {
30+ EXPECT_TRUE(gThis == this);
31+ return 2;
32+ }
33+ virtual int EXTAPI GetDefaultParams(SEncParamExt* pParam) {
34+ EXPECT_TRUE(gThis == this);
35+ return 3;
36+ }
37+ virtual int EXTAPI Uninitialize() {
38+ EXPECT_TRUE(gThis == this);
39+ return 4;
40+ }
41+ virtual int EXTAPI EncodeFrame(const SSourcePicture* kpSrcPic,
42+ SFrameBSInfo* pBsInfo) {
43+ EXPECT_TRUE(gThis == this);
44+ return 5;
45+ }
46+ virtual int EXTAPI EncodeParameterSets(SFrameBSInfo* pBsInfo) {
47+ EXPECT_TRUE(gThis == this);
48+ return 6;
49+ }
50+ virtual int EXTAPI PauseFrame(const SSourcePicture* kpSrcPic,
51+ SFrameBSInfo* pBsInfo) {
52+ EXPECT_TRUE(gThis == this);
53+ return 7;
54+ }
55+ virtual int EXTAPI ForceIntraFrame(bool bIDR) {
56+ EXPECT_TRUE(gThis == this);
57+ return 8;
58+ }
59+ virtual int EXTAPI SetOption(ENCODER_OPTION eOptionId, void* pOption) {
60+ EXPECT_TRUE(gThis == this);
61+ return 9;
62+ }
63+ virtual int EXTAPI GetOption(ENCODER_OPTION eOptionId, void* pOption) {
64+ EXPECT_TRUE(gThis == this);
65+ return 10;
66+ }
67+};
68+
69+struct SVCDecoderImpl : public ISVCDecoder {
70+ virtual ~SVCDecoderImpl() {}
71+ virtual long EXTAPI Initialize(const SDecodingParam* pParam) {
72+ EXPECT_TRUE(gThis == this);
73+ return 1;
74+ }
75+ virtual long EXTAPI Uninitialize() {
76+ EXPECT_TRUE(gThis == this);
77+ return 2;
78+ }
79+ virtual DECODING_STATE EXTAPI DecodeFrame(const unsigned char* pSrc,
80+ const int iSrcLen, unsigned char** ppDst, int* pStride,
81+ int& iWidth, int& iHeight) {
82+ EXPECT_TRUE(gThis == this);
83+ return static_cast<DECODING_STATE>(3);
84+ }
85+ virtual DECODING_STATE EXTAPI DecodeFrame2(const unsigned char* pSrc,
86+ const int iSrcLen, void** ppDst, SBufferInfo* pDstInfo) {
87+ EXPECT_TRUE(gThis == this);
88+ return static_cast<DECODING_STATE>(4);
89+ }
90+ virtual DECODING_STATE EXTAPI DecodeFrameEx(const unsigned char* pSrc,
91+ const int iSrcLen, unsigned char* pDst, int iDstStride,
92+ int& iDstLen, int& iWidth, int& iHeight, int& iColorFormat) {
93+ EXPECT_TRUE(gThis == this);
94+ return static_cast<DECODING_STATE>(5);
95+ }
96+ virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) {
97+ EXPECT_TRUE(gThis == this);
98+ return 6;
99+ }
100+ virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) {
101+ EXPECT_TRUE(gThis == this);
102+ return 7;
103+ }
104+};
105+
106+TEST(ISVCEncoderTest, CheckFunctionOrder) {
107+ SVCEncoderImpl* p = new SVCEncoderImpl;
108+ gThis = p;
109+ CheckEncoderInterface(p, CheckFunctionOrder);
110+ delete p;
111+}
112+
113+TEST(ISVCDecoderTest, CheckFunctionOrder) {
114+ SVCDecoderImpl* p = new SVCDecoderImpl;
115+ gThis = p;
116+ CheckDecoderInterface(p, CheckFunctionOrder);
117+ delete p;
118+}
119+
120+struct bool_test_struct {
121+ char c;
122+ bool b;
123+};
124+
125+TEST(ISVCDecoderEncoderTest, CheckCAbi) {
126+ EXPECT_EQ(sizeof(bool), GetBoolSize()) << "Wrong size of bool type";
127+ EXPECT_EQ(offsetof(bool_test_struct, b), GetBoolOffset()) << "Wrong alignment of bool in a struct";
128+ EXPECT_EQ(sizeof(bool_test_struct), GetBoolStructSize()) << "Wrong size of struct with a bool";
129+}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t