def testDeprecated(self, LatLon): c = HeightIDW # == HeightIDWeuclidean in Python 3.7+ self.test(c.__name__, issubclass(c, HeightIDWeuclidean), True) c = HeightIDW2 # == HeightIDWequirectangular in Python 3.7+ self.test(c.__name__, issubclass(c, HeightIDWequirectangular), True) c = HeightIDW3 # == HeightIDWhaversine in Python 3.7+ self.test(c.__name__, issubclass(c, HeightIDWhaversine), True) p = LatLon(0, 0), LatLon(1, 0), LatLon(0, 1) self.test('areaof', areaof(p, radius=R_MA), '7.086883e+09', fmt='%.6e') p = LatLon(85, 90), LatLon(-85, 0), LatLon(85, -90), LatLon(85, -180) b = map2(float, bounds(p)) self.test('bounds', b, '(-85.0, -180.0, 85.0, 90.0)') self.test('anStr', anStr('a-b?_'), 'a-b__') self.test('clipStr', clipStr('test/testBasics.py', limit=12), 'test/t....ics.py') self.test('decodeEPSG2', decodeEPSG2(32712), "(12, 'S')") self.test('encodeEPSG', encodeEPSG(12, hemipole='S'), '32712') t = equirectangular3(0, 2, 3, 4) self.test('equirectangular3', len(t), 3) self.test('equirectangular3', t[0], 12.997, fmt='%.3f') self.test('fStr', fStr(0.123, prec=-6), '0.123000') self.test('fStr', fStr(0.123, prec=+6), '0.123') self.test('fStr', fStr((0.123, 456.789), prec=+6), '0.123, 456.789') self.test('fStr', fStr(0.123, prec=-5, fmt='%.*e'), '1.23000e-01') self.test('fStr', fStr(0.123, prec=+5, fmt='%.*e'), '1.23e-01') self.test('fStr', fStr(0.123, prec=+6, fmt='%.*f'), '0.123') h = hypot3(3000, 200, 10) s = sqrt(3000**2 + 200**2 + 10**2) self.test('hypot3', h, s, fmt='%.6f') b = LatLon(45, 1), LatLon(45, 2), LatLon(46, 2), LatLon(46, 1) self.test('isenclosedby', isenclosedby(LatLon(45.5, 1.5), b), True) p = LatLon(45, 2) b = LatLon(45, 1), LatLon(47, 3) t = nearestOn3(p, b, adjust=False) self.test('nearestOn3', len(t), 3) self.test('nearestOn3', t[:2], (45.5, 1.5)) t = nearestOn4(p, b, adjust=False) self.test('nearestOn4', len(t), 4) self.test('nearestOn4', t[:2], (45.5, 1.5)) t = parseUTM('18 N 516620 4574500', Utm=None) # Milford, PA self.test('parseUTM', t, "(18, 'N', 516620.0, 4574500.0)") p = LatLon(0, 0), LatLon(1, 0), LatLon(0, 1) self.test('perimeterof', perimeterof(p, radius=R_MA), '2.687460e+05', fmt='%.6e') p = LatLon(0, 0), LatLon(1, 0), LatLon(0, 1) self.test('polygon', polygon(p)[0], 3) t = simplify2(RdpFFI, 16, adjust=True, shortest=False) self.test('simplify2', len(t), 4) t = toUtm('50°52′10″N', '115°39′03″W', Utm=None, name='Mt Assiniboine') self.test('toUtm', len(t), 6) t = utmZoneBand2('50°52′10″N', '115°39′03″W') self.test('utmZoneBand2', t, "(11, 'U')")
ismacOS = sys.platform == 'darwin' # public isNix = uname()[0] in ('Linux', 'linux') isPyPy = '[PyPy ' in sys.version # platform.python_implementation() == 'PyPy' isPython2 = sys.version_info[0] == 2 isPython3 = sys.version_info[0] == 3 isPython37 = sys.version_info[:2] >= (3, 7) # for testLazy isWindows = sys.platform.startswith('win') try: # use distro only for Linux, not macOS, etc. if isNix: import distro # <https://PyPI.org/project/distro> else: raise ImportError _Nix = anStr(distro.id()).capitalize() # .name()? def nix_ver(): # *nix release try: # no subprocess.check_output ... v = distro.version() except AttributeError: # ... Python 2.6 v = '' return anStr(v), _os_bitstr except ImportError: _Nix = '' # not linux? def nix_ver(): # PYCHOK expected return _Nix, _os_bitstr
def nix_ver(): # *nix release try: # no subprocess.check_output ... v = distro.version() except AttributeError: # ... Python 2.6 v = '' return anStr(v), _os_bitstr
def testUtily(self): # Python 2.6.9 on Travis Ubuntu 14.04 produces -0.0 self.test('degrees90(PI_2)', degrees90(PI_2), 90.0) self.test('degrees90(PI)', degrees90(PI), -180.0) # XXX self.test('degrees90(PI2)', degrees90(PI2), 0.0) self.test('degrees90(-PI_2)', degrees90(-PI_2), -90.0) self.test('degrees90(-PI)', degrees90(-PI), -180.0) # XXX self.test('degrees90(-PI2)', abs(degrees90(-PI2)), 0.0) # -0.0 self.test('degrees180(PI_2)', degrees180(PI_2), 90.0) self.test('degrees180(PI)', degrees180(PI), 180.0) # XXX self.test('degrees180(PI2)', degrees180(PI2), 0.0) self.test('degrees180(-PI_2)', degrees180(-PI_2), -90.0) self.test('degrees180(-PI)', degrees180(-PI), -180.0) # XXX self.test('degrees180(-PI2)', abs(degrees180(-PI2)), 0.0) # -0.0 self.test('degrees360(PI_2)', degrees360(PI_2), 90.0) self.test('degrees360(PI)', degrees360(PI), 180.0) # XXX self.test('degrees360(PI2)', degrees360(PI2), 0.0) self.test('degrees360(-PI_2)', degrees360(-PI_2), 270.0) self.test('degrees360(-PI)', degrees360(-PI), 180.0) # XXX self.test('degrees360(-PI2)', abs(degrees360(-PI2)), 0.0) # -0.0 self.test('radiansPI_2(90)', radiansPI_2(90), PI_2) self.test('radiansPI_2(180)', radiansPI_2(180), -PI) self.test('radiansPI_2(360)', radiansPI_2(360), 0.0) self.test('radiansPI_2(-90)', radiansPI_2(-90), -PI_2) self.test('radiansPI_2(-180)', radiansPI_2(-180), -PI) self.test('radiansPI_2(-360)', abs(radiansPI_2(-360)), 0.0) # -0.0 self.test('radiansPI(90)', radiansPI(90), PI_2) self.test('radiansPI(180)', radiansPI(180), PI) self.test('radiansPI(360)', radiansPI(360), 0.0) self.test('radiansPI(-90)', radiansPI(-90), -PI_2) self.test('radiansPI(-180)', radiansPI(-180), -PI) self.test('radiansPI(-360)', abs(radiansPI(-360)), 0.0) # -0.0 self.test('radiansPI2(90)', radiansPI2(90), PI_2) self.test('radiansPI2(180)', radiansPI2(180), PI) self.test('radiansPI2(360)', radiansPI2(360), 0.0) self.test('radiansPI2(-90)', radiansPI2(-90), PI_2+PI) self.test('radiansPI2(-180)', radiansPI2(-180), PI) self.test('radiansPI2(-360)', abs(radiansPI2(-360)), 0.0) # -0.0 self.test('wrap90(90)', wrap90(90), 90) self.test('wrap90(180)', wrap90(180), -180) self.test('wrap90(360)', wrap90(360), 0) self.test('wrap90(-90)', wrap90(-90), -90) self.test('wrap90(-180)', wrap90(-180), -180) self.test('wrap90(-360)', wrap90(-360), 0) self.test('wrap180(90)', wrap180(90), 90) self.test('wrap180(180)', wrap180(180), 180) self.test('wrap180(360)', wrap180(360), 0) self.test('wrap180(-90)', wrap180(-90), -90) self.test('wrap180(-180)', wrap180(-180), -180) self.test('wrap180(-360)', wrap180(-360), 0) self.test('wrap360(90)', wrap360(90), 90) self.test('wrap360(180)', wrap360(180), 180) self.test('wrap360(360)', wrap360(360), 0) self.test('wrap360(-90)', wrap360(-90), 270) self.test('wrap360(-180)', wrap360(-180), 180) self.test('wrap360(-360)', wrap360(-360), 0) self.test('wrapPI_2(PI_2)', wrapPI_2(PI_2), PI_2) self.test('wrapPI_2(PI)', wrapPI_2(PI), -PI) # XXX self.test('wrapPI_2(PI2)', wrapPI_2(PI2), 0.0) self.test('wrapPI_2(-PI_2)', wrapPI_2(-PI_2), -PI_2) self.test('wrapPI_2(-PI)', wrapPI_2(-PI), -PI) # XXX self.test('wrapPI_2(-PI2)', abs(wrapPI_2(-PI2)), 0.0) self.test('wrapPI(PI_2)', wrapPI(PI_2), PI_2) self.test('wrapPI(PI)', wrapPI(PI), PI) # XXX self.test('wrapPI(PI2)', wrapPI(PI2), 0.0) self.test('wrapPI(-PI_2)', wrapPI(-PI_2), -PI_2) self.test('wrapPI(-PI)', wrapPI(-PI), -PI) # XXX self.test('wrapPI(-PI2)', abs(wrapPI(-PI2)), 0.0) # -0.0 self.test('wrapPI2(PI_2)', wrapPI2(PI_2), PI_2) self.test('wrapPI2(PI)', wrapPI2(PI), PI) # XXX self.test('wrapPI2(PI2)', wrapPI2(PI2), 0.0) self.test('wrapPI2(-PI_2)', wrapPI2(-PI_2), PI_2+PI) self.test('wrapPI2(-PI)', wrapPI2(-PI), PI) # XXX self.test('wrapPI2(-PI2)', abs(wrapPI2(-PI2)), 0.0) # -0.0 self.test('unroll180', fStr(unroll180(-90, 110, wrap=True)), '-160.0, -250.0') self.test('unroll180', fStr(unroll180(-90, 110, wrap=False)), '200.0, 110.0') self.test('unroll180', fStr(unroll180(-90, 830, wrap=True)), '-160.0, -250.0') self.test('unroll180', fStr(unroll180(-90, 830, wrap=False)), '920.0, 830.0') self.test('unroll180', fStr(unroll180(-110, 90, wrap=True)), '-160.0, -270.0') self.test('unroll180', fStr(unroll180(-110, 90, wrap=False)), '200.0, 90.0') self.test('unroll180', fStr(unroll180(-830, 90, wrap=True)), '-160.0, -990.0') self.test('unroll180', fStr(unroll180(-830, 90, wrap=False)), '920.0, 90.0') e = d = g = f = 0 for a in range(-1000, 1000): a *= 0.47 r = radians(a) sr, cr = sin(r), cos(r) s, c = sincos2(r) e = max(e, abs(sr - s), abs(cr - c)) sd, cd = sincos2d(a) d = max(d, abs(sr - sd), abs(cr - cd)) if sincosd: # compare with geographiclib s, c = sincosd(a) g = max(g, abs(sr - s), abs(cr - c)) f = max(f, abs(sd - s), abs(cd - c)) EPS_ = EPS * 8 self.test('sincos2', e, EPS, known=e < EPS_) self.test('sincos2d', d, EPS, known=d < EPS_) if sincosd: self.test('sincosd ', g, EPS, known=g < EPS_) self.test('sincos*d', f, EPS, known=f < EPS_) a, b = splice(range(10)) # PYCHOK false self.test('splice', (a, b), map1(type(a), (0, 2, 4, 6, 8), (1, 3, 5, 7, 9))) a, b, c = splice(range(10), n=3) # PYCHOK false self.test('splice', (a, b, c), map1(type(a), (0, 3, 6, 9), (1, 4, 7), (2, 5, 8))) a, b, c = splice(range(10), n=3, fill=-1) # PYCHOK false self.test('splice', (a, b, c), map1(type(a), (0, 3, 6, 9), (1, 4, 7, -1), (2, 5, 8, -1))) t = tuple(splice(range(12), n=5)) # PYCHOK false self.test('splice', t, map1(type(t[0]), (0, 5, 10), (1, 6, 11), (2, 7), (3, 8), (4, 9))) # <https://www.CivilGeo.com/when-a-foot-isnt-really-a-foot/> self.test('iFt2m', ft2m( 614963.91), 187441, fmt='%.0f') self.test('iFt2m', ft2m(2483759.84), 757050, fmt='%.0f') self.test('sFt2m', ft2m( 614962.68, usurvey=True), 187441, fmt='%.0f') self.test('sFt2m', ft2m(2483754.87, usurvey=True), 757050, fmt='%.0f') self.test('m2iFt', m2ft(187441), 614963.91, fmt='%.0f') self.test('m2iFt', m2ft(757050), 2483759.84, fmt='%.0f') self.test('m2sFt', m2ft(187441, usurvey=True), 614962.68, fmt='%.0f') self.test('m2sFt', m2ft(757050, usurvey=True), 2483754.87, fmt='%.0f') self.test('degrees2m', fStr(degrees2m(90), prec=4), '10007557.1761') self.test('degrees2m', fStr(degrees2m(90, lat=30), prec=4), '8666798.7443') self.test('m2degrees', fStr(m2degrees(degrees2m(90)), prec=1), '90.0') self.test('degrees2m', fStr(degrees2m(180), prec=4), '20015114.3522') self.test('degrees2m', fStr(degrees2m(180, lat=3-0), prec=4), '19987684.3336') self.test('m2degrees', fStr(m2degrees(degrees2m(180)), prec=1), '180.0') self.test('anStr', anStr('a-b?_'), 'a-b__') self.test('clipStr', clipStr('test/testUtily.py', limit=12), 'test/t....ily.py') self.test('isPoints2', isPoints2(None), False) self.test('limiterrors', limiterrors(False), True)