You've already forked cmf-bindings
123 lines
4.4 KiB
Java
123 lines
4.4 KiB
Java
/* Copyright (c) 2016 Tom Zander <tomz@freedommail.ch>
|
|
*
|
|
* 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 test;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import org.junit.Test;
|
|
|
|
import cmf.*;
|
|
import java.nio.ByteBuffer;
|
|
|
|
public class Tests {
|
|
@Test
|
|
public void basicTest() {
|
|
byte[] buffer = new byte[100];
|
|
{
|
|
MessageBuilder builder = new MessageBuilder(buffer, 0);
|
|
builder.add(15, 6512);
|
|
assertEquals(3, builder.getPosition());
|
|
}
|
|
assertEquals(120, buffer[0]);
|
|
assertEquals((byte) 177, buffer[1]);
|
|
assertEquals(112, buffer[2]);
|
|
|
|
{
|
|
MessageParser parser = new MessageParser(buffer, 0, 3);
|
|
assertEquals(MessageParser.State.FOUND_TAG, parser.next());
|
|
assertEquals(15, parser.getTag());
|
|
assertEquals(6512, parser.getInt());
|
|
assertEquals(MessageParser.State.END_OF_DOCUMENT, parser.next());
|
|
}
|
|
|
|
{
|
|
MessageBuilder builder = new MessageBuilder(buffer, 0);
|
|
builder.add(129, 6512);
|
|
assertEquals(5, builder.getPosition());
|
|
}
|
|
assertEquals((byte) 248, buffer[0]);
|
|
assertEquals((byte) 128, buffer[1]);
|
|
assertEquals(1, buffer[2]);
|
|
assertEquals((byte) 177, buffer[3]);
|
|
assertEquals((byte) 112, buffer[4]);
|
|
|
|
{
|
|
MessageParser parser = new MessageParser(buffer, 0, 5);
|
|
assertEquals(MessageParser.State.FOUND_TAG, parser.next());
|
|
assertEquals(129, parser.getTag());
|
|
assertEquals(6512, parser.getInt());
|
|
assertEquals(MessageParser.State.END_OF_DOCUMENT, parser.next());
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testTypes() throws Exception
|
|
{
|
|
byte[] buffer = new byte[100];
|
|
MessageBuilder builder = new MessageBuilder(buffer, 0);
|
|
builder.add(1, "Föo");
|
|
byte[] blob = new String("hihi").getBytes("UTF-8");
|
|
|
|
builder.add(200, blob);
|
|
builder.add(3, true);
|
|
builder.add(40, false);
|
|
|
|
assertEquals(17, builder.getPosition());
|
|
|
|
// string '1'
|
|
assertEquals((byte) 10, buffer[0]);
|
|
assertEquals((byte) 4, buffer[1]); // serialized string length
|
|
assertEquals((byte) 70, buffer[2]);
|
|
assertEquals((byte) 195, buffer[3]);
|
|
assertEquals((byte) 182, buffer[4]);
|
|
assertEquals((byte) 111, buffer[5]);
|
|
|
|
// blob '200'
|
|
assertEquals((byte) 251, buffer[6]);
|
|
assertEquals((byte) 128, buffer[7]);
|
|
assertEquals((byte) 72, buffer[8]);
|
|
assertEquals((byte) 4, buffer[9]); // length of bytearray
|
|
assertEquals((byte) 104, buffer[10]); // 'h'
|
|
assertEquals((byte) 105, buffer[11]); // 'i'
|
|
assertEquals((byte) 104, buffer[12]); // 'h'
|
|
assertEquals((byte) 105, buffer[13]); // 'i'
|
|
|
|
// bool-true '3'
|
|
assertEquals((byte) 28, buffer[14]);
|
|
|
|
// bool-false '40'
|
|
assertEquals((byte) 253, buffer[15]);
|
|
assertEquals((byte) 40, buffer[16]);
|
|
|
|
MessageParser parser = new MessageParser(buffer, 0, builder.getPosition());
|
|
assertEquals(MessageParser.State.FOUND_TAG, parser.next());
|
|
assertEquals(1, parser.getTag());
|
|
assertEquals(new String("Föo"), parser.getString());
|
|
assertEquals(MessageParser.State.FOUND_TAG, parser.next());
|
|
assertEquals(200, parser.getTag());
|
|
byte[] parsed = parser.getByteArray();
|
|
assertEquals(blob.length, parsed.length);
|
|
for (int i = 0; i < blob.length; ++i) {
|
|
assertEquals(blob[i], parsed[i]);
|
|
}
|
|
assertEquals(MessageParser.State.FOUND_TAG, parser.next());
|
|
assertEquals(3, parser.getTag());
|
|
assertEquals(true, parser.getBoolean());
|
|
assertEquals(MessageParser.State.FOUND_TAG, parser.next());
|
|
assertEquals(40, parser.getTag());
|
|
assertEquals(false, parser.getBoolean());
|
|
assertEquals(MessageParser.State.END_OF_DOCUMENT, parser.next());
|
|
}
|
|
}
|