fixed issue with xml signature reading
This commit is contained in:
parent
c1497dc29c
commit
7115d3b2d6
@ -10,6 +10,10 @@ Official GPX format is on [topografix](https://www.topografix.com/GPX/1/1/) site
|
||||
|
||||
## Changelog
|
||||
|
||||
### 2023-03-26
|
||||
|
||||
1) Fixed signature reading
|
||||
|
||||
### 2023-02-13
|
||||
|
||||
1) Fixed missed extensions
|
||||
|
@ -33,9 +33,7 @@ class GpxReader {
|
||||
.trim()
|
||||
.replace("'", "\"")
|
||||
.replace(" ?", "?")
|
||||
if (GpxConstant.HEADER != signaturePrepared
|
||||
&& GpxConstant.HEADER_EXTENDED != signaturePrepared
|
||||
) {
|
||||
if (!signaturePrepared.startsWith("<?xml") || !signaturePrepared.endsWith("?>")) {
|
||||
throw IllegalArgumentException("Wrong xml signature!")
|
||||
}
|
||||
return readBeginning(dis, Container.empty(container.position))
|
||||
|
@ -401,11 +401,11 @@ class GpxReaderTest {
|
||||
</trk>
|
||||
</gpx>
|
||||
""".trim()
|
||||
.lineSequence()
|
||||
.map {
|
||||
it.trim()
|
||||
}
|
||||
.joinToString("\n")
|
||||
.lineSequence()
|
||||
.map {
|
||||
it.trim()
|
||||
}
|
||||
.joinToString("\n")
|
||||
|
||||
val gpx = GpxType.read(gpxString.byteInputStream())
|
||||
assertEquals(gpxType, gpx)
|
||||
@ -430,4 +430,84 @@ class GpxReaderTest {
|
||||
Assertions.assertEquals(20, gpxType.trk?.get(0)?.trkseg?.get(0)?.trkpt?.size ?: 0)
|
||||
Assertions.assertEquals(4, gpxType.trk?.get(0)?.trkseg?.get(0)?.trkpt?.get(0)?.extensions?.size ?: 0)
|
||||
}
|
||||
|
||||
@DisplayName("Read track-2023-03-09--21-10-54.gpx")
|
||||
@Test
|
||||
fun readTestGpx_v_1_10_3() {
|
||||
val gpxType = GpxType.read(javaClass.classLoader.getResource("track-2023-03-09--21-10-54.gpx").openStream())
|
||||
Assertions.assertEquals(4, gpxType.trk?.get(0)?.trkseg?.get(0)?.trkpt?.get(0)?.extensions?.size ?: 0)
|
||||
}
|
||||
|
||||
@DisplayName("test xml signature")
|
||||
@Test
|
||||
fun testXmlSignature() {
|
||||
val gpx = """<gpx
|
||||
xmlns="http://www.topografix.com/GPX/1/1"
|
||||
version="1.1"
|
||||
creator="me.bvn13.sdk.android.gpx"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
|
||||
<time>2022-09-24T15:04:00+03:00</time>
|
||||
<metadata>
|
||||
<name>test name</name>
|
||||
<desc></desc>
|
||||
<author>
|
||||
<name></name>
|
||||
</author>
|
||||
</metadata>
|
||||
<trk>
|
||||
<name>track1</name>
|
||||
<trkseg>
|
||||
<trkpt lat="123.0" lon="321.0">
|
||||
</trkpt>
|
||||
</trkseg>
|
||||
</trk>
|
||||
</gpx>"""
|
||||
GpxType.read("""
|
||||
<?xml version="1.0" standalone="yes" encoding="UTF-8"?>
|
||||
$gpx
|
||||
""".trim()
|
||||
.lineSequence()
|
||||
.map {
|
||||
it.trim()
|
||||
}
|
||||
.joinToString("\n")
|
||||
.byteInputStream()
|
||||
)
|
||||
GpxType.read("""
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
$gpx
|
||||
""".trim()
|
||||
.lineSequence()
|
||||
.map {
|
||||
it.trim()
|
||||
}
|
||||
.joinToString("\n")
|
||||
.byteInputStream()
|
||||
)
|
||||
GpxType.read(
|
||||
"""
|
||||
<?xml version="1.0"?>
|
||||
$gpx
|
||||
""".trim()
|
||||
.lineSequence()
|
||||
.map {
|
||||
it.trim()
|
||||
}
|
||||
.joinToString("\n")
|
||||
.byteInputStream()
|
||||
)
|
||||
GpxType.read(
|
||||
"""
|
||||
<?xml?>
|
||||
$gpx
|
||||
""".trim()
|
||||
.lineSequence()
|
||||
.map {
|
||||
it.trim()
|
||||
}
|
||||
.joinToString("\n")
|
||||
.byteInputStream()
|
||||
)
|
||||
}
|
||||
}
|
28731
src/test/resources/track-2023-03-09--21-10-54.gpx
Normal file
28731
src/test/resources/track-2023-03-09--21-10-54.gpx
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user