mirror of https://github.com/dsoprea/go-exif.git
113 lines
2.0 KiB
Go
113 lines
2.0 KiB
Go
package exif
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
|
|
"github.com/dsoprea/go-logging"
|
|
)
|
|
|
|
func TestValueContext_ReadAscii(t *testing.T) {
|
|
defer func() {
|
|
if state := recover(); state != nil {
|
|
err := log.Wrap(state.(error))
|
|
log.PrintErrorf(err, "Test failure.")
|
|
}
|
|
}()
|
|
|
|
rawExif, err := SearchFileAndExtractExif(testImageFilepath)
|
|
log.PanicIf(err)
|
|
|
|
im := NewIfdMapping()
|
|
|
|
err = LoadStandardIfds(im)
|
|
log.PanicIf(err)
|
|
|
|
ti := NewTagIndex()
|
|
|
|
_, index, err := Collect(im, ti, rawExif)
|
|
log.PanicIf(err)
|
|
|
|
ifd := index.RootIfd
|
|
|
|
var ite *IfdTagEntry
|
|
for _, thisIte := range ifd.Entries {
|
|
if thisIte.TagId == 0x0110 {
|
|
ite = thisIte
|
|
break
|
|
}
|
|
}
|
|
|
|
if ite == nil {
|
|
t.Fatalf("Tag not found.")
|
|
}
|
|
|
|
valueContext := ifd.GetValueContext(ite)
|
|
|
|
decodedString, err := valueContext.ReadAscii()
|
|
log.PanicIf(err)
|
|
|
|
decodedBytes := []byte(decodedString)
|
|
|
|
expected := []byte("Canon EOS 5D Mark III")
|
|
|
|
if bytes.Compare(decodedBytes, expected) != 0 {
|
|
t.Fatalf("Decoded bytes not correct.")
|
|
}
|
|
}
|
|
|
|
func TestValueContext_Undefined(t *testing.T) {
|
|
defer func() {
|
|
if state := recover(); state != nil {
|
|
err := log.Wrap(state.(error))
|
|
log.PrintErrorf(err, "Test failure.")
|
|
}
|
|
}()
|
|
|
|
rawExif, err := SearchFileAndExtractExif(testImageFilepath)
|
|
log.PanicIf(err)
|
|
|
|
im := NewIfdMapping()
|
|
|
|
err = LoadStandardIfds(im)
|
|
log.PanicIf(err)
|
|
|
|
ti := NewTagIndex()
|
|
|
|
_, index, err := Collect(im, ti, rawExif)
|
|
log.PanicIf(err)
|
|
|
|
ifdExif := index.Lookup[IfdPathStandardExif][0]
|
|
|
|
var ite *IfdTagEntry
|
|
for _, thisIte := range ifdExif.Entries {
|
|
if thisIte.TagId == 0x9000 {
|
|
ite = thisIte
|
|
break
|
|
}
|
|
}
|
|
|
|
if ite == nil {
|
|
t.Fatalf("Tag not found.")
|
|
}
|
|
|
|
valueContext := ifdExif.GetValueContext(ite)
|
|
|
|
value, err := valueContext.Undefined()
|
|
log.PanicIf(err)
|
|
|
|
gs, ok := value.(TagUnknownType_GeneralString)
|
|
if ok != true {
|
|
t.Fatalf("Undefined value not processed correctly.")
|
|
}
|
|
|
|
decodedBytes, err := gs.ValueBytes()
|
|
log.PanicIf(err)
|
|
|
|
expected := []byte("0230")
|
|
|
|
if bytes.Compare(decodedBytes, expected) != 0 {
|
|
t.Fatalf("Decoded bytes not correct.")
|
|
}
|
|
}
|