mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-28 00:02:28 +00:00
Get GNU MPFR and MPC tests to pass
This change fixes more issues with our scanf() function.
This commit is contained in:
parent
63a1636e1f
commit
6ef2a471e4
37 changed files with 389 additions and 865 deletions
|
@ -17,8 +17,10 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/dce.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/xasprintf.h"
|
||||
|
||||
TEST(fprintf, testWriteError) {
|
||||
// Only Linux, NetBSD and FreeBSD are known to have /dev/full
|
||||
|
@ -32,3 +34,8 @@ TEST(fprintf, testWriteError) {
|
|||
|
||||
ASSERT_EQ(fclose(fp), 0);
|
||||
}
|
||||
|
||||
TEST(fun, test) {
|
||||
ASSERT_STREQ("-0x1.4p+0", gc(xasprintf("%a", -1.25)));
|
||||
ASSERT_STREQ("0x1p-17", gc(xasprintf("%a", 7.62939453125e-6)));
|
||||
}
|
||||
|
|
|
@ -284,3 +284,55 @@ TEST(sscanf, eofConditions) {
|
|||
EXPECT_EQ(-1, sscanf("123", "%*d%n", &x));
|
||||
EXPECT_EQ(666, x);
|
||||
}
|
||||
|
||||
TEST(sscanf, decimal) {
|
||||
int x = 666;
|
||||
int y = 666;
|
||||
EXPECT_EQ(1, sscanf("019", "%d%d", &x, &y));
|
||||
EXPECT_EQ(19, x);
|
||||
EXPECT_EQ(666, y);
|
||||
}
|
||||
|
||||
TEST(sscanf, octal) {
|
||||
int x = 666;
|
||||
int y = 666;
|
||||
EXPECT_EQ(2, sscanf("019", "%o%d", &x, &y));
|
||||
EXPECT_EQ(1, x);
|
||||
EXPECT_EQ(9, y);
|
||||
}
|
||||
|
||||
TEST(sscanf, flexdecimal_octal) {
|
||||
int x = 666;
|
||||
int y = 666;
|
||||
EXPECT_EQ(2, sscanf("019", "%i%d", &x, &y));
|
||||
EXPECT_EQ(1, x);
|
||||
EXPECT_EQ(9, y);
|
||||
}
|
||||
|
||||
TEST(sscanf, flexdecimal_decimal) {
|
||||
int x = 666;
|
||||
int y = 666;
|
||||
EXPECT_EQ(1, sscanf("109a", "%i%d", &x, &y));
|
||||
EXPECT_EQ(109, x);
|
||||
EXPECT_EQ(666, y);
|
||||
}
|
||||
|
||||
TEST(sscanf, flexdecimal_hex) {
|
||||
int x = 666;
|
||||
int y = 666;
|
||||
EXPECT_EQ(1, sscanf("0x19a", "%i%d", &x, &y));
|
||||
EXPECT_EQ(0x19a, x);
|
||||
EXPECT_EQ(666, y);
|
||||
}
|
||||
|
||||
TEST(sscanf, luplus) {
|
||||
long x = 666;
|
||||
EXPECT_EQ(1, sscanf("+123", "%lu", &x));
|
||||
EXPECT_EQ(123, x);
|
||||
}
|
||||
|
||||
TEST(sscanf, lupluser) {
|
||||
long x = 666;
|
||||
EXPECT_EQ(1, sscanf("+123", "%li", &x));
|
||||
EXPECT_EQ(123, x);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue