Change-Id: I55c360372623c019da0c1ba2eebbc68f73f0f211 Signed-off-by: David Li <davidxli@google.com>
116 lines
4.6 KiB
Java
116 lines
4.6 KiB
Java
/*
|
|
** Copyright 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.glesv2debugger;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertNotNull;
|
|
|
|
import com.android.glesv2debugger.DebuggerMessage.Message;
|
|
import com.android.glesv2debugger.DebuggerMessage.Message.Function;
|
|
import com.android.glesv2debugger.DebuggerMessage.Message.Type;
|
|
import com.google.protobuf.ByteString;
|
|
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
|
|
import java.nio.ByteBuffer;
|
|
|
|
public class MessageParserExTest {
|
|
/**
|
|
* @throws java.lang.Exception
|
|
*/
|
|
@Before
|
|
public void setUp() throws Exception {
|
|
}
|
|
|
|
@Test
|
|
public void testParseFloats() {
|
|
final MessageParserEx parser = new MessageParserEx();
|
|
final String args = "{0, 1 ,2,3 }";
|
|
parser.args = args;
|
|
final ByteBuffer data = parser.parseFloats(4).asReadOnlyByteBuffer();
|
|
data.order(SampleView.targetByteOrder);
|
|
for (int i = 0; i < 4; i++)
|
|
assertEquals(i, data.getFloat(), 0);
|
|
}
|
|
|
|
@Test
|
|
public void testParseArgument() {
|
|
final MessageParserEx parser = new MessageParserEx();
|
|
final String args = "sdfa = GL_VERTEX_SHADER , -5421 ,0x443=0x54f";
|
|
parser.args = args;
|
|
assertEquals(GLEnum.GL_VERTEX_SHADER.value, parser.parseArgument());
|
|
assertEquals(-5421, parser.parseArgument());
|
|
assertEquals(0x54f, parser.parseArgument());
|
|
}
|
|
|
|
/**
|
|
* Test method for
|
|
* {@link com.android.glesv2debugger.MessageParserEx#parse_glShaderSource(com.android.glesv2debugger.DebuggerMessage.Message.Builder)}
|
|
* .
|
|
*/
|
|
@Test
|
|
public void testParse_glShaderSource() {
|
|
final Message.Builder builder = Message.newBuilder();
|
|
final MessageParserEx messageParserEx = new MessageParserEx();
|
|
final String source = "dks \n jafhskjaho { urehg ; } hskjg";
|
|
messageParserEx.parse(builder, "void glShaderSource ( shader=4, count= 1, "
|
|
+ "string =\"" + source + "\" , 0x0)");
|
|
assertEquals(Function.glShaderSource, builder.getFunction());
|
|
assertEquals(4, builder.getArg0());
|
|
assertEquals(1, builder.getArg1());
|
|
assertEquals(source, builder.getData().toStringUtf8());
|
|
assertEquals(0, builder.getArg3());
|
|
}
|
|
|
|
@Test
|
|
public void testParse_glBlendEquation() {
|
|
assertNotNull(MessageParserEx.instance);
|
|
final Message.Builder builder = Message.newBuilder();
|
|
MessageParserEx.instance.parse(builder, "void glBlendEquation ( mode= GL_ADD ) ; ");
|
|
assertEquals(Function.glBlendEquation, builder.getFunction());
|
|
assertEquals(GLEnum.GL_ADD.value, builder.getArg0());
|
|
}
|
|
|
|
/** loopback testing of typical generated MessageFormatter and MessageParser */
|
|
@Test
|
|
public void testParseFormatterMessage() {
|
|
final ByteBuffer srcData = ByteBuffer.allocate(4 * 2 * 4);
|
|
srcData.order(SampleView.targetByteOrder);
|
|
for (int i = 0; i < 4 * 2; i++)
|
|
srcData.putFloat(i);
|
|
srcData.rewind();
|
|
Message.Builder builder = Message.newBuilder();
|
|
builder.setContextId(3752).setExpectResponse(false).setType(Type.CompleteCall);
|
|
builder.setFunction(Function.glUniformMatrix2fv);
|
|
builder.setArg0(54).setArg1(2).setArg2(0).setData(ByteString.copyFrom(srcData));
|
|
Message msg = builder.build();
|
|
builder = msg.toBuilder();
|
|
String formatted = MessageFormatter.format(msg, false);
|
|
formatted = formatted.substring(0, formatted.indexOf('(')) + ' ' + builder.getFunction() +
|
|
formatted.substring(formatted.indexOf('('));
|
|
Message.Builder parsed = Message.newBuilder();
|
|
MessageParserEx.instance.parse(parsed, formatted);
|
|
assertEquals(builder.getFunction(), parsed.getFunction());
|
|
assertEquals(builder.getArg0(), parsed.getArg0());
|
|
assertEquals(builder.getArg1(), parsed.getArg1());
|
|
assertEquals(builder.getArg2(), parsed.getArg2());
|
|
assertEquals(builder.getData().toStringUtf8(), parsed.getData().toStringUtf8());
|
|
}
|
|
|
|
}
|