'RRDtool 1.9+', '1.10.0' => 'RRDtool 1.10+', '1.11.0' => 'RRDtool 1.11+', ]; expect(get_supported_rrdtool_version('1.11.0', $supported))->toBe('1.11.0') ->and(get_supported_rrdtool_version('1.10.3', $supported))->toBe('1.10.0') ->and(get_supported_rrdtool_version('1.9.0', $supported))->toBe('1.9.0'); }); test('future and unsupported releases map safely', function () { $supported = [ '1.5.0' => 'RRDtool 1.5+', '1.11.0' => 'RRDtool 1.11+', ]; expect(get_supported_rrdtool_version('1.12.0', $supported))->toBe('1.11.0') ->and(get_supported_rrdtool_version('1.4.9', $supported))->toBeFalse(); }); test('the configured capability list includes current rrdtool releases', function () { $rrdtool_versions = []; require dirname(__DIR__, 4) . '/include/global_arrays.php'; expect($rrdtool_versions['1.10.0'])->toBe('RRDtool 1.10+') ->and($rrdtool_versions['1.11.0'])->toBe('RRDtool 1.11+'); }); test('typed callers retain the configured capability when detection fails', function () { $installer = file_get_contents(dirname(__DIR__, 4) . '/lib/installer.php'); $boost = file_get_contents(dirname(__DIR__, 4) . '/poller_boost.php'); expect($installer)->not->toBeFalse() ->and($installer)->toContain('if ($detected_version === false)') ->toContain('$rrdver = get_rrdtool_version();') ->and($boost)->not->toBeFalse() ->and($boost)->toContain('if ($rrdtool_ins_version !== false &&') ->toContain('retaining the configured capability level'); });