Add tests for EUIxx

This commit is contained in:
Miek Gieben 2013-04-15 18:42:07 +01:00
parent 740ad9674c
commit f43b7368bd
4 changed files with 34 additions and 12 deletions

2
msg.go
View File

@ -129,6 +129,8 @@ var TypeToString = map[uint16]string{
TypeL32: "L32",
TypeL64: "L64",
TypeLP: "LP",
TypeEUI48: "EUI48",
TypeEUI64: "EUI64",
TypeTKEY: "TKEY", // Meta RR
TypeTSIG: "TSIG", // Meta RR
TypeAXFR: "AXFR", // Meta RR

View File

@ -738,3 +738,21 @@ foo. IN TXT "THIS IS TEXT MAN"; this is comment 8
}
}
}
func TestEUIxx(t *testing.T) {
tests := map[string]string{
"host.example. IN EUI48 00-00-5e-90-01-2a": "host.example.\t3600\tIN\tEUI48\t00-00-5e-90-01-2a",
"host.example. IN EUI64 00-00-5e-ef-00-00-00-2a": "host.example.\t3600\tIN\tEUI64\t00-00-5e-ef-00-00-00-2a",
}
for i, o := range tests {
r, e := NewRR(i)
if e != nil {
t.Logf("Failed to parse %s: %s\n", i, e.Error())
t.Fail()
}
if r.String() != o {
t.Logf("Want %s, got %s\n", o, r.String())
t.Fail()
}
}
}

View File

@ -1384,8 +1384,7 @@ func (rr *EUI48) Header() *RR_Header { return &rr.Hdr }
func (rr *EUI48) copy() RR { return &EUI48{*rr.Hdr.copyHeader(), rr.Address} }
func (rr *EUI48) String() string {
s := rr.Hdr.String() + euiToString(rr.Address, 48)
return s
return rr.Hdr.String() + euiToString(rr.Address, 48)
}
func (rr *EUI48) len() int {
@ -1401,8 +1400,7 @@ func (rr *EUI64) Header() *RR_Header { return &rr.Hdr }
func (rr *EUI64) copy() RR { return &EUI64{*rr.Hdr.copyHeader(), rr.Address} }
func (rr *EUI64) String() string {
s := rr.Hdr.String() + euiToString(rr.Address, 64)
return s
return rr.Hdr.String() + euiToString(rr.Address, 64)
}
func (rr *EUI64) len() int {
@ -1465,13 +1463,13 @@ func cmToString(mantissa, exponent uint8) string {
func euiToString(eui uint64, bits int) (hex string) {
switch bits {
case 64:
hex = strconv.FormatUint(eui, 16)
hex = hex[0:1] + "-" + hex[2:3] + "-" + hex[4:5] + "-" + hex[6:7] +
"-" + hex[8:9] + "-" + hex[10:11] + "-" + hex[12:13] + "-" + hex[14:15]
hex = fmt.Sprintf("%16.16x", eui)
hex = hex[0:2] + "-" + hex[2:4] + "-" + hex[4:6] + "-" + hex[6:8] +
"-" + hex[8:10] + "-" + hex[10:12] + "-" + hex[12:14] + "-" + hex[14:16]
case 48:
hex = strconv.FormatUint(eui, 16) // shift here?
hex = hex[0:1] + "-" + hex[2:3] + "-" + hex[4:5] + "-" + hex[6:7] +
"-" + hex[8:9] + "-" + hex[10:11]
hex = fmt.Sprintf("%12.12x", eui)
hex = hex[0:2] + "-" + hex[2:4] + "-" + hex[4:6] + "-" + hex[6:8] +
"-" + hex[8:10] + "-" + hex[10:12]
}
return
}

View File

@ -1287,7 +1287,7 @@ func setEUI48(h RR_Header, c chan lex, f string) (RR, *ParseError) {
}
addr := make([]byte, 12)
dash := 0
for i := 0; i < 12; i += 2 {
for i := 0; i < 10; i += 2 {
addr[i] = l.token[i+dash]
addr[i+1] = l.token[i+1+dash]
dash++
@ -1295,6 +1295,8 @@ func setEUI48(h RR_Header, c chan lex, f string) (RR, *ParseError) {
return nil, &ParseError{f, "bad EUI48 Address", l}
}
}
addr[10] = l.token[15]
addr[11] = l.token[16]
if i, e := strconv.ParseUint(string(addr), 16, 48); e != nil {
return nil, &ParseError{f, "bad EUI48 Address", l}
@ -1314,7 +1316,7 @@ func setEUI64(h RR_Header, c chan lex, f string) (RR, *ParseError) {
}
addr := make([]byte, 16)
dash := 0
for i := 0; i < 16; i += 2 {
for i := 0; i < 14; i += 2 {
addr[i] = l.token[i+dash]
addr[i+1] = l.token[i+1+dash]
dash++
@ -1322,6 +1324,8 @@ func setEUI64(h RR_Header, c chan lex, f string) (RR, *ParseError) {
return nil, &ParseError{f, "bad EUI64 Address", l}
}
}
addr[14] = l.token[21]
addr[15] = l.token[22]
if i, e := strconv.ParseUint(string(addr), 16, 64); e != nil {
return nil, &ParseError{f, "bad EUI68 Address", l}