Extended test case for CPR calculator to use different odd/even locations
This commit is contained in:
parent
b29d049d7d
commit
0494eb5b18
@ -274,12 +274,14 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
for i in range(0, rounds):
|
for i in range(0, rounds):
|
||||||
decoder = cpr_decoder(None)
|
decoder = cpr_decoder(None)
|
||||||
ac_lat = random.uniform(-85, 85)
|
even_lat = random.uniform(-85, 85)
|
||||||
ac_lon = random.uniform(-180,180)
|
even_lon = random.uniform(-180,180)
|
||||||
|
odd_lat = even_lat + 1e-2
|
||||||
|
odd_lon = min(even_lon + 1e-2, 180)
|
||||||
|
|
||||||
#encode that position
|
#encode that position
|
||||||
(evenenclat, evenenclon) = cpr_encode(ac_lat, ac_lon, False, False)
|
(evenenclat, evenenclon) = cpr_encode(even_lat, even_lon, False, False)
|
||||||
(oddenclat, oddenclon) = cpr_encode(ac_lat, ac_lon, True, False)
|
(oddenclat, oddenclon) = cpr_encode(odd_lat, odd_lon, True, False)
|
||||||
|
|
||||||
#perform a global decode
|
#perform a global decode
|
||||||
icao = random.randint(0, 0xffffff)
|
icao = random.randint(0, 0xffffff)
|
||||||
@ -300,17 +302,22 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
#print "Lat: %f Lon: %f" % (ac_lat, ac_lon)
|
#print "Lat: %f Lon: %f" % (ac_lat, ac_lon)
|
||||||
|
|
||||||
if abs(odddeclat - ac_lat) > threshold or abs(odddeclon - ac_lon) > threshold:
|
if abs(odddeclat - odd_lat) > threshold or abs(odddeclon - odd_lon) > threshold:
|
||||||
#print "odddeclat: %f ac_lat: %f" % (odddeclat, ac_lat)
|
print "odddeclat: %f odd_lat: %f" % (odddeclat, odd_lat)
|
||||||
#print "odddeclon: %f ac_lon: %f" % (odddeclon, ac_lon)
|
print "odddeclon: %f odd_lon: %f" % (odddeclon, odd_lon)
|
||||||
raise Exception("CPR test failure: global decode error greater than threshold")
|
raise Exception("CPR test failure: global decode error greater than threshold")
|
||||||
|
|
||||||
|
nexteven_lat = odd_lat + 1e-2
|
||||||
|
nexteven_lon = min(odd_lon + 1e-2, 180)
|
||||||
|
|
||||||
|
(nexteven_enclat, nexteven_enclon) = cpr_encode(nexteven_lat, nexteven_lon, False, False)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
(evendeclat, evendeclon) = cpr_resolve_local([ac_lat, ac_lon], [evenenclat, evenenclon], False, False)
|
(evendeclat, evendeclon) = cpr_resolve_local([even_lat, even_lon], [nexteven_enclat, nexteven_enclon], False, False)
|
||||||
except CPRNoPositionError:
|
except CPRNoPositionError:
|
||||||
raise Exception("CPR test failure: local decode failure to resolve")
|
raise Exception("CPR test failure: local decode failure to resolve")
|
||||||
|
|
||||||
if abs(evendeclat - ac_lat) > threshold or abs(evendeclon - ac_lon) > threshold:
|
if abs(evendeclat - nexteven_lat) > threshold or abs(evendeclon - nexteven_lon) > threshold:
|
||||||
raise Exception("CPR test failure: local decode error greater than threshold")
|
raise Exception("CPR test failure: local decode error greater than threshold")
|
||||||
|
|
||||||
print "CPR test successful. There were %i boundary straddles over %i rounds." % (bs, rounds)
|
print "CPR test successful. There were %i boundary straddles over %i rounds." % (bs, rounds)
|
||||||
|
Loading…
Reference in New Issue
Block a user