mirror of https://github.com/dsoprea/go-exif.git
62 lines
1.6 KiB
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)
|
|
}
|
|
}
|