JSONAlias on old tag type enum names (#1055)

add aliases for older enum names

* two more aliases for 6.5" 36h11 tags

* added unit test for missing @JsonAlias

* use proper tempfiles

* check proper TargetModel enum
This commit is contained in:
Craig Schardt
2023-12-18 11:42:43 -06:00
committed by GitHub
parent f7f304ca7a
commit 36ba8b5263
2 changed files with 28 additions and 3 deletions

View File

@@ -16,6 +16,7 @@
*/
package org.photonvision.vision.target;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -108,6 +109,7 @@ public enum TargetModel implements Releasable {
-Units.inchesToMeters(9.5) / 2)),
0),
// 2023 AprilTag, with 6 inch marker width (inner black square).
@JsonAlias({"k6in_16h5"})
kAprilTag6in_16h5(
// Corners of the tag's inner black square (excluding white border)
List.of(
@@ -117,6 +119,7 @@ public enum TargetModel implements Releasable {
new Point3(Units.inchesToMeters(3), -Units.inchesToMeters(3), 0)),
Units.inchesToMeters(3 * 2)),
// 2024 AprilTag, with 6.5 inch marker width (inner black square).
@JsonAlias({"k6p5in_36h11", "k200mmAprilTag", "kAruco6p5in_36h11"})
kAprilTag6p5in_36h11(
// Corners of the tag's inner black square (excluding white border)
List.of(

View File

@@ -31,6 +31,7 @@ import org.photonvision.common.logging.Logger;
import org.photonvision.common.util.TestUtils;
import org.photonvision.common.util.file.JacksonUtils;
import org.photonvision.vision.pipeline.AprilTagPipelineSettings;
import org.photonvision.vision.pipeline.CVPipelineSettings;
import org.photonvision.vision.pipeline.ColoredShapePipelineSettings;
import org.photonvision.vision.pipeline.ReflectivePipelineSettings;
import org.photonvision.vision.target.TargetModel;
@@ -132,13 +133,34 @@ public class ConfigTest {
public void testJacksonHandlesOldVersions() throws IOException {
var str =
"{\"baseName\":\"aaaaaa\",\"uniqueName\":\"aaaaaa\",\"nickname\":\"aaaaaa\",\"FOV\":70.0,\"path\":\"dev/vid\",\"cameraType\":\"UsbCamera\",\"currentPipelineIndex\":0,\"camPitch\":{\"radians\":0.0},\"calibrations\":[], \"cameraLEDs\":[]}";
var writer = new FileWriter("test.json");
File tempFile = File.createTempFile("test", ".json");
tempFile.deleteOnExit();
var writer = new FileWriter(tempFile);
writer.write(str);
writer.flush();
writer.close();
Assertions.assertDoesNotThrow(
() -> JacksonUtils.deserialize(Path.of("test.json"), CameraConfiguration.class));
() -> JacksonUtils.deserialize(tempFile.toPath(), CameraConfiguration.class));
new File("test.json").delete();
tempFile.delete();
}
@Test
public void testJacksonHandlesOldTargetEnum() throws IOException {
var str = "[ \"AprilTagPipelineSettings\", {\n \"targetModel\" : \"k6in_16h5\"\n} ]\n";
File tempFile = File.createTempFile("test", ".json");
tempFile.deleteOnExit();
var writer = new FileWriter(tempFile);
writer.write(str);
writer.flush();
writer.close();
AprilTagPipelineSettings settings =
(AprilTagPipelineSettings)
JacksonUtils.deserialize(tempFile.toPath(), CVPipelineSettings.class);
Assertions.assertEquals(TargetModel.kAprilTag6in_16h5, settings.targetModel);
tempFile.delete();
}
}