MCPcopy Create free account
hub / github.com/ElementsProject/lightning / bad_programmer

Function bad_programmer

common/test/run-param.c:346–408  ·  view source on GitHub ↗

* Check to make sure there are no programming mistakes. */

Source from the content-addressed store, hash-verified

344 * Check to make sure there are no programming mistakes.
345 */
346static void bad_programmer(void)
347{
348 u64 *ival;
349 u64 *ival2;
350 u64 *fpval;
351 struct json *j = json_parse(cmd, "[ '25', '546', '26' ]");
352
353 /* Usage mode makes it check parameters are sane */
354 cmd->mode = CMD_USAGE;
355
356 /* check for repeated names */
357 paramcheck_assert_failed = false;
358 param(cmd, j->buffer, j->toks,
359 p_req("repeat", param_u64, &ival),
360 p_req("fp", param_millionths, &fpval),
361 p_req("repeat", param_u64, &ival2), NULL);
362 assert(paramcheck_assert_failed);
363
364 paramcheck_assert_failed = false;
365 param(cmd, j->buffer, j->toks,
366 p_req("repeat", param_u64, &ival),
367 p_req("fp", param_millionths, &fpval),
368 p_req("repeat", param_u64, &ival), NULL);
369 assert(paramcheck_assert_failed);
370
371 paramcheck_assert_failed = false;
372 param(cmd, j->buffer, j->toks,
373 p_req("u64", param_u64, &ival),
374 p_req("repeat", param_millionths, &fpval),
375 p_req("repeat", param_millionths, &fpval), NULL);
376 assert(paramcheck_assert_failed);
377
378 /* UBSan gets upset with doing arith on NULL pointers, inside
379 * the p_req macro, so we do it raw here */
380#define p_req_raw(name, cbx, arg) \
381 name"", \
382 PARAM_REQUIRED, \
383 NULL, NULL, \
384 (param_cbx)(cbx), \
385 (arg)
386
387 paramcheck_assert_failed = false;
388 param(cmd, j->buffer, j->toks,
389 p_req_raw("u64", NULL, NULL), NULL);
390 assert(paramcheck_assert_failed);
391
392 /* Add required param after optional */
393 j = json_parse(cmd, "[ '25', '546', '26', '1.1' ]");
394 unsigned int *msatoshi;
395 u64 *riskfactor_millionths;
396 paramcheck_assert_failed = false;
397 param(
398 cmd, j->buffer, j->toks, p_req("u64", param_u64, &ival),
399 p_req("fp", param_millionths, &fpval),
400 p_opt_def("msatoshi", param_number, &msatoshi, 100),
401 p_req("riskfactor", param_millionths, &riskfactor_millionths),
402 NULL);
403 assert(*msatoshi);

Callers 1

mainFunction · 0.85

Calls 2

json_parseFunction · 0.70
paramClass · 0.70

Tested by

no test coverage detected