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
|
using System;
using System.Collections;
using System.Text;
using NUnit.Framework;
using Mono;
namespace MonoTests.Mono {
[TestFixture]
public class DataConverterTest
{
const string TEST_STRING = "Alignment test";
static string Dump (byte [] d)
{
StringBuilder sb = new StringBuilder ();
for (int i = 0; i < d.Length; i++){
sb.Append (String.Format ("{0:x2} ", d [i]));
}
return sb.ToString ().Trim ();
}
[Test]
public void PackTests ()
{
Assert.AreEqual (Dump (DataConverter.Pack ("z8", "hello")), "68 65 6c 6c 6f 00");
Assert.AreEqual (Dump (DataConverter.Pack ("z6", "hello")), "68 00 65 00 6c 00 6c 00 6f 00 00 00");
Assert.AreEqual (Dump (DataConverter.Pack ("CCCC", 65, 66, 67, 68)), "41 42 43 44");
Assert.AreEqual (Dump (DataConverter.Pack ("4C", 65, 66, 67, 68, 69, 70)), "41 42 43 44");
Assert.AreEqual (Dump (DataConverter.Pack ("^iii", 0x1234abcd, 0x7fadb007)), "12 34 ab cd 7f ad b0 07 00 00 00 00");
Assert.AreEqual (Dump (DataConverter.Pack ("_s!i", 0x7b, 0x12345678)), "7b 00 00 00 78 56 34 12");
}
[Test]
public void ArrayTests ()
{
byte [] source = new byte [] { 1, 2, 3, 4 };
byte [] dest = new byte [4];
int l = DataConverter.Int32FromBE (source, 0);
Assert.AreEqual (l, 0x01020304);
}
[Test]
public void StringAlignment ()
{
byte[] packed = global::Mono.DataConverter.Pack ("bz8", 1, TEST_STRING);
IList unpacked = global::Mono.DataConverter.Unpack ("bz8", packed, 0);
Assert.AreEqual(1, (byte) unpacked[0]);
Assert.AreEqual(TEST_STRING, new string((char[]) unpacked[1]));
}
[Test]
public void UnpackTests ()
{
float f = (float)DataConverter.Unpack ("%f", DataConverter.Pack ("f", 3.14), 0) [0];
Assert.That ((f - 3.14f), Is.LessThanOrEqualTo (Single.Epsilon));
}
}
}
|