'1.25', 'rrd_system' => '2.5', 'rrd_real' => '3.75', 'rrd_files' => '4', 'dsses' => '5', ]; expect(dsstats_fetch_statistics_totals_under_test('%child_2%'))->toBe([ 'rrd_user' => 1.25, 'rrd_system' => 2.5, 'rrd_real' => 3.75, 'rrd_files' => 4.0, 'dsses' => 5.0, ]) ->and($GLOBALS['dsstats_statistics_queries'])->toHaveCount(1) ->and($GLOBALS['dsstats_statistics_queries'][0][0])->toContain('SUM(CASE WHEN name LIKE ? THEN value END)') ->and($GLOBALS['dsstats_statistics_queries'][0][1])->toBe([ 'dsstats_rrd_user_%child_2%', 'dsstats_rrd_system_%child_2%', 'dsstats_rrd_real_%child_2%', 'dsstats_total_rrds_%child_2%', 'dsstats_total_dsses_%child_2%', ]); }); test('missing aggregate values are normalized to numeric zero', function () { expect(dsstats_fetch_statistics_totals_under_test('%bchild%'))->toBe([ 'rrd_user' => 0.0, 'rrd_system' => 0.0, 'rrd_real' => 0.0, 'rrd_files' => 0.0, 'dsses' => 0.0, ]); });