xref: /illumos-gate/usr/src/test/util-tests/tests/libjedec/libjedec_test.c (revision 3ce5372277f4657ad0e52d36c979527c4ca22de2)
1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright (c) 2018, Joyent, Inc.
14  */
15 
16 /*
17  * Test basic functionality of libjedec.
18  */
19 
20 #include <sys/types.h>
21 #include <sys/sysmacros.h>
22 #include <libjedec.h>
23 #include <stdio.h>
24 #include <strings.h>
25 
26 /*
27  * Table of various values and expected vendors.
28  */
29 typedef struct {
30 	uint_t		ljtt_cont;
31 	uint_t		ljtt_vendor;
32 	const char	*ljtt_exp;
33 } libjedec_test_t;
34 
35 static const libjedec_test_t libjedec_expects[] = {
36 	{ 0x00, 0x01, "AMD" },
37 	{ 0x00, 0x19, "Xicor" },
38 	{ 0x00, 0x89, "Intel" },
39 	{ 0x00, 0xFE, "Numonyx Corporation" },
40 	{ 0x01, 0x15, "Hughes Aircraft" },
41 	{ 0x01, 0xF2, "Yamaha Corporation" },
42 	{ 0x02, 0x9E, "Corsair" },
43 	{ 0x02, 0x3E, "West Bay Semiconductor" },
44 	{ 0x02, 0xF8, "Galaxy Power" },
45 	{ 0x03, 0x26, "BOPS" },
46 	{ 0x03, 0x6B, "NVIDIA" },
47 	{ 0x03, 0x7A, "Astec International" },
48 	{ 0x04, 0x07, "Dotcast" },
49 	{ 0x04, 0x40, "Bandspeed" },
50 	{ 0x04, 0x6D, "Supreme Top Technology Ltd." },
51 	{ 0x05, 0x2A, "Atrua Technologies, Inc." },
52 	{ 0x05, 0x52, "New Japan Radio Co. Ltd." },
53 	{ 0x05, 0xEF, "MetaRAM" },
54 	{ 0x06, 0x0B, "Netxen" },
55 	{ 0x06, 0xF2, "Muscle Power" },
56 	{ 0x07, 0x9E, "Teikon" },
57 	{ 0x07, 0xCE, "Mustang" },
58 	{ 0x08, 0x1F, "Shenzhen City Gcai Electronics" },
59 	{ 0x08, 0xF1, "Asgard" },
60 	{ 0x09, 0x13, "Raspberry Pi Trading Ltd." },
61 	/* Various Failure cases */
62 	{ 0x00, 0x05, NULL },
63 	{ 0x09, 0xFE, NULL },
64 	{ 0x20, 0x01, NULL }
65 };
66 
67 int
68 main(void)
69 {
70 	uint_t i, errs = 0;
71 
72 	for (i = 0; i < ARRAY_SIZE(libjedec_expects); i++) {
73 		const char *out;
74 
75 		out = libjedec_vendor_string(libjedec_expects[i].ljtt_cont,
76 		    libjedec_expects[i].ljtt_vendor);
77 		if (out == NULL && libjedec_expects[i].ljtt_exp != NULL) {
78 			errs++;
79 			(void) fprintf(stderr, "test %u failed, expected %s, "
80 			    "but lookup failed\n", i,
81 			    libjedec_expects[i].ljtt_vendor);
82 		} else if (out != NULL && libjedec_expects[i].ljtt_exp ==
83 		    NULL) {
84 			errs++;
85 			(void) fprintf(stderr, "test %u failed, expected "
86 			    "lookup failure, but it succeeded with %s\n", i,
87 			    out);
88 		} else if (strcmp(out, libjedec_expects[i].ljtt_exp) != 0) {
89 			errs++;
90 			(void) fprintf(stderr, "test %u failed, expected %s, "
91 			    "found %s\n", i, libjedec_expects[i].ljtt_exp,
92 			    out);
93 		}
94 	}
95 
96 	return (errs);
97 }
98