You've already forked cmf-bindings
125 lines
4.1 KiB
C#
125 lines
4.1 KiB
C#
|
|
/* 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.
|
||
|
|
*/
|
||
|
|
using NUnit.Framework;
|
||
|
|
using System;
|
||
|
|
using System.Text;
|
||
|
|
|
||
|
|
namespace CMF.test
|
||
|
|
{
|
||
|
|
[TestFixture ()]
|
||
|
|
public class NUnitTestClass
|
||
|
|
{
|
||
|
|
[Test ()]
|
||
|
|
public void TestCase ()
|
||
|
|
{
|
||
|
|
byte[] buffer = new byte[100];
|
||
|
|
{
|
||
|
|
MessageBuilder builder = new MessageBuilder(buffer, 0);
|
||
|
|
builder.Add(15, 6512);
|
||
|
|
Assert.AreEqual(3, builder.GetPosition());
|
||
|
|
}
|
||
|
|
Assert.AreEqual(120, buffer[0]);
|
||
|
|
Assert.AreEqual((byte) 177, buffer[1]);
|
||
|
|
Assert.AreEqual(112, buffer[2]);
|
||
|
|
|
||
|
|
{
|
||
|
|
MessageParser parser = new MessageParser(buffer, 0, 3);
|
||
|
|
Assert.AreEqual(MessageParser.State.FoundTag, parser.Next());
|
||
|
|
Assert.AreEqual(15, parser.GetTag());
|
||
|
|
Assert.AreEqual(6512, parser.GetInt());
|
||
|
|
Assert.AreEqual(MessageParser.State.EndOfDocument, parser.Next());
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
MessageBuilder builder = new MessageBuilder(buffer, 0);
|
||
|
|
builder.Add(129, 6512);
|
||
|
|
Assert.AreEqual(5, builder.GetPosition());
|
||
|
|
}
|
||
|
|
Assert.AreEqual((byte) 248, buffer[0]);
|
||
|
|
Assert.AreEqual((byte) 128, buffer[1]);
|
||
|
|
Assert.AreEqual(1, buffer[2]);
|
||
|
|
Assert.AreEqual((byte) 177, buffer[3]);
|
||
|
|
Assert.AreEqual((byte) 112, buffer[4]);
|
||
|
|
|
||
|
|
{
|
||
|
|
MessageParser parser = new MessageParser(buffer, 0, 5);
|
||
|
|
Assert.AreEqual(MessageParser.State.FoundTag, parser.Next());
|
||
|
|
Assert.AreEqual(129, parser.GetTag());
|
||
|
|
Assert.AreEqual(6512, parser.GetInt());
|
||
|
|
Assert.AreEqual(MessageParser.State.EndOfDocument, parser.Next());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
[Test ()]
|
||
|
|
public void TestTypes()
|
||
|
|
{
|
||
|
|
byte[] buffer = new byte[100];
|
||
|
|
MessageBuilder builder = new MessageBuilder(buffer, 0);
|
||
|
|
builder.Add(1, "Föo");
|
||
|
|
byte[] blob = Encoding.UTF8.GetBytes("hihi");
|
||
|
|
builder.Add(200, blob);
|
||
|
|
builder.Add(3, true);
|
||
|
|
builder.Add(40, false);
|
||
|
|
|
||
|
|
Assert.AreEqual(17, builder.GetPosition());
|
||
|
|
|
||
|
|
// string '1'
|
||
|
|
Assert.AreEqual((byte) 10, buffer[0]);
|
||
|
|
Assert.AreEqual((byte) 4, buffer[1]); // serialized string length
|
||
|
|
Assert.AreEqual((byte) 70, buffer[2]);
|
||
|
|
Assert.AreEqual((byte) 195, buffer[3]);
|
||
|
|
Assert.AreEqual((byte) 182, buffer[4]);
|
||
|
|
Assert.AreEqual((byte) 111, buffer[5]);
|
||
|
|
|
||
|
|
// blob '200'
|
||
|
|
Assert.AreEqual((byte) 251, buffer[6]);
|
||
|
|
Assert.AreEqual((byte) 128, buffer[7]);
|
||
|
|
Assert.AreEqual((byte) 72, buffer[8]);
|
||
|
|
Assert.AreEqual((byte) 4, buffer[9]); // length of bytearray
|
||
|
|
Assert.AreEqual((byte) 104, buffer[10]); // 'h'
|
||
|
|
Assert.AreEqual((byte) 105, buffer[11]); // 'i'
|
||
|
|
Assert.AreEqual((byte) 104, buffer[12]); // 'h'
|
||
|
|
Assert.AreEqual((byte) 105, buffer[13]); // 'i'
|
||
|
|
|
||
|
|
// bool-true '3'
|
||
|
|
Assert.AreEqual((byte) 28, buffer[14]);
|
||
|
|
|
||
|
|
// bool-false '40'
|
||
|
|
Assert.AreEqual((byte) 253, buffer[15]);
|
||
|
|
Assert.AreEqual((byte) 40, buffer[16]);
|
||
|
|
|
||
|
|
MessageParser parser = new MessageParser(buffer, 0, builder.GetPosition());
|
||
|
|
Assert.AreEqual(MessageParser.State.FoundTag, parser.Next());
|
||
|
|
Assert.AreEqual(1, parser.GetTag());
|
||
|
|
Assert.AreEqual("Föo", parser.GetString());
|
||
|
|
Assert.AreEqual(MessageParser.State.FoundTag, parser.Next());
|
||
|
|
Assert.AreEqual(200, parser.GetTag());
|
||
|
|
byte[] parsed = parser.getByteArray();
|
||
|
|
Assert.AreEqual(blob.Length, parsed.Length);
|
||
|
|
for (int i = 0; i < blob.Length; ++i) {
|
||
|
|
Assert.AreEqual(blob[i], parsed[i]);
|
||
|
|
}
|
||
|
|
Assert.AreEqual(MessageParser.State.FoundTag, parser.Next());
|
||
|
|
Assert.AreEqual(3, parser.GetTag());
|
||
|
|
Assert.AreEqual(true, parser.GetBoolean());
|
||
|
|
Assert.AreEqual(MessageParser.State.FoundTag, parser.Next());
|
||
|
|
Assert.AreEqual(40, parser.GetTag());
|
||
|
|
Assert.AreEqual(false, parser.GetBoolean());
|
||
|
|
Assert.AreEqual(MessageParser.State.EndOfDocument, parser.Next());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|