public void ScalarEncoder_Constant() { var b = new BlobBuilder(); var e = new ScalarEncoder(b); Assert.Same(b, e.Builder); e.Constant(null); AssertEx.Equal(new byte[] { 0xff }, b.ToArray()); b.Clear(); e.Constant(""); AssertEx.Equal(new byte[] { 0x00 }, b.ToArray()); b.Clear(); e.Constant("abc"); AssertEx.Equal(new byte[] { 0x03, 0x61, 0x62, 0x63 }, b.ToArray()); b.Clear(); e.Constant("\ud800"); // unpaired surrogate AssertEx.Equal(new byte[] { 0x03, 0xED, 0xA0, 0x80 }, b.ToArray()); b.Clear(); e.Constant(true); AssertEx.Equal(new byte[] { 0x01 }, b.ToArray()); b.Clear(); e.Constant(HandleKind.UserString); AssertEx.Equal(new byte[] { 0x70 }, b.ToArray()); b.Clear(); e.Constant((byte)0xAB); AssertEx.Equal(new byte[] { 0xAB }, b.ToArray()); b.Clear(); e.Constant((sbyte)0x12); AssertEx.Equal(new byte[] { 0x12 }, b.ToArray()); b.Clear(); e.Constant((ushort)0xABCD); AssertEx.Equal(new byte[] { 0xCD, 0xAB }, b.ToArray()); b.Clear(); e.Constant((short)0x1234); AssertEx.Equal(new byte[] { 0x34, 0x12 }, b.ToArray()); b.Clear(); e.Constant((char)0xABCD); AssertEx.Equal(new byte[] { 0xCD, 0xAB }, b.ToArray()); b.Clear(); e.Constant(0xABCD); AssertEx.Equal(new byte[] { 0xCD, 0xAB, 0x00, 0x00 }, b.ToArray()); b.Clear(); e.Constant((uint)0xABCD); AssertEx.Equal(new byte[] { 0xCD, 0xAB, 0x00, 0x00 }, b.ToArray()); b.Clear(); e.Constant(0x1122334455667788); AssertEx.Equal(new byte[] { 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11 }, b.ToArray()); b.Clear(); e.Constant(0xAABBCCDDEEFF1122); AssertEx.Equal(new byte[] { 0x22, 0x11, 0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAA }, b.ToArray()); b.Clear(); e.Constant(0.1f); AssertEx.Equal(new byte[] { 0xCD, 0xCC, 0xCC, 0x3D }, b.ToArray()); b.Clear(); e.Constant(0.1); AssertEx.Equal(new byte[] { 0x9A, 0x99, 0x99, 0x99, 0x99, 0x99, 0xB9, 0x3F }, b.ToArray()); b.Clear(); }