1+ #include < gtest/gtest.h>
2+ #include " cv/aggregator.hpp"
3+ TEST (ModifyRuns, OverWriteData)
4+ {
5+ PipelineParams params (std::nullopt ,
6+ " " ,
7+ false );
8+ Pipeline pipeline (params);
9+ CVAggregator aggregator (std::move (pipeline));
10+
11+ std::vector<IdentifiedTarget> updated;
12+ {
13+ auto lock = aggregator.getCVRecord ();
14+ auto ptr = lock.data ;
15+ // Add some mock runs
16+ for (int i = 1 ; i < 11 ; i++)
17+ {
18+ IdentifiedTarget target;
19+ target.set_run_id (i);
20+ // set mock bounding box
21+ GPSCoord *proto_coord = target.add_coordinates ();
22+ proto_coord->set_latitude (0 );
23+ proto_coord->set_longitude (0 );
24+ proto_coord->set_altitude (0 );
25+
26+ BboxProto *proto_bbox = target.add_bboxes ();
27+ proto_bbox->set_x1 (0 );
28+ proto_bbox->set_y1 (0 );
29+ proto_bbox->set_x2 (0 );
30+ proto_bbox->set_y2 (0 );
31+
32+ ptr->insert_or_assign (i, target);
33+ }
34+
35+ for (int i = 1 ; i < 11 ; i++)
36+ {
37+ IdentifiedTarget target;
38+ target.set_run_id (i);
39+
40+ GPSCoord *proto_coord = target.add_coordinates (); // Use the plural field name
41+ proto_coord->set_latitude (i);
42+ proto_coord->set_longitude (i);
43+ proto_coord->set_altitude (i);
44+
45+ // Add bounding box
46+ BboxProto *proto_bbox = target.add_bboxes (); // Use the plural field name
47+ proto_bbox->set_x1 (i);
48+ proto_bbox->set_y1 (i);
49+ proto_bbox->set_x2 (i);
50+ proto_bbox->set_y2 (i);
51+ ptr->insert_or_assign (i, target);
52+
53+ updated.push_back (target);
54+ }
55+ // deallocate to unlock the mutex
56+ }
57+ aggregator.updateRecords (updated);
58+
59+ for (auto value : updated)
60+ {
61+ auto lock = aggregator.getCVRecord ();
62+ auto ptr = lock.data ;
63+ ASSERT_TRUE (ptr->contains (value.run_id ()));
64+ for (int i = 0 ; i < value.bboxes_size (); i++)
65+ {
66+ ASSERT_EQ (value.bboxes ().at (i).x1 (), ptr->at (value.run_id ()).bboxes ().at (i).x1 ());
67+ ASSERT_EQ (value.bboxes ().at (i).y1 (), ptr->at (value.run_id ()).bboxes ().at (i).y1 ());
68+ ASSERT_EQ (value.bboxes ().at (i).x2 (), ptr->at (value.run_id ()).bboxes ().at (i).x2 ());
69+ ASSERT_EQ (value.bboxes ().at (i).y2 (), ptr->at (value.run_id ()).bboxes ().at (i).y2 ());
70+ }
71+ for (int i = 0 ; i < value.coordinates_size (); i++)
72+ {
73+ ASSERT_EQ (value.coordinates ().at (i).altitude (), ptr->at (value.run_id ()).coordinates ().at (i).altitude ());
74+ ASSERT_EQ (value.coordinates ().at (i).longitude (), ptr->at (value.run_id ()).coordinates ().at (i).longitude ());
75+ ASSERT_EQ (value.coordinates ().at (i).latitude (), ptr->at (value.run_id ()).coordinates ().at (i).latitude ());
76+ }
77+ }
78+ }
0 commit comments