Skip to content

Commit ed585c9

Browse files
Drew KaulDrew Kaul
authored andcommitted
add test for Scene to_json method and fix bug
1 parent 5d3c53a commit ed585c9

File tree

2 files changed

+54
-7
lines changed

2 files changed

+54
-7
lines changed

nucleus/dataset_item.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,14 @@ def __post_init__(self):
118118

119119
@classmethod
120120
def from_json(cls, payload: dict, is_scene=False):
121-
image_url = payload.get(IMAGE_URL_KEY, "") or payload.get(
122-
ORIGINAL_IMAGE_URL_KEY, ""
121+
image_url = payload.get(IMAGE_URL_KEY, None) or payload.get(
122+
ORIGINAL_IMAGE_URL_KEY, None
123123
)
124124

125125
if is_scene:
126126
return cls(
127127
image_location=image_url,
128-
pointcloud_location=payload.get(POINTCLOUD_URL_KEY, ""),
128+
pointcloud_location=payload.get(POINTCLOUD_URL_KEY, None),
129129
reference_id=payload.get(REFERENCE_ID_KEY, None),
130130
item_id=payload.get(DATASET_ITEM_ID_KEY, None),
131131
metadata=payload.get(METADATA_KEY, {}),

tests/test_scene.py

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
ANNOTATIONS_KEY,
44
FRAMES_KEY,
55
IMAGE_KEY,
6+
IMAGE_URL_KEY,
67
LENGTH_KEY,
78
METADATA_KEY,
89
NUM_SENSORS_KEY,
910
POINTCLOUD_KEY,
11+
POINTCLOUD_URL_KEY,
1012
REFERENCE_ID_KEY,
1113
SCENES_KEY,
1214
TYPE_KEY,
@@ -18,6 +20,7 @@
1820
CuboidAnnotation,
1921
LidarScene,
2022
Frame,
23+
DatasetItem,
2124
)
2225

2326
from nucleus.scene import (
@@ -43,7 +46,7 @@ def dataset(CLIENT):
4346
assert response == {"message": "Beginning dataset deletion..."}
4447

4548

46-
def test_frame_add_item(dataset):
49+
def test_frame_add_item():
4750
frame = Frame(index=0)
4851
frame.add_item(TEST_DATASET_ITEMS[0], "camera")
4952
frame.add_item(TEST_LIDAR_ITEMS[0], "lidar")
@@ -69,7 +72,51 @@ def test_frame_add_item(dataset):
6972
}
7073

7174

72-
def test_scene_property_methods(dataset):
75+
def test_scene_from_json():
76+
payload = TEST_LIDAR_SCENES
77+
scene_json = payload[SCENES_KEY][0]
78+
scene = LidarScene.from_json(scene_json)
79+
80+
frames = scene_json[FRAMES_KEY]
81+
camera_item_1 = frames[0]["camera"]
82+
camera_item = DatasetItem(
83+
camera_item_1[IMAGE_URL_KEY],
84+
camera_item_1[REFERENCE_ID_KEY],
85+
metadata=camera_item_1[METADATA_KEY],
86+
)
87+
lidar_item_1 = frames[0]["lidar"]
88+
lidar_item_f1 = DatasetItem(
89+
pointcloud_location=lidar_item_1[POINTCLOUD_URL_KEY],
90+
reference_id=lidar_item_1[REFERENCE_ID_KEY],
91+
metadata=lidar_item_1[METADATA_KEY],
92+
)
93+
expected_items_1 = {
94+
"camera": camera_item,
95+
"lidar": lidar_item_f1,
96+
}
97+
lidar_item_2 = frames[1]["lidar"]
98+
lidar_item_f2 = DatasetItem(
99+
pointcloud_location=lidar_item_2[POINTCLOUD_URL_KEY],
100+
reference_id=lidar_item_2[REFERENCE_ID_KEY],
101+
metadata=lidar_item_2[METADATA_KEY],
102+
)
103+
expected_items_2 = {
104+
"lidar": lidar_item_f2,
105+
}
106+
107+
expected_frames = [Frame(expected_items_1), Frame(expected_items_2)]
108+
expected_scene = LidarScene(
109+
scene_json[REFERENCE_ID_KEY], expected_frames, metadata={}
110+
)
111+
assert sorted(
112+
scene.get_items(), key=lambda item: item.reference_id
113+
) == sorted(expected_scene.get_items(), key=lambda item: item.reference_id)
114+
assert scene.get_frames() == expected_scene.get_frames()
115+
assert set(scene.get_sensors()) == set(expected_scene.get_sensors())
116+
assert scene.to_payload() == expected_scene.to_payload()
117+
118+
119+
def test_scene_property_methods():
73120
payload = TEST_LIDAR_SCENES
74121
scene_json = payload[SCENES_KEY][0]
75122
scene = LidarScene.from_json(scene_json)
@@ -86,7 +133,7 @@ def test_scene_property_methods(dataset):
86133
}
87134

88135

89-
def test_scene_add_item(dataset):
136+
def test_scene_add_item():
90137
scene_ref_id = "scene_1"
91138
scene = LidarScene(scene_ref_id)
92139
scene.add_item(0, "camera", TEST_DATASET_ITEMS[0])
@@ -139,7 +186,7 @@ def test_scene_add_item(dataset):
139186
}
140187

141188

142-
def test_scene_add_frame(dataset):
189+
def test_scene_add_frame():
143190
frame_1 = Frame()
144191
frame_1.add_item(TEST_DATASET_ITEMS[0], "camera")
145192
frame_1.add_item(TEST_LIDAR_ITEMS[0], "lidar")

0 commit comments

Comments
 (0)