CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
79 lines
1.8 KiB
C++
79 lines
1.8 KiB
C++
#include <stdlib.h>
|
|
|
|
#include <exception>
|
|
#include <sstream>
|
|
|
|
#include <isl/options.h>
|
|
#include <isl/cpp.h>
|
|
|
|
/* Throw a runtime exception.
|
|
*/
|
|
static void die_impl(const char *file, int line, const char *message)
|
|
{
|
|
std::ostringstream ss;
|
|
ss << file << ":" << line << ": " << message;
|
|
throw std::runtime_error(ss.str());
|
|
}
|
|
|
|
#define die(msg) die_impl(__FILE__, __LINE__, msg)
|
|
|
|
#include "isl_test_cpp17-generic.cc"
|
|
|
|
/* Check that an isl::exception_invalid gets thrown by "fn".
|
|
*/
|
|
static void check_invalid(const std::function<void(void)> &fn)
|
|
{
|
|
bool caught = false;
|
|
try {
|
|
fn();
|
|
} catch (const isl::exception_invalid &e) {
|
|
caught = true;
|
|
}
|
|
if (!caught)
|
|
die("no invalid exception was generated");
|
|
}
|
|
|
|
/* Test id::user.
|
|
*
|
|
* In particular, check that the object attached to an identifier
|
|
* can be retrieved again and that retrieving an object of the wrong type
|
|
* or retrieving an object when no object was attached results in an exception.
|
|
*/
|
|
static void test_user(isl::ctx ctx)
|
|
{
|
|
isl::id id(ctx, "test", 5);
|
|
isl::id id2(ctx, "test2");
|
|
isl::id id3(ctx, "test3", std::string("s"));
|
|
|
|
auto int_user = id.user<int>();
|
|
if (int_user != 5)
|
|
die("wrong integer retrieved from isl::id");
|
|
auto s_user = id3.user<std::string>();
|
|
if (s_user != "s")
|
|
die("wrong string retrieved from isl::id");
|
|
check_invalid([&id] () { id.user<std::string>(); });
|
|
check_invalid([&id2] () { id2.user<int>(); });
|
|
check_invalid([&id2] () { id2.user<std::string>(); });
|
|
check_invalid([&id3] () { id3.user<int>(); });
|
|
}
|
|
|
|
/* Test the C++17 specific features of the (unchecked) isl C++ interface
|
|
*
|
|
* In particular, test
|
|
* - id::try_user
|
|
* - id::user
|
|
*/
|
|
int main()
|
|
{
|
|
isl_ctx *ctx = isl_ctx_alloc();
|
|
|
|
isl_options_set_on_error(ctx, ISL_ON_ERROR_ABORT);
|
|
|
|
test_try_user(ctx);
|
|
test_user(ctx);
|
|
|
|
isl_ctx_free(ctx);
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|