@@ -511,6 +511,89 @@ let tests = testList "Strings" [
511511 String.Format(CultureInfo.InvariantCulture, "{0:P2}", 0.1234) |> equal "12.34 %"
512512 String.Format(CultureInfo.InvariantCulture, "{0:C2}", 1000) |> equal "¤1,000.00"
513513
514+ testCase "x and X format specifiers work with no defined precision" <| fun () ->
515+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 0) |> equal "0"
516+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 0u) |> equal "0"
517+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 0l) |> equal "0"
518+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 0UL) |> equal "0"
519+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 0L) |> equal "0"
520+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 1) |> equal "1"
521+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 1u) |> equal "1"
522+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 1l) |> equal "1"
523+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 1UL) |> equal "1"
524+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 1L) |> equal "1"
525+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 8) |> equal "8"
526+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 8u) |> equal "8"
527+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 8l) |> equal "8"
528+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 8UL) |> equal "8"
529+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 8L) |> equal "8"
530+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 15) |> equal "f"
531+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 15) |> equal "F"
532+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 15u) |> equal "f"
533+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 15u) |> equal "F"
534+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 15l) |> equal "f"
535+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 15l) |> equal "F"
536+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 15UL) |> equal "f"
537+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 15UL) |> equal "F"
538+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 15L) |> equal "f"
539+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 15L) |> equal "F"
540+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 16) |> equal "10"
541+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 16u) |> equal "10"
542+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 16l) |> equal "10"
543+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 16UL) |> equal "10"
544+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 16L) |> equal "10"
545+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 26) |> equal "1a"
546+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 26) |> equal "1A"
547+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 26u) |> equal "1a"
548+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 26u) |> equal "1A"
549+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 26l) |> equal "1a"
550+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 26l) |> equal "1A"
551+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 26UL) |> equal "1a"
552+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 26UL) |> equal "1A"
553+ String.Format(CultureInfo.InvariantCulture, "{0:x}", 26L) |> equal "1a"
554+ String.Format(CultureInfo.InvariantCulture, "{0:X}", 26L) |> equal "1A"
555+
556+ (0).ToString("X") |> equal "0"
557+ (0u).ToString("X") |> equal "0"
558+ (0l).ToString("X") |> equal "0"
559+ (0UL).ToString("X") |> equal "0"
560+ (0L).ToString("X") |> equal "0"
561+ (1).ToString("X") |> equal "1"
562+ (1u).ToString("X") |> equal "1"
563+ (1l).ToString("X") |> equal "1"
564+ (1UL).ToString("X") |> equal "1"
565+ (1L).ToString("X") |> equal "1"
566+ (8).ToString("X") |> equal "8"
567+ (8u).ToString("X") |> equal "8"
568+ (8l).ToString("X") |> equal "8"
569+ (8UL).ToString("X") |> equal "8"
570+ (8L).ToString("X") |> equal "8"
571+ (15).ToString("x") |> equal "f"
572+ (15).ToString("X") |> equal "F"
573+ (15u).ToString("x") |> equal "f"
574+ (15u).ToString("X") |> equal "F"
575+ (15l).ToString("x") |> equal "f"
576+ (15l).ToString("X") |> equal "F"
577+ (15UL).ToString("x") |> equal "f"
578+ (15UL).ToString("X") |> equal "F"
579+ (15L).ToString("x") |> equal "f"
580+ (15L).ToString("X") |> equal "F"
581+ (16).ToString("X") |> equal "10"
582+ (16u).ToString("X") |> equal "10"
583+ (16l).ToString("X") |> equal "10"
584+ (16UL).ToString("X") |> equal "10"
585+ (16L).ToString("X") |> equal "10"
586+ (26).ToString("x") |> equal "1a"
587+ (26).ToString("X") |> equal "1A"
588+ (26u).ToString("x") |> equal "1a"
589+ (26u).ToString("X") |> equal "1A"
590+ (26l).ToString("x") |> equal "1a"
591+ (26l).ToString("X") |> equal "1A"
592+ (26UL).ToString("x") |> equal "1a"
593+ (26UL).ToString("X") |> equal "1A"
594+ (26L).ToString("x") |> equal "1a"
595+ (26L).ToString("X") |> equal "1A"
596+
514597 testCase "ToString formatted works with decimals" <| fun () -> // See #2276
515598 let decimal = 78.6M
516599 decimal.ToString("0.000").Replace(",", ".") |> equal "78.600"
0 commit comments