aboutsummaryrefslogtreecommitdiff
path: root/lib/std/fmt/parse_float.zig
diff options
context:
space:
mode:
authorAndreas Reischuck <andreas.reischuck@hicknhack-software.com>2022-05-27 04:05:53 +0200
committerGitHub <noreply@github.com>2022-05-26 22:05:53 -0400
commit5a8b6149fb0f09d4e221f482b1de225f76bd1840 (patch)
tree6875a8a4a34d6ac64c8e384810633e03d4bbe2b5 /lib/std/fmt/parse_float.zig
parent41162ed6467f7e157cc0a45154647dd93bcd2e74 (diff)
downloadzig-5a8b6149fb0f09d4e221f482b1de225f76bd1840.tar.gz
zig-5a8b6149fb0f09d4e221f482b1de225f76bd1840.zip
add more corner case tests to float_parse (#11727)
also drop some unused constants Co-authored-by: Andrew Kelley <andrew@ziglang.org>
Diffstat (limited to 'lib/std/fmt/parse_float.zig')
-rw-r--r--lib/std/fmt/parse_float.zig10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/std/fmt/parse_float.zig b/lib/std/fmt/parse_float.zig
index 44b6fb2fc0..3013ca7865 100644
--- a/lib/std/fmt/parse_float.zig
+++ b/lib/std/fmt/parse_float.zig
@@ -57,6 +57,16 @@ test "fmt.parseFloat" {
try expect(approxEqAbs(T, try parseFloat(T, "1e-2"), 0.01, epsilon));
try expect(approxEqAbs(T, try parseFloat(T, "1234e-2"), 12.34, epsilon));
+ try expect(approxEqAbs(T, try parseFloat(T, "1."), 1, epsilon));
+ try expect(approxEqAbs(T, try parseFloat(T, "0."), 0, epsilon));
+ try expect(approxEqAbs(T, try parseFloat(T, ".1"), 0.1, epsilon));
+ try expect(approxEqAbs(T, try parseFloat(T, ".0"), 0, epsilon));
+ try expect(approxEqAbs(T, try parseFloat(T, ".1e-1"), 0.01, epsilon));
+
+ try expectError(error.InvalidCharacter, parseFloat(T, ".")); // At least one digit is required.
+ try expectError(error.InvalidCharacter, parseFloat(T, ".e1")); // At least one digit is required.
+ try expectError(error.InvalidCharacter, parseFloat(T, "0.e")); // At least one digit is required.
+
try expect(approxEqAbs(T, try parseFloat(T, "123142.1"), 123142.1, epsilon));
try expect(approxEqAbs(T, try parseFloat(T, "-123142.1124"), @as(T, -123142.1124), epsilon));
try expect(approxEqAbs(T, try parseFloat(T, "0.7062146892655368"), @as(T, 0.7062146892655368), epsilon));