aboutsummaryrefslogtreecommitdiffstats
path: root/ydb/core/erasure/ut_util.h
blob: b5ba9a6bbb79266cfd56879353e35bfeb0b7a2a1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#pragma once 
 
#include <library/cpp/testing/unittest/registar.h> 
#include <util/random/entropy.h> 
#include <util/random/mersenne64.h> 
#include <util/stream/null.h>
#include <util/string/printf.h> 
 
IOutputStream& Ctest = Cnull;
 
#define VERBOSE_COUT(a) Ctest << a
 
inline TString PrintArr(ui32 *arr, ui32 n) {
    TStringStream out; 
    if (n == 0) { 
        out << "-"; 
    } 
    for (ui32 i = 0; i < n; ++i) { 
        out << arr[i] << " "; 
    } 
    out << Endl; 
    return out.Str(); 
} 
 
inline const char *BoolToStr(bool val) {
    return val ? "true " : "false"; 
} 
 
inline ui32 Fact(ui32 n) { 
    ui32 res = 1; 
    while (n > 1) { 
        res *= n; 
        n--; 
    } 
    return res; 
} 
 
inline void GenFirstCombination(ui32 *variants, ui32 const k) { 
    for (ui32 i = 0; i < k; ++i) { 
        variants[i] = i; 
    } 
} 
 
inline void GenNextCombination(ui32 *variants, ui32 const k, ui32 const n) { 
    for (ui32 i = k-1; i != (ui32)-1; --i) { 
        if ( variants[i] < n - 1 - (k - 1 - i)) { 
            ui32 tmp = ++variants[i]; 
            for (ui32 j = i+1; j < k; ++j) { 
                variants[j] = ++tmp; 
            } 
            break; 
        } 
    } 
} 
 
inline TString GenerateRandomString(NPrivate::TMersenne64 &randGen, size_t dataSize) { 
    TString testString; 
    testString.resize(dataSize); 
    char *writePosChar = (char *)testString.data(); 
    ui32 charParts = testString.size() % sizeof(ui64); 
    for (ui32 i = 0; i < charParts; ++i) { 
        writePosChar[i] = (char)randGen.GenRand(); 
    } 
    ui64 *writePos64 = (ui64 *)writePosChar; 
    ui32 ui64Parts = testString.size() / sizeof(ui64); 
    for (ui32 i = 0; i < ui64Parts; ++i) { 
        writePos64[i] = randGen.GenRand(); 
    } 
    return testString; 
}