2002-07-11 Chris Demetriou <cgd@broadcom.com>
* testsuite/newlib.search/hsearchtest.c: New file to test
        newlib/libc/search.
        * testsuite/newlib.search/hsearchtest.exp: Likewise.
			
			
This commit is contained in:
		| @@ -1,3 +1,9 @@ | ||||
| 2002-07-11  Chris Demetriou  <cgd@broadcom.com> | ||||
|  | ||||
|         * testsuite/newlib.search/hsearchtest.c: New file to test | ||||
|         newlib/libc/search. | ||||
|         * testsuite/newlib.search/hsearchtest.exp: Likewise. | ||||
|  | ||||
| 2002-07-10  Florian Schrack  <florian.schrack@freenet.de> | ||||
|  | ||||
| 	* libc/sys/mmixware/read.c: Use SYS_Fgets syscall if dealing with | ||||
|   | ||||
							
								
								
									
										125
									
								
								newlib/testsuite/newlib.search/hsearchtest.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								newlib/testsuite/newlib.search/hsearchtest.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,125 @@ | ||||
| /*	$NetBSD: hsearchtest.c,v 1.4 2002/02/21 07:38:15 itojun Exp $	*/ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 2001 Christopher G. Demetriou | ||||
|  * All rights reserved. | ||||
|  *  | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions | ||||
|  * are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright | ||||
|  *    notice, this list of conditions and the following disclaimer. | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright | ||||
|  *    notice, this list of conditions and the following disclaimer in the | ||||
|  *    documentation and/or other materials provided with the distribution. | ||||
|  * 3. The name of the author may not be used to endorse or promote products | ||||
|  *    derived from this software without specific prior written permission. | ||||
|  *  | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||||
|  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||||
|  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||||
|  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||||
|  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||||
|  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
|  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
|  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||||
|  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  *  | ||||
|  * <<Id: LICENSE_GC,v 1.1 2001/10/01 23:24:05 cgd Exp>> | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * Test program for hsearch() et al. | ||||
|  */ | ||||
|  | ||||
| #include <sys/cdefs.h> | ||||
| #if 0 | ||||
| #if !defined(lint) | ||||
| __RCSID("$NetBSD: hsearchtest.c,v 1.4 2002/02/21 07:38:15 itojun Exp $"); | ||||
| __COPYRIGHT( | ||||
| "@(#) Copyright (c) 2001 Christopher G. Demetriou.  All rights reserved.\n"); | ||||
| #endif /* not lint */ | ||||
| #endif | ||||
|  | ||||
| #include <search.h> | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
|  | ||||
| #define	TEST(e)	((e) ? (void)0 : testfail(__FILE__, __LINE__, #e)) | ||||
|  | ||||
| static void | ||||
| testfail(const char *file, unsigned long line, const char *expression) | ||||
| { | ||||
|  | ||||
| 	fprintf(stderr, "TEST FAILED: %s: file %s, line %ld\n", | ||||
| 	    expression, file, line); | ||||
| 	exit(1); | ||||
| } | ||||
|  | ||||
| int | ||||
| main(int argc, char *argv[]) | ||||
| { | ||||
| 	ENTRY e, *ep, *ep2; | ||||
| 	int created_ok; | ||||
| 	char ch[2]; | ||||
| 	int i; | ||||
|  | ||||
| 	created_ok = hcreate(16); | ||||
| 	TEST(created_ok); | ||||
|  | ||||
| 	/* ch[1] should be constant from here on down. */ | ||||
| 	ch[1] = '\0'; | ||||
| 	 | ||||
| 	/* Basic insertions.  Check enough that there'll be collisions. */ | ||||
| 	for (i = 0; i < 26; i++) { | ||||
| 		ch[0] = 'a' + i; | ||||
| 		e.key = strdup(ch);	/* ptr to provided key is kept! */ | ||||
| 		TEST(e.key != NULL); | ||||
| 		e.data = (void *)(long)i; | ||||
| 		ep = hsearch(e, ENTER); | ||||
| 		TEST(ep != NULL); | ||||
| 		TEST(strcmp(ep->key, ch) == 0); | ||||
| 		TEST((long)ep->data == i); | ||||
| 	} | ||||
|  | ||||
| 	/* e.key should be constant from here on down. */ | ||||
| 	e.key = ch; | ||||
|  | ||||
| 	/* Basic lookups. */ | ||||
| 	for (i = 0; i < 26; i++) { | ||||
| 		ch[0] = 'a' + i; | ||||
| 		ep = hsearch(e, FIND); | ||||
| 		TEST(ep != NULL); | ||||
| 		TEST(strcmp(ep->key, ch) == 0); | ||||
| 		TEST((long)ep->data == i); | ||||
| 	} | ||||
|  | ||||
| 	/* Check duplicate entry.  Should _not_ overwrite existing data.  */ | ||||
| 	ch[0] = 'a'; | ||||
| 	e.data = (void *)(long)12345; | ||||
| 	ep = hsearch(e, FIND); | ||||
| 	TEST(ep != NULL); | ||||
| 	TEST(strcmp(ep->key, ch) == 0); | ||||
| 	TEST((long)ep->data == 0); | ||||
|  | ||||
| 	/* Check for something that's not there. */ | ||||
| 	ch[0] = 'A'; | ||||
| 	ep = hsearch(e, FIND); | ||||
| 	TEST(ep == NULL); | ||||
|  | ||||
| 	/* Check two at once. */ | ||||
| 	ch[0] = 'a'; | ||||
| 	ep = hsearch(e, FIND); | ||||
| 	ch[0] = 'b'; | ||||
| 	ep2 = hsearch(e, FIND); | ||||
| 	TEST(ep != NULL); | ||||
| 	TEST(strcmp(ep->key, "a") == 0 && (long)ep->data == 0); | ||||
| 	TEST(ep2 != NULL); | ||||
| 	TEST(strcmp(ep2->key, "b") == 0 && (long)ep2->data == 1); | ||||
|  | ||||
| 	hdestroy(); | ||||
|  | ||||
| 	exit(0); | ||||
| } | ||||
							
								
								
									
										12
									
								
								newlib/testsuite/newlib.search/hsearchtest.exp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								newlib/testsuite/newlib.search/hsearchtest.exp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| # Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. | ||||
| # | ||||
| # Permission to use, copy, modify, and distribute this software | ||||
| # is freely granted, provided that this notice is preserved. | ||||
| # | ||||
|  | ||||
| load_lib passfail.exp | ||||
|  | ||||
| set exclude_list { | ||||
| } | ||||
|  | ||||
| newlib_pass_fail_all -x $exclude_list | ||||
		Reference in New Issue
	
	Block a user