skip to content
==> tests/pipedemo.c <==
1/* The Rust's pipedemo_tests::sha256d_of_a_known_message, ported. */
2#include "mesh/abi/view_pipedemo.h"
3#include "hist_quantile.h"
4#include "mesh/check.h"
5
6int main(void) {
7    /* sha256(sha256(64 zero bytes)) = e2f61c3f71d1defd... (Python hashlib). */
8    uint32_t zero[16] = {0}, d[8], m[16];
9    mesh_pipedemo_sha256d_msg(zero, d);
10    CHECK_U(d[0], 0xe2f61c3fu);
11    CHECK_U(d[1], 0x71d1defdu);
12    CHECK_U(d[7], 0x974e8cf9u);
13    mesh_pipedemo_msg(7, UINT64_C(0x100000002), MESH_PIPEDEMO_ORIGIN_WASM, m);
14    CHECK_U(m[MESH_PIPEDEMO_R_SEQ], 7);
15    CHECK_U(m[MESH_PIPEDEMO_R_STAMP_LO], 2);
16    CHECK_U(m[MESH_PIPEDEMO_R_STAMP_HI], 1);
17    CHECK_U(m[MESH_PIPEDEMO_R_ORIGIN], 1);
18    CHECK_U(m[15], mesh_pipedemo_payload(7, 15));
19    const uint32_t h1[4] = {0, 2, 1, 1}, h0[4] = {0};
20    CHECK_U(hist_quantile(h1, 4, 500), 1);
21    CHECK_U(hist_quantile(h1, 4, 990), 3);
22    CHECK_U(hist_quantile(h0, 4, 500), 0);
23    return mesh_check_done();
24}