Added time format with only offset. Fixes #22558.
[mono.git] / mcs / class / corlib / Test / Mono / DataConvertTest.cs
1 using System;
2 using System.Collections;
3 using System.Text;
4 using NUnit.Framework;
5 using Mono;
6
7 #if !MOBILE
8 using NUnit.Framework.SyntaxHelpers;
9 #endif
10
11 namespace MonoTests {
12
13         [TestFixture]
14         public class DataConverterTest
15         {
16                 const string TEST_STRING = "Alignment test";
17         
18                 static string Dump (byte [] d)
19                 {
20                         StringBuilder sb = new StringBuilder ();
21                         
22                         for (int i = 0; i < d.Length; i++){
23                                 sb.Append (String.Format ("{0:x2} ", d [i]));
24                         }
25                         return sb.ToString ().Trim ();
26                 }
27         
28                 [Test]
29                 public void PackTests ()
30                 {
31                         Assert.AreEqual (Dump (DataConverter.Pack ("z8", "hello")), "68 65 6c 6c 6f 00");
32                         Assert.AreEqual (Dump (DataConverter.Pack ("z6", "hello")), "68 00 65 00 6c 00 6c 00 6f 00 00 00");
33                         Assert.AreEqual (Dump (DataConverter.Pack ("CCCC", 65, 66, 67, 68)), "41 42 43 44");
34         
35                         Assert.AreEqual (Dump (DataConverter.Pack ("4C", 65, 66, 67, 68, 69, 70)),  "41 42 43 44");
36                         Assert.AreEqual (Dump (DataConverter.Pack ("^iii", 0x1234abcd, 0x7fadb007)), "12 34 ab cd 7f ad b0 07 00 00 00 00");
37                         Assert.AreEqual (Dump (DataConverter.Pack ("_s!i", 0x7b, 0x12345678)), "7b 00 00 00 78 56 34 12");
38                 }
39         
40                 [Test]
41                 public void ArrayTests ()
42                 {
43                         byte [] source = new byte [] { 1, 2, 3, 4 };
44                         byte [] dest = new byte [4];
45         
46                         int l = DataConverter.Int32FromBE (source, 0);
47                         Assert.AreEqual (l, 0x01020304);
48                 }
49         
50                 [Test]
51                 public void StringAlignment ()
52                 {
53                         byte[] packed = Mono.DataConverter.Pack ("bz8", 1, TEST_STRING);
54                                 
55                         IList unpacked = Mono.DataConverter.Unpack ("bz8", packed, 0);
56                         
57                         Assert.AreEqual(1, (byte) unpacked[0]);
58                         Assert.AreEqual(TEST_STRING, new string((char[]) unpacked[1]));
59                 }
60
61                 [Test]
62                 public void UnpackTests ()
63                 {
64                         float f = (float)DataConverter.Unpack ("%f", DataConverter.Pack ("f", 3.14), 0) [0];
65                         Assert.That ((f - 3.14f), Is.LessThanOrEqualTo (Single.Epsilon));
66                 }
67         }
68 }