go-exif/v3/gps_test.go

62 lines
1.6 KiB
Go

package exif
import (
"math"
"reflect"
"testing"
"github.com/dsoprea/go-logging"
"github.com/dsoprea/go-exif/v3/common"
)
func TestNewGpsDegreesFromRationals(t *testing.T) {
latitudeRaw := []exifcommon.Rational{
{Numerator: 22, Denominator: 2},
{Numerator: 66, Denominator: 3},
{Numerator: 132, Denominator: 4},
}
gd, err := NewGpsDegreesFromRationals("W", latitudeRaw)
log.PanicIf(err)
if gd.Orientation != 'W' {
t.Fatalf("Orientation was not set correctly: [%s]", string([]byte{gd.Orientation}))
}
degreesRightBound := math.Nextafter(11.0, 12.0)
minutesRightBound := math.Nextafter(22.0, 23.0)
secondsRightBound := math.Nextafter(33.0, 34.0)
if gd.Degrees < 11.0 || gd.Degrees >= degreesRightBound {
t.Fatalf("Degrees is not correct: (%.2f)", gd.Degrees)
} else if gd.Minutes < 22.0 || gd.Minutes >= minutesRightBound {
t.Fatalf("Minutes is not correct: (%.2f)", gd.Minutes)
} else if gd.Seconds < 33.0 || gd.Seconds >= secondsRightBound {
t.Fatalf("Seconds is not correct: (%.2f)", gd.Seconds)
}
}
func TestGpsDegrees_Raw(t *testing.T) {
latitudeRaw := []exifcommon.Rational{
{Numerator: 22, Denominator: 2},
{Numerator: 66, Denominator: 3},
{Numerator: 132, Denominator: 4},
}
gd, err := NewGpsDegreesFromRationals("W", latitudeRaw)
log.PanicIf(err)
actual := gd.Raw()
expected := []exifcommon.Rational{
{Numerator: 11, Denominator: 1},
{Numerator: 22, Denominator: 1},
{Numerator: 33, Denominator: 1},
}
if reflect.DeepEqual(actual, expected) != true {
t.Fatalf("GpsInfo not correctly encoded down to raw: %v\n", actual)
}
}