static bool TryFormatCore(ulong value, Span <byte> buffer, out int bytesWritten, TextFormat format, SymbolTable symbolTable)
        {
            symbolTable = symbolTable ?? SymbolTable.InvariantUtf8;

            if (symbolTable == SymbolTable.InvariantUtf8)
            {
                return(TryFormatInvariantUtf8(value, buffer, out bytesWritten, format));
            }
            else if (symbolTable == SymbolTable.InvariantUtf16)
            {
                return(TryFormatInvariantUtf16(value, buffer, out bytesWritten, format));
            }
            else
            {
                return(IntegerFormatter.TryFormatUInt64(value, buffer, out bytesWritten, format, symbolTable));
            }
        }
Beispiel #2
0
        static bool TryFormatCore(ulong value, Span <byte> buffer, out int bytesWritten, TextFormat format, TextEncoder encoder)
        {
            encoder = encoder == null ? TextEncoder.Utf8 : encoder;

            if (encoder.IsInvariantUtf8)
            {
                return(TryFormatInvariantUtf8(value, buffer, out bytesWritten, format));
            }
            else if (encoder.IsInvariantUtf16)
            {
                return(TryFormatInvariantUtf16(value, buffer, out bytesWritten, format));
            }
            else
            {
                return(IntegerFormatter.TryFormatUInt64(value, buffer, out bytesWritten, format, encoder));
            }
        }
Beispiel #3
0
        static bool TryFormatCore(long value, ulong mask, Span <byte> buffer, out int bytesWritten, TextFormat format, TextEncoder encoder)
        {
            encoder = encoder == null ? TextEncoder.Utf8 : encoder;
            if (format.IsDefault || format.Symbol == 'g')
            {
                format.Symbol = 'G';
            }

            if (encoder.IsInvariantUtf8)
            {
                return(TryFormatInvariantUtf8(value, mask, buffer, out bytesWritten, format));
            }
            else if (encoder.IsInvariantUtf16)
            {
                return(TryFormatInvariantUtf16(value, mask, buffer, out bytesWritten, format));
            }
            else
            {
                return(IntegerFormatter.TryFormatInt64(value, mask, buffer, out bytesWritten, format, encoder));
            }
        }
        static bool TryFormatCore(long value, ulong mask, Span <byte> buffer, out int bytesWritten, TextFormat format, SymbolTable symbolTable)
        {
            symbolTable = symbolTable ?? SymbolTable.InvariantUtf8;

            if (format.IsDefault || format.Symbol == 'g')
            {
                format.Symbol = 'G';
            }

            if (symbolTable == SymbolTable.InvariantUtf8)
            {
                return(TryFormatInvariantUtf8(value, mask, buffer, out bytesWritten, format));
            }
            else if (symbolTable == SymbolTable.InvariantUtf16)
            {
                return(TryFormatInvariantUtf16(value, mask, buffer, out bytesWritten, format));
            }
            else
            {
                return(IntegerFormatter.TryFormatInt64(value, mask, buffer, out bytesWritten, format, symbolTable));
            }
        }
Beispiel #5
0
 public static FormatterBase Create(string format)
 {
     if (TimeSpanFormatter.CanFormat(format))
     {
         return(new TimeSpanFormatter(format));
     }
     if (TimeStampFormatter.CanFormat(format))
     {
         return(new TimeStampFormatter(format));
     }
     if (DecibelFormatter.CanFormat(format))
     {
         return(new DecibelFormatter(format));
     }
     if (FloatFormatter.CanFormat(format))
     {
         return(new FloatFormatter(format));
     }
     if (IntegerFormatter.CanFormat(format))
     {
         return(new IntegerFormatter(format));
     }
     return(new StringFormatter(format));
 }
        public void FormatTest()
        {
            CultureInfo altCulture = CultureInfo.CreateSpecificCulture("en-US");
             altCulture.NumberFormat.NegativeSign = "!";
             altCulture.NumberFormat.NumberGroupSeparator = "#";
             IntegerFormatter target = new IntegerFormatter();

             Assert2.IsException(() => target.Format(null, 1, null), typeof(ArgumentException));

             string result = target.Format("i", 1, null);
             Assert.AreEqual("1", result);

             result = target.Format("I", 1, null);
             Assert.AreEqual("1", result);

             result = target.Format("i", 1000000, null);
             Assert.AreEqual("1,000,000", result);

             result = target.Format("i,", 1000000, null);
             Assert.AreEqual("1,000,000", result);

             result = target.Format("i-,", 1000000, null);
             Assert.AreEqual("1000000", result);

             result = target.Format("I", 1000000, null);
             Assert.AreEqual("1,000,000", result);

             result = target.Format("I,", 1000000, null);
             Assert.AreEqual("1,000,000", result);

             result = target.Format("I-,", 1000000, null);
             Assert.AreEqual("1000000", result);

             result = target.Format("i", -1000000, null);
             Assert.AreEqual("-1,000,000", result);

             result = target.Format("i-,", -1000000, null);
             Assert.AreEqual("-1000000", result);

             result = target.Format("I", 1, null);
             Assert.AreEqual("1", result);

             result = target.Format("I", 1000000, null);
             Assert.AreEqual("1,000,000", result);

             result = target.Format("I", -1000000, null);
             Assert.AreEqual("-1,000,000", result);

             result = target.Format("I", -1000000, altCulture);
             Assert.AreEqual("!1#000#000", result);

             result = target.Format("i,", -1000000, altCulture);
             Assert.AreEqual("!1#000#000", result);

             result = target.Format("i-,", -1000000, altCulture);
             Assert.AreEqual("!1000000", result);

             result = target.Format("I3", 1, null);
             Assert.AreEqual("001", result);

             result = target.Format("I1", 1, null);
             Assert.AreEqual("1", result);

             result = target.Format("I2", 1, null);
             Assert.AreEqual("01", result);

             result = target.Format("I3", 100, null);
             Assert.AreEqual("100", result);

             result = target.Format("i3", 1000, null);
             Assert.AreEqual("1,000", result);

             result = target.Format("I10", 1234, null);
             Assert.AreEqual("000001,234", result);

             result = target.Format("I", 100.50, null);
             Assert.AreEqual("100", result);

             result = target.Format("I", 1000.5, null);
             Assert.AreEqual("1,000", result);

             result = target.Format("I", 1000.6, null);   // conversion from decimal using Convert.ToInt64 performs rounding.
             Assert.AreEqual("1,001", result);
        }