1#!/usr/bin/env python
2#
3# Copyright (C) 2011 Google Inc.
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#      http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
17# USAGE
18#   $ cd GLES_trace/tools
19#   $ python testgenapi.py
20
21import unittest
22from genapi import DataType, ApiCall, getApis, parseArgs
23
24class TestApiCall(unittest.TestCase):
25    def test_parsing(self):
26        apientry = 'void API_ENTRY(glCopyTexSubImage2D)(GLenum target, GLint level, ' \
27                   'GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, ' \
28                   'GLsizei height) {'
29        callsite = 'CALL_GL_API(glCopyTexImage2D, target, level, internalformat, x, y,' \
30                   'width, height, border);'
31
32        api = ApiCall("GL", apientry, callsite)
33        self.assertEqual(api.func, "glCopyTexImage2D")
34        self.assertEqual(api.callsite, 'glCopyTexImage2D(target, level, internalformat, ' \
35                                        'x, y, width, height, border)')
36        self.assertEqual(api.ret, 'void')
37        self.assertEqual(api.arglist, 'GLenum target, GLint level, ' \
38                   'GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, ' \
39                   'GLsizei height')
40
41    def test_num_functions_parsed(self):
42        gl2_apis = getApis('../../GLES2/gl2_api.in', 'GL2')
43        gl2ext_apis = getApis('../../GLES2/gl2ext_api.in', 'GL2Ext')
44        gl_apis = getApis('../../GLES_CM/gl_api.in', "GL1")
45        glext_apis = getApis('../../GLES_CM/glext_api.in', 'GL1Ext')
46
47        self.assertEqual(len(gl2_apis), 142)
48        self.assertEqual(len(gl2ext_apis), 121)
49        self.assertEqual(len(gl_apis), 145)
50        self.assertEqual(len(glext_apis), 140)
51
52    def test_parseArgs(self):
53        args = parseArgs("void")
54        self.assertEqual(len(args), 0)
55
56        args = parseArgs("GLchar a")
57        self.assertEqual(args, [("a", DataType.CHAR)])
58
59        args = parseArgs("GLchar *a")
60        self.assertEqual(args, [("a", DataType.POINTER)])
61
62        args = parseArgs("GLint exponent[16]")
63        self.assertEqual(args, [("exponent", DataType.POINTER)])
64
65if __name__ == '__main__':
66    unittest.main()
67