red1bluelost's picture
Adds contraint tests for cpp.
9fdbbcb
test_cases = [
{
"predictions": [
[
{
"base": r"""
template <typename T>
bool has_close_elements(T numbers, float threshold) {
for (int i = 0; i < numbers.size(); i++)
for (int j = i + 1; j < numbers.size(); j++)
if (std::abs(numbers[i] - numbers[j]) < threshold)
return true;
return false;
}
""",
"sfinae": r"""
template <
typename T,
std::enable_if_t<std::is_same_v<typename T::value_type, float>, int> = 0>
bool has_close_elements(T numbers, float threshold) {
for (int i = 0; i < numbers.size(); i++)
for (int j = i + 1; j < numbers.size(); j++)
if (std::abs(numbers[i] - numbers[j]) < threshold)
return true;
return false;
}
""",
"concepts": r"""
template <typename T>
requires std::same_as<typename T::value_type, float>
bool has_close_elements(T numbers, float threshold) {
for (int i = 0; i < numbers.size(); i++)
for (int j = i + 1; j < numbers.size(); j++)
if (std::abs(numbers[i] - numbers[j]) < threshold)
return true;
return false;
}
""",
}
]
],
"references": [
{
"tests": r"""
#define ASSERT(...) \
do { \
if (!(__VA_ARGS__)) { \
std::exit(-1); \
} \
} while (false)
#define TEST_ON_TYPE(_type_) \
do { \
_type_ a = {1.0, 2.0, 3.9, 4.0, 5.0, 2.2}; \
ASSERT(has_close_elements(a, 0.3) == true); \
ASSERT(has_close_elements(a, 0.05) == false); \
ASSERT(has_close_elements(_type_{1.0, 2.0, 5.9, 4.0, 5.0}, 0.95) == true); \
ASSERT(has_close_elements(_type_{1.0, 2.0, 5.9, 4.0, 5.0}, 0.8) == false); \
ASSERT(has_close_elements(_type_{1.0, 2.0, 3.0, 4.0, 5.0}, 2.0) == true); \
ASSERT(has_close_elements(_type_{1.1, 2.2, 3.1, 4.1, 5.1}, 1.0) == true); \
ASSERT(has_close_elements(_type_{1.1, 2.2, 3.1, 4.1, 5.1}, 0.5) == false); \
} while (false)
int main() {
TEST_ON_TYPE(std::vector<float>);
TEST_ON_TYPE(std::deque<float>);
}
""",
"invalids": r"""
int main() {
std::string s{};
has_close_elements(s, 3.4);
}
""",
}
],
"result": {
"base_run_passed@1": 1.0,
"base_run_compiled@1": 1.0,
"sfinae_run_passed@1": 1.0,
"sfinae_run_compiled@1": 1.0,
"concepts_run_passed@1": 1.0,
"concepts_run_compiled@1": 1.0,
},
},
]