10 using kv_pair = pair<string, string>;
13 enable_if_t<is_integral_v<T>, T> random_num(T min, T max);
15 unsigned random_port();
17 char random_ascii(char min = '!', char max = '~');
18 string random_ascii_string(size_t len, char min = '!', char max = '~');
19 kv_pair random_ascii_pair(size_t minlen = 1<<2, size_t maxlen = 1<<10);
21 template<template <typename> class Container>
22 auto random_ascii_pairs(size_t count, size_t minlen = 1<<2, size_t maxlen = 1<<10) {
26 for (size_t i = 0; i < count; ++i) {
27 v.emplace_back(random_ascii_pair(minlen, maxlen));
33 string random_socket(const string &prefix = "/tmp/libmc.");
34 string random_socket_or_port_string(const string &what);
35 string random_socket_or_port_flag(const string &binary);
37 inline auto random_socket_or_port_arg() {
38 return make_pair(&random_socket_or_port_flag, &random_socket_or_port_string);