/* See LICENSE file for copyright and license details. */ #include "common.h" #ifndef TEST LIBNORMALFORM_SENTENCE * (libnormalform_ref)(LIBNORMALFORM_SENTENCE *this) { if (this) { if (this->refcount == SIZE_MAX) { errno = ENOMEM; return NULL; } this->refcount += 1; } return this; } #else int main(void) { TEST_BEGIN; LIBNORMALFORM_SENTENCE *a; errno = 0; ASSERT(!libnormalform_ref(NULL) && errno == 0); errno = 1; ASSERT(!libnormalform_ref(NULL) && errno == 1); ASSUME(a = libnormalform_true()); a->refcount = SIZE_MAX; errno = 0; ASSERT(!libnormalform_ref(a) && errno == ENOMEM); a->refcount -= 1; ASSERT(libnormalform_ref(a) == a); ASSERT(a->refcount == SIZE_MAX); a->refcount = 1; ASSERT(libnormalform_ref(a) == a); ASSERT(a->refcount == 2); ASSERT(libnormalform_ref(a) == a); ASSERT(a->refcount == 3); a->refcount = 1; libnormalform_free(a); TEST_END; } #endif