Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/lib/libc/tests/net/eui64_aton_test.c
39534 views
1
/*
2
* Copyright 2004 The Aerospace Corporation. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
6
* are met:
7
*
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions, and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions, and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 3. The name of The Aerospace Corporation may not be used to endorse or
14
* promote products derived from this software.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE AEROSPACE CORPORATION "AS IS" AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
* ARE DISCLAIMED. IN NO EVENT SHALL THE AEROSPACE CORPORATION BE LIABLE
20
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
* SUCH DAMAGE.
27
*/
28
29
#include <sys/types.h>
30
#include <sys/eui64.h>
31
#include <locale.h>
32
#include <stdio.h>
33
#include <string.h>
34
35
#include <atf-c.h>
36
37
#include "test-eui64.h"
38
39
static void
40
test_str(const char *str, const struct eui64 *eui)
41
{
42
struct eui64 e;
43
char buf[EUI64_SIZ];
44
int rc;
45
46
ATF_REQUIRE_MSG(eui64_aton(str, &e) == 0, "eui64_aton failed");
47
rc = memcmp(&e, eui, sizeof(e));
48
if (rc != 0) {
49
eui64_ntoa(&e, buf, sizeof(buf));
50
atf_tc_fail(
51
"eui64_aton(\"%s\", ..) failed; memcmp returned %d. "
52
"String obtained form eui64_ntoa was: `%s`",
53
str, rc, buf);
54
}
55
}
56
57
ATF_TC_WITHOUT_HEAD(id_ascii);
58
ATF_TC_BODY(id_ascii, tc)
59
{
60
61
test_str(test_eui64_id_ascii, &test_eui64_id);
62
}
63
64
ATF_TC_WITHOUT_HEAD(id_colon_ascii);
65
ATF_TC_BODY(id_colon_ascii, tc)
66
{
67
68
test_str(test_eui64_id_colon_ascii, &test_eui64_id);
69
}
70
71
ATF_TC_WITHOUT_HEAD(mac_ascii);
72
ATF_TC_BODY(mac_ascii, tc)
73
{
74
75
test_str(test_eui64_mac_ascii, &test_eui64_eui48);
76
}
77
78
ATF_TC_WITHOUT_HEAD(mac_colon_ascii);
79
ATF_TC_BODY(mac_colon_ascii, tc)
80
{
81
82
test_str(test_eui64_mac_colon_ascii, &test_eui64_eui48);
83
}
84
85
ATF_TC_WITHOUT_HEAD(hex_ascii);
86
ATF_TC_BODY(hex_ascii, tc)
87
{
88
89
test_str(test_eui64_hex_ascii, &test_eui64_id);
90
}
91
92
ATF_TP_ADD_TCS(tp)
93
{
94
95
ATF_TP_ADD_TC(tp, id_ascii);
96
ATF_TP_ADD_TC(tp, id_colon_ascii);
97
ATF_TP_ADD_TC(tp, mac_ascii);
98
ATF_TP_ADD_TC(tp, mac_colon_ascii);
99
ATF_TP_ADD_TC(tp, hex_ascii);
100
101
return (atf_no_error());
102
}
103
104