#include #include "nix/store/tests/path.hh" #include "nix/expr/tests/value/context.hh" namespace rc { using namespace nix; Gen Arbitrary::arbitrary() { return gen::map(gen::arbitrary(), [](StorePath drvPath) { return NixStringContextElem::DrvDeep{ .drvPath = drvPath, }; }); } Gen Arbitrary::arbitrary() { return gen::map(gen::arbitrary(), [](StorePath storePath) { return NixStringContextElem::Path{ .storePath = storePath, }; }); } Gen Arbitrary::arbitrary() { return gen::mapcat( gen::inRange(0, std::variant_size_v), [](uint8_t n) -> Gen { switch (n) { case 0: return gen::map( gen::arbitrary(), [](NixStringContextElem a) { return a; }); case 1: return gen::map( gen::arbitrary(), [](NixStringContextElem a) { return a; }); case 2: return gen::map( gen::arbitrary(), [](NixStringContextElem a) { return a; }); case 3: return gen::map( gen::arbitrary(), [](NixStringContextElem a) { return a; }); default: assert(false); } }); } }