Changeset 36247 in osm for applications/editors/josm


Ignore:
Timestamp:
2024-04-16T15:41:08+02:00 (3 months ago)
Author:
taylor.smock
Message:

See #23613: Add non-regression test for longitudes < 0

Also add what appears to be a secondary (either enhanced or degraded) elevation field.

Location:
applications/editors/josm/plugins/FIT/src
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/FIT/src/main/java/org/openstreetmap/josm/plugins/fit/lib/global/HeartRateCadenceDistanceSpeed.java

    r36245 r36247  
    6060                case 0 -> lat = decodeDegrees(NumberUtils.decodeLong(size, littleEndian, inputStream));
    6161                case 1 -> lon = decodeDegrees(NumberUtils.decodeLong(size, littleEndian, inputStream));
    62                 case 2 -> ele = decodeElevation(NumberUtils.decodeLong(size, littleEndian, inputStream));
     62                // 2 is documented ele, 78 also seems to be ele (GJ @ 1416m, record 78 in GJ test data decodes to ~1400)
     63                case 2, 78 -> ele = decodeElevation(NumberUtils.decodeLong(size, littleEndian, inputStream));
    6364                case 3 -> heartRate = NumberUtils.decodeShort(size, littleEndian, inputStream);
    6465                case 4 -> cadence = NumberUtils.decodeShort(size, littleEndian, inputStream);
  • applications/editors/josm/plugins/FIT/src/test/unit/org/openstreetmap/josm/plugins/fit/lib/FitReaderTest.java

    r36151 r36247  
    1111import java.io.IOException;
    1212import java.math.BigInteger;
     13import java.util.Arrays;
    1314import java.util.Collections;
    1415
    1516import org.junit.jupiter.api.Test;
     17import org.openstreetmap.josm.TestUtils;
     18import org.openstreetmap.josm.data.coor.ILatLon;
     19import org.openstreetmap.josm.plugins.fit.lib.global.FitData;
    1620import org.openstreetmap.josm.plugins.fit.lib.global.FitDevDataRecord;
    17 import org.openstreetmap.josm.plugins.fit.lib.global.Global;
    1821import org.openstreetmap.josm.plugins.fit.lib.global.FitDeveloperDataIdMessage;
    1922import org.openstreetmap.josm.plugins.fit.lib.global.FitDevice;
     23import org.openstreetmap.josm.plugins.fit.lib.global.Global;
    2024import org.openstreetmap.josm.plugins.fit.lib.global.HeartRateCadenceDistanceSpeed;
    2125import org.openstreetmap.josm.plugins.fit.lib.records.FitDevIntData;
     
    171175                () -> assertEquals(new HeartRateCadenceDistanceSpeed(144, 92, 3710, 3050, doughnuts), fitData[4]));
    172176    }
     177
     178    @Test
     179    void testNonRegression23613() throws IOException {
     180        final FitData[] fitData;
     181        try (final var inputStream = TestUtils.getRegressionDataStream(23613, "2023-10-30-05-04-50.fit")) {
     182            fitData = FitReader.read(inputStream);
     183        }
     184        final var heartRateCadenceDistanceSpeed = Arrays.stream(fitData).filter(HeartRateCadenceDistanceSpeed.class::isInstance)
     185                .map(HeartRateCadenceDistanceSpeed.class::cast).toArray(HeartRateCadenceDistanceSpeed[]::new);
     186        assertEquals(160, heartRateCadenceDistanceSpeed.length);
     187        assertEquals(157, Arrays.stream(heartRateCadenceDistanceSpeed)
     188                .filter(r -> !Double.isNaN(r.lat()) && !Double.isNaN(r.lon())).count());
     189        assertEquals(39.0662439, heartRateCadenceDistanceSpeed[2].lat(), ILatLon.MAX_SERVER_PRECISION);
     190        assertEquals(-108.5501406, heartRateCadenceDistanceSpeed[2].lon(), ILatLon.MAX_SERVER_PRECISION);
     191        assertEquals(39.0674976, heartRateCadenceDistanceSpeed[heartRateCadenceDistanceSpeed.length - 2].lat(),
     192                ILatLon.MAX_SERVER_PRECISION);
     193        assertEquals(-108.5603802, heartRateCadenceDistanceSpeed[heartRateCadenceDistanceSpeed.length - 2].lon(),
     194                ILatLon.MAX_SERVER_PRECISION);
     195    }
    173196}
Note: See TracChangeset for help on using the changeset viewer.