81 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright (c) 2021-2023 Barcelona Supercomputing Center (BSC)
 | |
|  * SPDX-License-Identifier: GPL-3.0-or-later */
 | |
| 
 | |
| #include "emu/value.h"
 | |
| #include "common.h"
 | |
| 
 | |
| /* Ensure there are no holes in the value structure */
 | |
| static void
 | |
| test_holes(void)
 | |
| {
 | |
| 	struct value a, b;
 | |
| 
 | |
| 	memset(&a, 66, sizeof(struct value));
 | |
| 	memset(&b, 0, sizeof(struct value));
 | |
| 
 | |
| 	a = value_null();
 | |
| 
 | |
| 	/* Ensure we can use the whole size of the value struct to
 | |
| 	 * compare two values, so we don't have problems with
 | |
| 	 * unitialized holes due to alignment */
 | |
| 	if (memcmp(&a, &b, sizeof(struct value)) != 0)
 | |
| 		die("values are not the same");
 | |
| 
 | |
| 	err("OK");
 | |
| }
 | |
| 
 | |
| /* Ensure value_null results in values being equal */
 | |
| static void
 | |
| test_null_init(void)
 | |
| {
 | |
| 	struct value a, b;
 | |
| 
 | |
| 	memset(&a, 66, sizeof(struct value));
 | |
| 	memset(&b, 0, sizeof(struct value));
 | |
| 
 | |
| 	a = value_null();
 | |
| 	b = value_null();
 | |
| 
 | |
| 	if (!value_is_equal(&a, &b))
 | |
| 		die("null not equal");
 | |
| 
 | |
| 	err("OK");
 | |
| }
 | |
| 
 | |
| /* Test that we can printf at least 8 values without overwritting the
 | |
|  * value_str() buffer */
 | |
| static void
 | |
| test_multiple_str(void)
 | |
| {
 | |
| 	if (VALUE_NBUF < 8)
 | |
| 		die("VALUE_NBUF too small");
 | |
| 
 | |
| 	char *str[VALUE_NBUF];
 | |
| 	for (int i = 0; i < VALUE_NBUF; i++) {
 | |
| 		struct value v = value_int64(i);
 | |
| 		str[i] = value_str(v);
 | |
| 	}
 | |
| 
 | |
| 	for (int i = 0; i < VALUE_NBUF; i++) {
 | |
| 		char expected[128];
 | |
| 		sprintf(expected, "{int64_t %d}", i);
 | |
| 		if (strcmp(expected, str[i]) != 0) {
 | |
| 			die("mismatch in bufer i=%d: expected %s, got %s",
 | |
| 					i, expected, str[i]);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	err("OK");
 | |
| }
 | |
| 
 | |
| 
 | |
| int
 | |
| main(void)
 | |
| {
 | |
| 	test_holes();
 | |
| 	test_null_init();
 | |
| 	test_multiple_str();
 | |
| 
 | |
| 	return 0;
 | |
| }
 |