public void FormatDecimal(string input, string output, byte scale, int groupingSize, Padding padding, bool zerofill) { var value = Decimal.Parse(input); var expected = Encoding.ASCII.GetBytes(output); var buffer = new byte[expected.Length]; NumberByteHelper.FormatDecimal(buffer, 0, buffer.Length, value, scale, groupingSize, padding, zerofill, (byte)' '); Assert.Equal(expected, buffer); }
public void ParseDecimal(bool result, string input, string output) { var buffer = Encoding.ASCII.GetBytes(input); var ret = NumberByteHelper.TryParseDecimal(buffer, 0, buffer.Length, 0x20, out var value); Assert.Equal(result, ret); if (result) { var dec = Decimal.Parse((output ?? input).Trim()); Assert.Equal(dec, value); } }
public void FormatInteger() { // Default var buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, 1234567890123456789L, Padding.Left, false, 0x20); Assert.Equal(" 1234567890123456789", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, 1234567890123456789L, Padding.Left, true, 0x20); Assert.Equal("0001234567890123456789", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, 1234567890123456789L, Padding.Right, false, 0x20); Assert.Equal("1234567890123456789 ", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); // Negative buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, -1234567890123456789L, Padding.Left, false, 0x20); Assert.Equal(" -1234567890123456789", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, -1234567890123456789L, Padding.Left, true, 0x20); Assert.Equal("-001234567890123456789", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, -1234567890123456789L, Padding.Right, false, 0x20); Assert.Equal("-1234567890123456789 ", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); // Max value buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, Int64.MaxValue, Padding.Left, false, 0x20); Assert.Equal($"{Int64.MaxValue, 22}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, Int64.MaxValue, Padding.Left, true, 0x20); Assert.Equal($"{Int64.MaxValue, 22:D22}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, Int64.MaxValue, Padding.Right, false, 0x20); Assert.Equal($"{Int64.MaxValue, -22}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); // Min value buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, Int64.MinValue, Padding.Left, false, 0x20); Assert.Equal($"{Int64.MinValue, 22}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, Int64.MinValue, Padding.Left, true, 0x20); Assert.Equal($"{Int64.MinValue, 22:D21}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[22]; NumberByteHelper.FormatInt64(buffer, 0, buffer.Length, Int64.MinValue, Padding.Right, false, 0x20); Assert.Equal($"{Int64.MinValue, -22}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); // Int16 // Max value buffer = new byte[9]; NumberByteHelper.FormatInt16(buffer, 0, buffer.Length, Int16.MaxValue, Padding.Left, false, 0x20); Assert.Equal($"{Int16.MaxValue, 9}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[9]; NumberByteHelper.FormatInt16(buffer, 0, buffer.Length, Int16.MaxValue, Padding.Left, true, 0x20); Assert.Equal($"{Int16.MaxValue, 9:D9}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[9]; NumberByteHelper.FormatInt16(buffer, 0, buffer.Length, Int16.MaxValue, Padding.Right, false, 0x20); Assert.Equal($"{Int16.MaxValue, -9}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); // Min value buffer = new byte[9]; NumberByteHelper.FormatInt16(buffer, 0, buffer.Length, Int16.MinValue, Padding.Left, false, 0x20); Assert.Equal($"{Int16.MinValue, 9}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[9]; NumberByteHelper.FormatInt16(buffer, 0, buffer.Length, Int16.MinValue, Padding.Left, true, 0x20); Assert.Equal($"{Int16.MinValue, 9:D8}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[9]; NumberByteHelper.FormatInt16(buffer, 0, buffer.Length, Int16.MinValue, Padding.Right, false, 0x20); Assert.Equal($"{Int16.MinValue, -9}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); // Int32 // Max value buffer = new byte[12]; NumberByteHelper.FormatInt32(buffer, 0, buffer.Length, Int32.MaxValue, Padding.Left, false, 0x20); Assert.Equal($"{Int32.MaxValue, 12}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[12]; NumberByteHelper.FormatInt32(buffer, 0, buffer.Length, Int32.MaxValue, Padding.Left, true, 0x20); Assert.Equal($"{Int32.MaxValue, 12:D12}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[12]; NumberByteHelper.FormatInt32(buffer, 0, buffer.Length, Int32.MaxValue, Padding.Right, false, 0x20); Assert.Equal($"{Int32.MaxValue, -12}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); // Min value buffer = new byte[12]; NumberByteHelper.FormatInt32(buffer, 0, buffer.Length, Int32.MinValue, Padding.Left, false, 0x20); Assert.Equal($"{Int32.MinValue, 12}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[12]; NumberByteHelper.FormatInt32(buffer, 0, buffer.Length, Int32.MinValue, Padding.Left, true, 0x20); Assert.Equal($"{Int32.MinValue, 12:D11}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); buffer = new byte[12]; NumberByteHelper.FormatInt32(buffer, 0, buffer.Length, Int32.MinValue, Padding.Right, false, 0x20); Assert.Equal($"{Int32.MinValue, -12}", Encoding.ASCII.GetString(buffer, 0, buffer.Length)); }
public void ParseInteger() { // Default var buffer = Encoding.ASCII.GetBytes("1234567890123456789"); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out var value)); Assert.Equal(1234567890123456789L, value); // Negative buffer = Encoding.ASCII.GetBytes("-1234567890123456789"); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); Assert.Equal(-1234567890123456789L, value); // Padded buffer = Encoding.ASCII.GetBytes("0001234567890123456789"); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); Assert.Equal(1234567890123456789L, value); // Padded Negative buffer = Encoding.ASCII.GetBytes("-0001234567890123456789"); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); Assert.Equal(-1234567890123456789L, value); // Zero buffer = Encoding.ASCII.GetBytes("0"); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); Assert.Equal(0L, value); // Minus zero buffer = Encoding.ASCII.GetBytes("-0"); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); Assert.Equal(0L, value); // Max value buffer = Encoding.ASCII.GetBytes(Int64.MaxValue.ToString(CultureInfo.InvariantCulture)); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); Assert.Equal(Int64.MaxValue, value); // Min value buffer = Encoding.ASCII.GetBytes(Int64.MinValue.ToString(CultureInfo.InvariantCulture)); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); Assert.Equal(Int64.MinValue, value); // Trim buffer = Encoding.ASCII.GetBytes(" 1234567890123456789 "); Assert.True(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); Assert.Equal(1234567890123456789L, value); // Int16 buffer = Encoding.ASCII.GetBytes(Int16.MaxValue.ToString(CultureInfo.InvariantCulture)); Assert.True(NumberByteHelper.TryParseInt16(buffer, 0, buffer.Length, 0x20, out var shortValue)); Assert.Equal(Int16.MaxValue, shortValue); buffer = Encoding.ASCII.GetBytes(Int16.MinValue.ToString(CultureInfo.InvariantCulture)); Assert.True(NumberByteHelper.TryParseInt16(buffer, 0, buffer.Length, 0x20, out shortValue)); Assert.Equal(Int16.MinValue, shortValue); // Int32 buffer = Encoding.ASCII.GetBytes(Int32.MaxValue.ToString(CultureInfo.InvariantCulture)); Assert.True(NumberByteHelper.TryParseInt32(buffer, 0, buffer.Length, 0x20, out var intValue)); Assert.Equal(Int32.MaxValue, intValue); buffer = Encoding.ASCII.GetBytes(Int32.MinValue.ToString(CultureInfo.InvariantCulture)); Assert.True(NumberByteHelper.TryParseInt32(buffer, 0, buffer.Length, 0x20, out intValue)); Assert.Equal(Int32.MinValue, intValue); // Failed // Empty buffer = Encoding.ASCII.GetBytes(" "); Assert.False(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); // Invalid Value buffer = Encoding.ASCII.GetBytes("1234567890 123456789"); Assert.False(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); buffer = Encoding.ASCII.GetBytes("a1234567890123456789"); Assert.False(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); buffer = Encoding.ASCII.GetBytes("1234567890123456789a"); Assert.False(NumberByteHelper.TryParseInt64(buffer, 0, buffer.Length, 0x20, out value)); }