lib.mkEUI64Suffix: bring @hsjobeki suggestions
renamed `mac` to `octets` in hextets combining step for better var naming; rephrased error message to provide a hint of expected format; replaced `Arguments` with `Inputs` in docstring; added more test cases for invalid hex digits; added comments in hextets combining step;
This commit is contained in:
@@ -70,7 +70,7 @@ in
|
|||||||
mkEUI64Suffix :: String -> String
|
mkEUI64Suffix :: String -> String
|
||||||
```
|
```
|
||||||
|
|
||||||
# Argumemts
|
# Inputs
|
||||||
|
|
||||||
mac
|
mac
|
||||||
: The MAC address (may contain these delimiters: `:`, `-` or `.` but it's not necessary)
|
: The MAC address (may contain these delimiters: `:`, `-` or `.` but it's not necessary)
|
||||||
@@ -82,14 +82,25 @@ in
|
|||||||
(match "^([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})$")
|
(match "^([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})$")
|
||||||
|
|
||||||
# check if there are matches
|
# check if there are matches
|
||||||
(matches: if matches == null then throw ''"${mac}" doesn't meet MAC address criteria'' else matches)
|
(
|
||||||
|
matches:
|
||||||
|
if matches == null then
|
||||||
|
throw ''"${mac}" is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)''
|
||||||
|
else
|
||||||
|
matches
|
||||||
|
)
|
||||||
|
|
||||||
# transform to result hextets
|
# transform to result hextets
|
||||||
(mac: [
|
(octets: [
|
||||||
(toHexString (bitXor 512 (fromHexString ((elemAt mac 0) + (elemAt mac 1)))))
|
# combine 1st and 2nd octets into first hextet, flip U/L bit, 512 = 0x200
|
||||||
"${elemAt mac 2}ff"
|
(toHexString (bitXor 512 (fromHexString ((elemAt octets 0) + (elemAt octets 1)))))
|
||||||
"fe${elemAt mac 3}"
|
|
||||||
((elemAt mac 4) + (elemAt mac 5))
|
# combine 3rd and 4th octets, combine them, insert fffe pattern in between to get next two hextets
|
||||||
|
"${elemAt octets 2}ff"
|
||||||
|
"fe${elemAt octets 3}"
|
||||||
|
|
||||||
|
# combine 5th and 6th octets into the last hextet
|
||||||
|
((elemAt octets 4) + (elemAt octets 5))
|
||||||
])
|
])
|
||||||
|
|
||||||
# concat to result suffix
|
# concat to result suffix
|
||||||
|
|||||||
@@ -132,24 +132,30 @@ expectSuccess 'mkEUI64Suffix "ffffffffffff"' '"fdff:ffff:feff:ffff"'
|
|||||||
expectSuccess 'mkEUI64Suffix "00.00.00.00.00.00"' '"200:00ff:fe00:0000"'
|
expectSuccess 'mkEUI64Suffix "00.00.00.00.00.00"' '"200:00ff:fe00:0000"'
|
||||||
expectSuccess 'mkEUI64Suffix "000000000000"' '"200:00ff:fe00:0000"'
|
expectSuccess 'mkEUI64Suffix "000000000000"' '"200:00ff:fe00:0000"'
|
||||||
|
|
||||||
expectFailure 'mkEUI64Suffix "123456789AB"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "123456789AB"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "123456789A"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "123456789A"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "123456789"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "123456789"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "12345678"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "12345678"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "1234567"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "1234567"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "123456"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "123456"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "12345"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "12345"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "1234"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "1234"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "123"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "123"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "12"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "12"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "1"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "1"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix ""' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix ""' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "------------"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "------------"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "............"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "............"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "::::::::::::"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "::::::::::::"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "1:2:3:4:5:6"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "1:2:3:4:5:6"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "0.0.0.0.0.0"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "0.0.0.0.0.0"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "00:11:-2:AA:BB:CC"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "00:11:-2:AA:BB:CC"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
expectFailure 'mkEUI64Suffix "00:-11:22:AA:BB:CC"' "doesn't meet MAC address criteria"
|
expectFailure 'mkEUI64Suffix "00:-11:22:AA:BB:CC"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
|
expectFailure 'mkEUI64Suffix "ab:cd:ef:g0:12:34' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
|
expectFailure 'mkEUI64Suffix "AB:CD:EF:G0:12:34' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
|
expectFailure 'mkEUI64Suffix "ab:cd:ef:gh:jk:lm' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
|
expectFailure 'mkEUI64Suffix "AB:CD:EF:GH:JK:LM' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
|
expectFailure 'mkEUI64Suffix "01:23:3a:bc:de:fg"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
|
expectFailure 'mkEUI64Suffix "01:23:3A:BC:DE:FG"' "is not a valid MAC address (expected 6 octets of hex digits with optional delimiters)"
|
||||||
|
|
||||||
echo >&2 tests ok
|
echo >&2 tests ok
|
||||||
|
|||||||
Reference in New Issue
Block a user