From 28b2ff3733c95006903ebb9a0c6d1e4274f4804d Mon Sep 17 00:00:00 2001 From: Dmitri Makarov Date: Sun, 20 Jun 2021 19:02:29 -0700 Subject: [PATCH] Add test for signed division in on-chain programs --- programs/bpf/c/src/float/float.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/programs/bpf/c/src/float/float.c b/programs/bpf/c/src/float/float.c index d20e63b49d..a270cfe319 100644 --- a/programs/bpf/c/src/float/float.c +++ b/programs/bpf/c/src/float/float.c @@ -12,8 +12,16 @@ extern uint64_t entrypoint(const uint8_t *input) { if (!sol_deserialize(input, ¶ms, SOL_ARRAY_SIZE(ka))) { return ERROR_INVALID_ARGUMENT; } + /* test float conversion to int compiles and works */ uint32_t *data = (uint32_t *)(params.ka[0].data); + uint32_t new_data = *data + 1; *data += 1.5; + sol_assert(*data == new_data); + + /* test signed division works for FP values */ + double value = (double)new_data + 1.0; + value /= -2.0; + sol_assert(value < 0.0); return SUCCESS; }