mirror of
https://github.com/Z3Prover/z3
synced 2026-01-21 09:34:43 +00:00
68 lines
No EOL
1.7 KiB
C++
68 lines
No EOL
1.7 KiB
C++
/*++
|
|
Copyright (c) 2025 Daily Test Coverage Improver
|
|
|
|
Module Name:
|
|
|
|
api_datalog.cpp
|
|
|
|
Abstract:
|
|
|
|
Test API datalog/fixedpoint functions
|
|
|
|
Author:
|
|
|
|
Daily Test Coverage Improver 2025-09-17
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
#include "api/z3.h"
|
|
#include "util/trace.h"
|
|
#include "util/debug.h"
|
|
|
|
void tst_api_datalog() {
|
|
Z3_config cfg = Z3_mk_config();
|
|
Z3_context ctx = Z3_mk_context(cfg);
|
|
Z3_del_config(cfg);
|
|
|
|
// Test 1: Z3_mk_finite_domain_sort and size functions
|
|
{
|
|
Z3_symbol name = Z3_mk_string_symbol(ctx, "Domain");
|
|
Z3_sort finite_sort = Z3_mk_finite_domain_sort(ctx, name, 5);
|
|
ENSURE(finite_sort != nullptr);
|
|
|
|
uint64_t size;
|
|
bool success = Z3_get_finite_domain_sort_size(ctx, finite_sort, &size);
|
|
ENSURE(success);
|
|
ENSURE(size == 5);
|
|
|
|
// Test with non-finite domain sort (should fail)
|
|
Z3_sort int_sort = Z3_mk_int_sort(ctx);
|
|
uint64_t wrong_size;
|
|
bool wrong_success = Z3_get_finite_domain_sort_size(ctx, int_sort, &wrong_size);
|
|
ENSURE(!wrong_success);
|
|
}
|
|
|
|
// Test 2: Z3_mk_fixedpoint basic operations
|
|
{
|
|
Z3_fixedpoint fp = Z3_mk_fixedpoint(ctx);
|
|
ENSURE(fp != nullptr);
|
|
|
|
Z3_fixedpoint_inc_ref(ctx, fp);
|
|
// Test string conversion (empty fixedpoint)
|
|
Z3_string fp_str = Z3_fixedpoint_to_string(ctx, fp, 0, nullptr);
|
|
ENSURE(fp_str != nullptr);
|
|
|
|
// Test statistics
|
|
Z3_stats stats = Z3_fixedpoint_get_statistics(ctx, fp);
|
|
ENSURE(stats != nullptr);
|
|
|
|
// Test reason unknown
|
|
Z3_string reason = Z3_fixedpoint_get_reason_unknown(ctx, fp);
|
|
(void)reason; // May be null
|
|
|
|
Z3_fixedpoint_dec_ref(ctx, fp);
|
|
}
|
|
|
|
Z3_del_context(ctx);
|
|
} |