aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.gldebugger.tests/src/com/android/ide/eclipse/gltrace/format/GLAPISpecTest.java
blob: 4a4d0706ca232e7aa88b474650048bb7b4483952 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.ide.eclipse.gltrace.format;

import static org.junit.Assert.*;

import com.android.ide.eclipse.gltrace.GLProtoBuf.GLMessage.DataType.Type;

import org.junit.Test;

import java.util.Arrays;
import java.util.List;

public class GLAPISpecTest {
    @Test
    public void testParser() {
        String returnType = "void";
        String funcName = "glDiscardFramebufferEXT";
        List<String> args = Arrays.asList(
                "GLenum target",
                "GLsizei numAttachments",
                "const GLenum* attachments");

        GLAPISpec spec = GLAPISpec.parseLine(createSpec(returnType, funcName, args));

        assertEquals(Type.VOID, spec.getReturnValue().getDataType());
        assertEquals(returnType, spec.getReturnValue().getCType());
        assertEquals(funcName, spec.getFunction());

        List<GLDataTypeSpec> argSpecs = spec.getArgs();
        assertEquals(argSpecs.size(), args.size());

        GLDataTypeSpec argSpec = argSpecs.get(0);
        assertEquals(argSpec.getArgName(), "target");
        assertEquals(argSpec.getDataType(), Type.ENUM);
        assertEquals(argSpec.isPointer(), false);

        argSpec = argSpecs.get(2);
        assertEquals(argSpec.getArgName(), "attachments");
        assertEquals(argSpec.getDataType(), Type.ENUM);
        assertEquals(argSpec.isPointer(), true);
    }

    private String createSpec(String returnType, String funcName, List<String> args) {
        StringBuffer sb = new StringBuffer();
        sb.append(String.format("%s, %s", returnType, funcName));

        if (args != null) {
            sb.append(", ");
            for (int i = 0; i < args.size(); i++) {
                sb.append(args.get(i));
                if (i != args.size() - 1) {
                    sb.append(", ");
                }
            }
        }

        return sb.toString();
    }
}