1168925Smtm/*- 2168925Smtm * Copyright (c) 2007 Michael Telahun Makonnen 3168925Smtm * All rights reserved. 4168925Smtm * 5168925Smtm * Redistribution and use in source and binary forms, with or without 6168925Smtm * modification, are permitted provided that the following conditions 7168925Smtm * are met: 8168925Smtm * 1. Redistributions of source code must retain the above copyright 9168925Smtm * notice, this list of conditions and the following disclaimer. 10168925Smtm * 2. Redistributions in binary form must reproduce the above copyright 11168925Smtm * notice, this list of conditions and the following disclaimer in the 12168925Smtm * documentation and/or other materials provided with the distribution. 13168925Smtm * 14168925Smtm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15168925Smtm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16168925Smtm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17168925Smtm * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18168925Smtm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19168925Smtm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20168925Smtm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21168925Smtm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22168925Smtm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23168925Smtm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24168925Smtm * SUCH DAMAGE. 25168925Smtm * 26168925Smtm */ 27168925Smtm 28168925Smtm#include <sys/cdefs.h> 29168925Smtm__FBSDID("$FreeBSD$"); 30168925Smtm 31168925Smtm#include <sys/types.h> 32168925Smtm 33168925Smtm#include <stdio.h> 34168925Smtm#include <stdlib.h> 35168925Smtm#include <string.h> 36168925Smtm 37168925Smtm#include "test_subr.h" 38168925Smtm 39168925Smtmint g_total; 40168925Smtmint g_pass; 41168925Smtmint g_fail; 42168925Smtmchar g_funcname[FUNCNAMESIZE]; 43168925Smtmchar g_testdesc[LINESIZE]; 44168925Smtmchar g_errbuf[LINESIZE]; 45168925Smtm 46168925Smtmvoid 47168925Smtmset_funcname(char *bufp, size_t bufsize) 48168925Smtm{ 49168925Smtm strlcpy(g_funcname, bufp, 50168925Smtm bufsize < FUNCNAMESIZE ? bufsize : FUNCNAMESIZE); 51168925Smtm} 52168925Smtm 53168925Smtm/* 54168925Smtm * desc is a NULL-terminated string. 55168925Smtm */ 56168925Smtmvoid 57168925Smtmcheckptr(caddr_t expected, caddr_t got, const char *desc) 58168925Smtm{ 59168925Smtm int len; 60168925Smtm int failed; 61168925Smtm char sbuf[LINESIZE]; 62168925Smtm 63168925Smtm memset((void *)sbuf, 0, LINESIZE); 64168925Smtm snprintf(g_testdesc, LINESIZE, desc); 65168925Smtm 66168925Smtm failed = 1; 67168925Smtm g_total++; 68168925Smtm if (got == expected) { 69168925Smtm len = snprintf(sbuf, LINESIZE, "ok"); 70168925Smtm g_pass++; 71168925Smtm failed = 0; 72168925Smtm } else { 73168925Smtm len = snprintf(sbuf, LINESIZE, "not ok"); 74168925Smtm snprintf(g_errbuf, LINESIZE, " : Expected %#x, but got %#x", 75168925Smtm (unsigned int)expected, (unsigned int)got); 76168925Smtm g_fail++; 77168925Smtm } 78168925Smtm snprintf(sbuf + len, LINESIZE - len, " %d - %s (%s)", 79168925Smtm g_total, g_funcname, g_testdesc); 80168925Smtm printf(sbuf); 81168925Smtm if (failed) 82168925Smtm printf(g_errbuf); 83168925Smtm printf("\n"); 84168925Smtm fflush(NULL); 85168925Smtm memset((void *)g_errbuf, 0, LINESIZE); 86168925Smtm memset((void *)g_testdesc, 0, LINESIZE); 87168925Smtm} 88168925Smtm 89168925Smtmvoid 90168925Smtmcheckstr(const char *expected, const char *got, size_t explen, const char *desc) 91168925Smtm{ 92168925Smtm int len; 93168925Smtm int failed; 94168925Smtm char sbuf[LINESIZE]; 95168925Smtm 96168925Smtm memset((void *)sbuf, 0, LINESIZE); 97168925Smtm snprintf(g_testdesc, LINESIZE, desc); 98168925Smtm 99168925Smtm failed = 1; 100168925Smtm g_total++; 101168925Smtm if (strncmp(expected, got, explen) == 0) { 102168925Smtm len = snprintf(sbuf, LINESIZE, "ok"); 103168925Smtm g_pass++; 104168925Smtm failed = 0; 105168925Smtm } else { 106168925Smtm len = snprintf(sbuf, LINESIZE, "not ok"); 107168925Smtm snprintf(g_errbuf, LINESIZE, 108168925Smtm " : Expected %s, but got %s", expected, got); 109168925Smtm g_fail++; 110168925Smtm } 111168925Smtm snprintf(sbuf + len, LINESIZE - len, " %d - %s (%s)", 112168925Smtm g_total, g_funcname, g_testdesc); 113168925Smtm printf(sbuf); 114168925Smtm if (failed) 115168925Smtm printf(g_errbuf); 116168925Smtm printf("\n"); 117168925Smtm fflush(NULL); 118168925Smtm memset((void *)g_errbuf, 0, LINESIZE); 119168925Smtm memset((void *)g_testdesc, 0, LINESIZE); 120168925Smtm} 121168925Smtm 122168925Smtmvoid 123168925Smtmchecknum(int expected, int got, int cmp, const char *desc) 124168925Smtm{ 125168925Smtm int len; 126168925Smtm int pass; 127168925Smtm int failed; 128168925Smtm char sbuf[LINESIZE]; 129168925Smtm 130168925Smtm memset((void *)sbuf, 0, LINESIZE); 131168925Smtm snprintf(g_testdesc, LINESIZE, desc); 132168925Smtm 133168925Smtm failed = 1; 134168925Smtm pass = 0; 135168925Smtm g_total++; 136168925Smtm switch(cmp) { 137168925Smtm case 0: 138168925Smtm pass = (got == expected) ? 1 : 0; 139168925Smtm break; 140168925Smtm case 1: 141168925Smtm pass = (got > expected) ? 1 : 0; 142168925Smtm break; 143168925Smtm case -1: 144168925Smtm pass = (got < expected) ? 1 : 0; 145168925Smtm break; 146168925Smtm } 147168925Smtm if (pass != 0) { 148168925Smtm len = snprintf(sbuf, LINESIZE, "ok"); 149168925Smtm g_pass++; 150168925Smtm failed = 0; 151168925Smtm } else { 152168925Smtm len = snprintf(sbuf, LINESIZE, "not ok"); 153168925Smtm snprintf(g_errbuf, LINESIZE, 154168925Smtm " : Expected %d, but got %d", expected, got); 155168925Smtm g_fail++; 156168925Smtm } 157168925Smtm snprintf(sbuf + len, LINESIZE - len, " %d - %s (%s)", 158168925Smtm g_total, g_funcname, g_testdesc); 159168925Smtm printf(sbuf); 160168925Smtm if (failed) 161168925Smtm printf(g_errbuf); 162168925Smtm printf("\n"); 163168925Smtm fflush(NULL); 164168925Smtm memset((void *)g_errbuf, 0, LINESIZE); 165168925Smtm memset((void *)g_testdesc, 0, LINESIZE); 166168925Smtm} 167