v0.8.0: enrich XMP metadata
This commit is contained in:
@@ -168,6 +168,63 @@ func TestParseAssetsJSON(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseAssetsJSONExtendedMetadata(t *testing.T) {
|
||||
created := "2024-01-01T00:00:00Z"
|
||||
modified := "2024-01-02T00:00:00Z"
|
||||
assets, total, err := ParseAssetsJSON(`{"assets":[{"id":"x1","filename":"IMG.HEIC","mediaType":"image","mediaSubtypes":["photoLive","photoHDR"],"sourceType":"userLibrary","playbackStyle":"livePhoto","pixelWidth":1,"pixelHeight":2,"creationDate":"2024-01-01T00:00:00Z","modificationDate":"2024-01-02T00:00:00Z","duration":3.5,"isFavorite":true,"isHidden":true,"hasAdjustments":true,"location":{"latitude":59.1,"longitude":18.2,"altitude":10,"horizontalAccuracy":5},"burstIdentifier":"burst","representsBurst":true,"burstSelectionTypes":["autoPick"],"adjustmentInfo":{"formatIdentifier":"fmt","formatVersion":"1","baseFilename":"base.heic"},"resources":[{"type":"adjustmentData","filename":"adj.plist","uti":"public.plist","local":true,"size":42}]}],"total":1}`)
|
||||
if err != nil || total != 1 || len(assets) != 1 {
|
||||
t.Fatalf("ParseAssetsJSON err=%v total=%d len=%d", err, total, len(assets))
|
||||
}
|
||||
a := assets[0]
|
||||
if a.CreationDate == nil || *a.CreationDate != created || a.ModificationDate == nil || *a.ModificationDate != modified {
|
||||
t.Fatalf("unexpected dates: %+v", a)
|
||||
}
|
||||
if a.Location == nil || a.Location.Latitude != 59.1 || a.Location.Longitude != 18.2 || !a.IsHidden || !a.HasAdjustments || !a.RepresentsBurst {
|
||||
t.Fatalf("unexpected extended metadata: %+v", a)
|
||||
}
|
||||
if len(a.MediaSubtypes) != 2 || a.SourceType != "userLibrary" || a.PlaybackStyle != "livePhoto" || len(a.BurstSelectionTypes) != 1 {
|
||||
t.Fatalf("unexpected type metadata: %+v", a)
|
||||
}
|
||||
if a.AdjustmentInfo == nil || a.AdjustmentInfo.FormatIdentifier != "fmt" || a.Resources[0].Size != 42 {
|
||||
t.Fatalf("unexpected adjustment/resource metadata: %+v", a)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParsePlacemarkJSON(t *testing.T) {
|
||||
p, err := ParsePlacemarkJSON(`{"placemark":{"country":"Sweden","countryCode":"SE","locality":"Stockholm","formattedAddress":"Stockholm, Sweden","areasOfInterest":["Gamla stan"]}}`)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if p.Country != "Sweden" || p.CountryCode != "SE" || p.Locality != "Stockholm" || len(p.AreasOfInterest) != 1 {
|
||||
t.Fatalf("unexpected placemark: %+v", p)
|
||||
}
|
||||
if _, err := ParsePlacemarkJSON(`{"error":"geocode failed"}`); err == nil || err.Error() != "geocode failed" {
|
||||
t.Fatalf("expected geocode error, got %v", err)
|
||||
}
|
||||
if _, err := ParsePlacemarkJSON(`bad`); err == nil {
|
||||
t.Fatal("expected invalid JSON error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCgoBridgeReverseGeocode(t *testing.T) {
|
||||
SetTestGeocodeJSON(`{"placemark":{"country":"Sweden","locality":"Stockholm"}}`)
|
||||
p, err := (&CgoBridge{}).ReverseGeocode(59.3293, 18.0686)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if p.Country != "Sweden" || p.Locality != "Stockholm" {
|
||||
t.Fatalf("unexpected placemark: %+v", p)
|
||||
}
|
||||
SetTestGeocodeJSON(`{"error":"no network"}`)
|
||||
if _, err := (&CgoBridge{}).ReverseGeocode(0, 0); err == nil || err.Error() != "no network" {
|
||||
t.Fatalf("expected geocode error, got %v", err)
|
||||
}
|
||||
SetTestGeocodeNull()
|
||||
if _, err := (&CgoBridge{}).ReverseGeocode(0, 0); err != errBridgeNil {
|
||||
t.Fatalf("expected nil bridge error, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseTreeJSON(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
|
||||
Reference in New Issue
Block a user