def test_punkt_geometri(): p = Punkt() go = GeometriObjekt() go.geometri = Point([1, 2]) p.geometriobjekter.append(go) assert p.geometri.koordinater[0] == 1 assert p.geometri.koordinater[1] == 2
def læs_lokation(lokation: str) -> GeometriObjekt: """Skab GeometriObjekt ud fra en brugerangivet lokationskoordinat""" lok = lokation.split() assert len(lok) in ( 2, 4, ), f"Lokation '{lokation}' matcher ikke format: 55.443322 [N] 12.345678 [Ø]." if len(lok) == 2: lok = [lok[0], "", lok[1], ""] try: e = float(lok[2].replace(",", ".")) n = float(lok[0].replace(",", ".")) except ValueError as ex: fire.cli.print( f"Ikke-numerisk lokationskoordinat anført: {lokation} ({ex})") sys.exit(1) # Håndter verdenshjørner Nn/ØøEe/VvWw/Ss if lok[3].upper() in ("S", "N"): lok = [lok[2], lok[3], lok[0], lok[1]] if lok[1].upper() == "S": n = -n if lok[3].upper() in ("W", "V"): e = -e # Håndter UTM zone 32 og geografiske koordinater ensartet e, n = normaliser_lokationskoordinat(e, n) go = GeometriObjekt() go.geometri = Point([e, n]) return go
def test_indset_punkt_with_invalid_sagsevent_eventtype(firedb: FireDb, sag: Sag): p = Punkt() go = GeometriObjekt() go.geometri = Point([1, 1]) p.geometriobjekter.append(go) with pytest.raises(Exception, match="KOMMENTAR"): firedb.indset_punkt(Sagsevent(sag=sag, eventtype=EventType.KOMMENTAR), p)
def test_indset_flere_punkter(firedb: FireDb, sag: Sag): p = Punkt() go = GeometriObjekt() go.geometri = Point([1, 1]) p.geometriobjekter.append(go) q = Punkt() go = GeometriObjekt() go.geometri = Point([2, 2]) q.geometriobjekter.append(go) firedb.indset_sagsevent( Sagsevent( sag=sag, eventtype=EventType.PUNKT_OPRETTET, sagseventinfos=[ SagseventInfo(beskrivelse="Testindsættelse af flere punkter") ], punkter=[p, q], ))
def test_geometriobjekt_afregistrering(firedb: FireDb, sag: Sag): """ Test at forudgående geometrier afregistreres korrekt ved indsættelse af ny. """ p = firedb.hent_punkt("SKEJ") n = len(p.geometriobjekter) go = GeometriObjekt() go.geometri = Point([10.17983, 56.18759]) go.punkt = p firedb.indset_sagsevent( Sagsevent( sag=sag, sagseventinfos=[SagseventInfo(beskrivelse="Opdater geometri")], eventtype=EventType.PUNKT_OPRETTET, geometriobjekter=[go], )) geom = p.geometriobjekter assert n + 1 == len(p.geometriobjekter) assert geom[-2].registreringtil == geom[-1].registreringfra assert geom[-2].sagseventtilid == geom[-1].sagseventfraid
def test_indset_punkt(firedb: FireDb, sag: Sag): p = Punkt() go = GeometriObjekt() go.geometri = Point([1, 1]) p.geometriobjekter.append(go) firedb.indset_punkt(Sagsevent(sag=sag), p)