|
3 | 3 |
|
4 | 4 | from lonboard import Map, ScatterplotLayer, SolidPolygonLayer |
5 | 5 | from lonboard.basemap import MaplibreBasemap |
| 6 | +from lonboard.models import ( |
| 7 | + FirstPersonViewState, |
| 8 | + GlobeViewState, |
| 9 | + MapViewState, |
| 10 | + OrthographicViewState, |
| 11 | +) |
| 12 | +from lonboard.view import FirstPersonView, GlobeView, OrthographicView |
6 | 13 |
|
7 | 14 |
|
8 | 15 | def test_map_fails_with_unexpected_argument(): |
@@ -49,3 +56,94 @@ def test_map_default_basemap(): |
49 | 56 |
|
50 | 57 | assert m.basemap.mode == MaplibreBasemap().mode, "Should match default parameters" |
51 | 58 | assert m.basemap.style == MaplibreBasemap().style, "Should match default parameters" |
| 59 | + |
| 60 | + |
| 61 | +def test_view_state_empty_input(): |
| 62 | + m = Map([], view_state={}) |
| 63 | + assert m.view_state is None |
| 64 | + |
| 65 | + |
| 66 | +def test_view_state_partial_dict(): |
| 67 | + view_state = { |
| 68 | + "longitude": -122.45, |
| 69 | + "latitude": 37.8, |
| 70 | + } |
| 71 | + m = Map([], view_state=view_state) |
| 72 | + assert m.view_state == MapViewState(**view_state) |
| 73 | + |
| 74 | + |
| 75 | +def test_view_state_globe_view_dict(): |
| 76 | + view_state = { |
| 77 | + "longitude": -122.45, |
| 78 | + "latitude": 37.8, |
| 79 | + "zoom": 2.0, |
| 80 | + } |
| 81 | + m = Map([], views=GlobeView(), view_state=view_state) |
| 82 | + assert m.view_state == GlobeViewState(**view_state) |
| 83 | + |
| 84 | + |
| 85 | +def test_view_state_globe_view_instance(): |
| 86 | + view_state = GlobeViewState(longitude=-122.45, latitude=37.8, zoom=2.0) |
| 87 | + m = Map([], views=GlobeView(), view_state=view_state) |
| 88 | + assert m.view_state == view_state |
| 89 | + |
| 90 | + |
| 91 | +def test_view_state_first_person_dict(): |
| 92 | + view_state = { |
| 93 | + "longitude": -122.45, |
| 94 | + "latitude": 37.8, |
| 95 | + "position": [0, 0, 10], |
| 96 | + } |
| 97 | + m = Map([], views=FirstPersonView(), view_state=view_state) |
| 98 | + assert m.view_state == FirstPersonViewState(**view_state) |
| 99 | + |
| 100 | + |
| 101 | +def test_view_state_orthographic_view_empty(): |
| 102 | + view_state = {} |
| 103 | + m = Map([], views=OrthographicView(), view_state=view_state) |
| 104 | + assert m.view_state == OrthographicViewState(**view_state) |
| 105 | + |
| 106 | + |
| 107 | +def test_set_view_state_map_view_kwargs(): |
| 108 | + m = Map([]) |
| 109 | + set_state = {"longitude": -100, "latitude": 40, "zoom": 5} |
| 110 | + m.set_view_state(**set_state) |
| 111 | + assert m.view_state == MapViewState(**set_state) |
| 112 | + |
| 113 | + |
| 114 | +def test_set_view_state_map_view_instance(): |
| 115 | + m = Map([]) |
| 116 | + set_state = MapViewState(longitude=-100, latitude=40, zoom=5) |
| 117 | + m.set_view_state(set_state) |
| 118 | + assert m.view_state == set_state |
| 119 | + |
| 120 | + |
| 121 | +def test_set_view_state_partial_update(): |
| 122 | + m = Map([], view_state={"longitude": -100, "latitude": 40, "zoom": 5}) |
| 123 | + m.set_view_state(latitude=45) |
| 124 | + assert m.view_state == MapViewState(longitude=-100, latitude=45, zoom=5) |
| 125 | + |
| 126 | + |
| 127 | +def test_globe_view_state_partial_update(): |
| 128 | + m = Map( |
| 129 | + [], |
| 130 | + views=GlobeView(), |
| 131 | + view_state={"longitude": -100, "latitude": 40, "zoom": 5}, |
| 132 | + ) |
| 133 | + m.set_view_state(latitude=45) |
| 134 | + assert m.view_state == GlobeViewState(longitude=-100, latitude=45, zoom=5) |
| 135 | + |
| 136 | + |
| 137 | +def test_set_view_state_orbit(): |
| 138 | + m = Map( |
| 139 | + [], |
| 140 | + views=FirstPersonView(), |
| 141 | + view_state={"longitude": -100, "latitude": 40}, |
| 142 | + ) |
| 143 | + new_view_state = FirstPersonViewState( |
| 144 | + longitude=-120, |
| 145 | + latitude=50, |
| 146 | + position=(0, 0, 10), |
| 147 | + ) |
| 148 | + m.set_view_state(new_view_state) |
| 149 | + assert m.view_state == new_view_state |
0 commit comments