Start adding LOC tests
This commit is contained in:
parent
57f5a215d1
commit
d85d8f9fe9
|
@ -228,7 +228,6 @@ func TestParseDirectiveMisc(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Another one hear, geared to NSECx
|
|
||||||
func TestParseNSEC(t *testing.T) {
|
func TestParseNSEC(t *testing.T) {
|
||||||
nsectests := map[string]string{
|
nsectests := map[string]string{
|
||||||
"nl. IN NSEC3PARAM 1 0 5 30923C44C6CBBB8F": "nl.\t3600\tIN\tNSEC3PARAM\t1 0 5 30923C44C6CBBB8F",
|
"nl. IN NSEC3PARAM 1 0 5 30923C44C6CBBB8F": "nl.\t3600\tIN\tNSEC3PARAM\t1 0 5 30923C44C6CBBB8F",
|
||||||
|
@ -252,6 +251,16 @@ func TestParseNSEC(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseLOC(t *testing.T) {
|
||||||
|
l1, e := NewRR("SW1A2AA.find.me.uk. 604797 IN LOC 51 30 12.748 N 00 07 39.611 W 0.00m 0.00m 0.00m 0.00m")
|
||||||
|
if e != nil {
|
||||||
|
t.Log("Failed to parse LOC RR: " + e.Error())
|
||||||
|
t.Fatal()
|
||||||
|
} else {
|
||||||
|
t.Logf("RR is OK: `%s'\n", l1.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestQuotes(t *testing.T) {
|
func TestQuotes(t *testing.T) {
|
||||||
tests := map[string]string{
|
tests := map[string]string{
|
||||||
`t.example.com. IN TXT "a bc"`: "t.example.com.\t3600\tIN\tTXT\t\"a bc\"",
|
`t.example.com. IN TXT "a bc"`: "t.example.com.\t3600\tIN\tTXT\t\"a bc\"",
|
||||||
|
|
4
types.go
4
types.go
|
@ -889,7 +889,7 @@ func (rr *RR_NSEC3) String() string {
|
||||||
s += strconv.Itoa(int(rr.Hash)) +
|
s += strconv.Itoa(int(rr.Hash)) +
|
||||||
" " + strconv.Itoa(int(rr.Flags)) +
|
" " + strconv.Itoa(int(rr.Flags)) +
|
||||||
" " + strconv.Itoa(int(rr.Iterations)) +
|
" " + strconv.Itoa(int(rr.Iterations)) +
|
||||||
" " + strings.ToUpper(rr.Salt) +
|
" " + saltString(rr.Salt) +
|
||||||
" " + rr.NextDomain
|
" " + rr.NextDomain
|
||||||
for i := 0; i < len(rr.TypeBitMap); i++ {
|
for i := 0; i < len(rr.TypeBitMap); i++ {
|
||||||
if _, ok := Rr_str[rr.TypeBitMap[i]]; ok {
|
if _, ok := Rr_str[rr.TypeBitMap[i]]; ok {
|
||||||
|
@ -924,7 +924,7 @@ func (rr *RR_NSEC3PARAM) String() string {
|
||||||
s += strconv.Itoa(int(rr.Hash)) +
|
s += strconv.Itoa(int(rr.Hash)) +
|
||||||
" " + strconv.Itoa(int(rr.Flags)) +
|
" " + strconv.Itoa(int(rr.Flags)) +
|
||||||
" " + strconv.Itoa(int(rr.Iterations)) +
|
" " + strconv.Itoa(int(rr.Iterations)) +
|
||||||
" " + strings.ToUpper(rr.Salt)
|
" " + saltString(rr.Salt)
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
22
zscan.go
22
zscan.go
|
@ -775,6 +775,28 @@ func appendOrigin(name, origin string) string {
|
||||||
return name + "." + origin
|
return name + "." + origin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LOC record helper function
|
||||||
|
func locCheckNorth(token string, latitude uint32) (uint32, bool) {
|
||||||
|
switch token {
|
||||||
|
case "n", "N":
|
||||||
|
return _LOC_EQUATOR + latitude, true
|
||||||
|
case "s", "S":
|
||||||
|
return _LOC_EQUATOR - latitude, true
|
||||||
|
}
|
||||||
|
return latitude, false
|
||||||
|
}
|
||||||
|
|
||||||
|
// LOC record helper function
|
||||||
|
func locCheckEast(token string, longitude uint32) (uint32, bool) {
|
||||||
|
switch token {
|
||||||
|
case "e", "E":
|
||||||
|
return _LOC_EQUATOR + longitude, true
|
||||||
|
case "w", "W":
|
||||||
|
return _LOC_EQUATOR - longitude, true
|
||||||
|
}
|
||||||
|
return longitude, false
|
||||||
|
}
|
||||||
|
|
||||||
func slurpRemainder(c chan lex, f string) *ParseError {
|
func slurpRemainder(c chan lex, f string) *ParseError {
|
||||||
l := <-c
|
l := <-c
|
||||||
switch l.value {
|
switch l.value {
|
||||||
|
|
57
zscan_rr.go
57
zscan_rr.go
|
@ -511,33 +511,46 @@ Altitude:
|
||||||
if i, e := strconv.Atoi(l.token); e != nil {
|
if i, e := strconv.Atoi(l.token); e != nil {
|
||||||
return nil, &ParseError{f, "bad LOC Altitude", l}
|
return nil, &ParseError{f, "bad LOC Altitude", l}
|
||||||
} else {
|
} else {
|
||||||
rr.Altitude = uint32(i * 100.0 + 10000000.0) // +0.5 in ldns?
|
rr.Altitude = uint32(i*100.0 + 10000000.0) // +0.5 in ldns?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// And now optionally the other values
|
||||||
|
l = <-c
|
||||||
|
count := 0
|
||||||
|
for l.value != _NEWLINE && l.value != _EOF {
|
||||||
|
switch l.value {
|
||||||
|
case _STRING:
|
||||||
|
switch count {
|
||||||
|
case 0: // Size
|
||||||
|
if e, m, ok := stringToCm(l.token); !ok {
|
||||||
|
return nil, &ParseError{f, "bad LOC Size", l}
|
||||||
|
} else {
|
||||||
|
rr.Size = (e & 0x0f) | (m << 4 & 0xf0)
|
||||||
|
}
|
||||||
|
case 1: // HorizPre
|
||||||
|
if e, m, ok := stringToCm(l.token); !ok {
|
||||||
|
return nil, &ParseError{f, "bad LOC HorizPre", l}
|
||||||
|
} else {
|
||||||
|
rr.HorizPre = (e & 0x0f) | (m << 4 & 0xf0)
|
||||||
|
}
|
||||||
|
case 2: // VertPre
|
||||||
|
if e, m, ok := stringToCm(l.token); !ok {
|
||||||
|
return nil, &ParseError{f, "bad LOC VertPre", l}
|
||||||
|
} else {
|
||||||
|
rr.VertPre = (e & 0x0f) | (m << 4 & 0xf0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count++
|
||||||
|
case _BLANK:
|
||||||
|
// Ok
|
||||||
|
default:
|
||||||
|
return nil, &ParseError{f, "bad LOC Size, HorizPre or VertPre", l}
|
||||||
|
}
|
||||||
|
l = <-c
|
||||||
|
}
|
||||||
return rr, nil
|
return rr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func locCheckNorth(token string, latitude uint32) (uint32, bool) {
|
|
||||||
switch token {
|
|
||||||
case "n", "N":
|
|
||||||
return _LOC_EQUATOR + latitude, true
|
|
||||||
case "s", "S":
|
|
||||||
return _LOC_EQUATOR - latitude, true
|
|
||||||
}
|
|
||||||
return latitude, false
|
|
||||||
}
|
|
||||||
|
|
||||||
func locCheckEast(token string, longitude uint32) (uint32, bool) {
|
|
||||||
switch token {
|
|
||||||
case "e", "E":
|
|
||||||
return _LOC_EQUATOR + longitude, true
|
|
||||||
case "w", "W":
|
|
||||||
return _LOC_EQUATOR - longitude, true
|
|
||||||
}
|
|
||||||
return longitude, false
|
|
||||||
}
|
|
||||||
|
|
||||||
func setHIP(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
func setHIP(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
||||||
rr := new(RR_HIP)
|
rr := new(RR_HIP)
|
||||||
rr.Hdr = h
|
rr.Hdr = h
|
||||||
|
|
Loading…
Reference in New Issue