/* $Id: cpl_framedata-test.c,v 1.3 2007/07/16 09:09:04 llundin Exp $ * * This file is part of the ESO Common Pipeline Library * Copyright (C) 2001-2006 European Southern Observatory * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * $Author: llundin $ * $Date: 2007/07/16 09:09:04 $ * $Revision: 1.3 $ * $Name: $ */ #undef CX_DISABLE_ASSERT #undef CX_LOG_DOMAIN #include #include #include #include "cpl_init.h" #include "cpl_framedata.h" int main(void) { const cxchar* tags[] = {"One", "Two"}; const cxchar* tag = NULL; cpl_error_code status = 0; cpl_framedata* framedata = NULL; cpl_framedata* _framedata = NULL; cpl_init(CPL_INIT_DEFAULT); /* * Test 1: Create a framedata object, check its validity and destroy it * again. */ framedata = cpl_framedata_new(); cx_assert(framedata != NULL); cx_assert(cpl_framedata_get_tag(framedata) == NULL); cx_assert(cpl_framedata_get_min_count(framedata) == -1); cx_assert(cpl_framedata_get_max_count(framedata) == -1); cpl_framedata_delete(framedata); framedata = NULL; /* * Test 2: Create a framedata object with given initializers, check * its validity and destroy it again. */ framedata = cpl_framedata_create(tags[0], 0, 5); cx_assert(framedata != NULL); cx_assert(cpl_framedata_get_tag(framedata) != tags[0]); cx_assert(strcmp(cpl_framedata_get_tag(framedata), tags[0]) == 0); cx_assert(cpl_framedata_get_min_count(framedata) == 0); cx_assert(cpl_framedata_get_max_count(framedata) == 5); cpl_framedata_delete(framedata); framedata = NULL; /* * Test 3: Clone a framedata object and check that both objecta are * identical. */ framedata = cpl_framedata_create(tags[1], 5, -1); cx_assert(framedata != NULL); _framedata = cpl_framedata_duplicate(framedata); cx_assert(_framedata != NULL); cx_assert(cpl_framedata_get_tag(framedata) != cpl_framedata_get_tag(_framedata)); cx_assert(strcmp(cpl_framedata_get_tag(framedata), cpl_framedata_get_tag(_framedata)) == 0); cx_assert(cpl_framedata_get_min_count(framedata) == cpl_framedata_get_min_count(_framedata)); cx_assert(cpl_framedata_get_max_count(framedata) == cpl_framedata_get_max_count(_framedata)); cpl_framedata_delete(_framedata); _framedata = NULL; cpl_framedata_delete(framedata); framedata = NULL; /* * Test 4: Clear a framedata object and check that it is in its * default state. */ framedata = cpl_framedata_create(tags[1], 5, -1); cx_assert(framedata != NULL); cpl_framedata_clear(framedata); cx_assert(cpl_framedata_get_tag(framedata) == NULL); cx_assert(cpl_framedata_get_min_count(framedata) == -1); cx_assert(cpl_framedata_get_max_count(framedata) == -1); cpl_framedata_delete(framedata); framedata = NULL; /* * Test 5: Create a framedata object modify its contents, and verify it. */ framedata = cpl_framedata_create(tags[0], 0, -1); cx_assert(framedata != NULL); cpl_framedata_set_tag(framedata, tags[1]); cx_assert(cpl_framedata_get_tag(framedata) != tags[1]); cx_assert(strcmp(cpl_framedata_get_tag(framedata), tags[1]) == 0); cpl_framedata_set_min_count(framedata, 3); cx_assert(cpl_framedata_get_min_count(framedata) == 3); cpl_framedata_set_max_count(framedata, 5); cx_assert(cpl_framedata_get_max_count(framedata) == 5); cpl_framedata_set(framedata, tags[0], 0, -1); cx_assert(cpl_framedata_get_tag(framedata) != tags[0]); cx_assert(strcmp(cpl_framedata_get_tag(framedata), tags[0]) == 0); cx_assert(cpl_framedata_get_min_count(framedata) == 0); cx_assert(cpl_framedata_get_max_count(framedata) == -1); cpl_framedata_delete(framedata); framedata = NULL; /* * Test 5: Check error codes set by the member functions. */ cpl_error_reset(); framedata = cpl_framedata_create(NULL, 0, -1); cx_assert(cpl_error_get_code() == CPL_ERROR_NONE); cx_assert(cpl_framedata_get_tag(framedata) == NULL); cpl_framedata_delete(framedata); framedata = NULL; cpl_error_reset(); framedata = cpl_framedata_duplicate(NULL); cx_assert(framedata == NULL); cx_assert(cpl_error_get_code() == CPL_ERROR_NULL_INPUT); cpl_error_reset(); tag = cpl_framedata_get_tag(NULL); cx_assert(tag == NULL); cx_assert(cpl_error_get_code() == CPL_ERROR_NULL_INPUT); cpl_error_reset(); cpl_framedata_get_min_count(NULL); cx_assert(cpl_error_get_code() == CPL_ERROR_NULL_INPUT); cpl_error_reset(); cpl_framedata_get_max_count(NULL); cx_assert(cpl_error_get_code() == CPL_ERROR_NULL_INPUT); framedata = cpl_framedata_new(); cx_assert(framedata != NULL); cpl_error_reset(); status = cpl_framedata_set_tag(NULL, tags[0]); cx_assert(cpl_error_get_code() == CPL_ERROR_NULL_INPUT); cx_assert(status == CPL_ERROR_NULL_INPUT); cpl_error_reset(); status = cpl_framedata_set_tag(framedata, NULL); cx_assert(cpl_error_get_code() == CPL_ERROR_ILLEGAL_INPUT); cx_assert(status == CPL_ERROR_ILLEGAL_INPUT); cpl_error_reset(); status = cpl_framedata_set_tag(framedata, ""); cx_assert(cpl_error_get_code() == CPL_ERROR_ILLEGAL_INPUT); cx_assert(status == CPL_ERROR_ILLEGAL_INPUT); cpl_error_reset(); status = cpl_framedata_set_min_count(NULL, 0); cx_assert(cpl_error_get_code() == CPL_ERROR_NULL_INPUT); cx_assert(status == CPL_ERROR_NULL_INPUT); cpl_error_reset(); status = cpl_framedata_set_max_count(NULL, 0); cx_assert(cpl_error_get_code() == CPL_ERROR_NULL_INPUT); cx_assert(status == CPL_ERROR_NULL_INPUT); cpl_error_reset(); status = cpl_framedata_set(NULL, tags[0], 0, 5); cx_assert(cpl_error_get_code() == CPL_ERROR_NULL_INPUT); cx_assert(status == CPL_ERROR_NULL_INPUT); cpl_error_reset(); status = cpl_framedata_set(framedata, NULL, 0, 5); cx_assert(cpl_error_get_code() == CPL_ERROR_ILLEGAL_INPUT); cx_assert(status == CPL_ERROR_ILLEGAL_INPUT); cpl_error_reset(); status = cpl_framedata_set(framedata, "", 0, 5); cx_assert(cpl_error_get_code() == CPL_ERROR_ILLEGAL_INPUT); cx_assert(status == CPL_ERROR_ILLEGAL_INPUT); cpl_framedata_delete(framedata); framedata = NULL; /* * All tests succeeded */ cpl_end(); return 0; }