mirror of
https://github.com/dsoprea/go-exif.git
synced 2025-05-31 11:41:57 +00:00
ifd_builder: renamed builderTag to BuilderTag.
- It's probably a generally good idea. - These are usually created by other methods, but they're regularly interacted with when you want to make tag changes and by making them private we can't public official, testable examples. - Corrected names for new examples.
This commit is contained in:
parent
81b804b70d
commit
570c4d582c
@ -23,7 +23,6 @@ var (
|
|||||||
ErrTagEntryNotFound = errors.New("tag entry not found")
|
ErrTagEntryNotFound = errors.New("tag entry not found")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
type IfdBuilderTagValue struct {
|
type IfdBuilderTagValue struct {
|
||||||
valueBytes []byte
|
valueBytes []byte
|
||||||
ib *IfdBuilder
|
ib *IfdBuilder
|
||||||
@ -83,8 +82,7 @@ func (ibtv IfdBuilderTagValue) Ib() *IfdBuilder {
|
|||||||
return ibtv.ib
|
return ibtv.ib
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type BuilderTag struct {
|
||||||
type builderTag struct {
|
|
||||||
// ii is the IfdIdentity of the IFD that hosts this tag.
|
// ii is the IfdIdentity of the IFD that hosts this tag.
|
||||||
ii IfdIdentity
|
ii IfdIdentity
|
||||||
|
|
||||||
@ -97,8 +95,8 @@ type builderTag struct {
|
|||||||
value *IfdBuilderTagValue
|
value *IfdBuilderTagValue
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBuilderTag(ii IfdIdentity, tagId uint16, typeId uint16, value *IfdBuilderTagValue) *builderTag {
|
func NewBuilderTag(ii IfdIdentity, tagId uint16, typeId uint16, value *IfdBuilderTagValue) *BuilderTag {
|
||||||
return &builderTag{
|
return &BuilderTag{
|
||||||
ii: ii,
|
ii: ii,
|
||||||
tagId: tagId,
|
tagId: tagId,
|
||||||
typeId: typeId,
|
typeId: typeId,
|
||||||
@ -106,13 +104,13 @@ func NewBuilderTag(ii IfdIdentity, tagId uint16, typeId uint16, value *IfdBuilde
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewStandardBuilderTag(ii IfdIdentity, tagId uint16, value *IfdBuilderTagValue) *builderTag {
|
func NewStandardBuilderTag(ii IfdIdentity, tagId uint16, value *IfdBuilderTagValue) *BuilderTag {
|
||||||
ti := NewTagIndex()
|
ti := NewTagIndex()
|
||||||
|
|
||||||
it, err := ti.Get(ii, tagId)
|
it, err := ti.Get(ii, tagId)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
return &builderTag{
|
return &BuilderTag{
|
||||||
ii: ii,
|
ii: ii,
|
||||||
tagId: tagId,
|
tagId: tagId,
|
||||||
typeId: it.Type,
|
typeId: it.Type,
|
||||||
@ -120,8 +118,8 @@ func NewStandardBuilderTag(ii IfdIdentity, tagId uint16, value *IfdBuilderTagVal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewChildIfdBuilderTag(ii IfdIdentity, tagId uint16, value *IfdBuilderTagValue) *builderTag {
|
func NewChildIfdBuilderTag(ii IfdIdentity, tagId uint16, value *IfdBuilderTagValue) *BuilderTag {
|
||||||
return &builderTag{
|
return &BuilderTag{
|
||||||
ii: ii,
|
ii: ii,
|
||||||
tagId: tagId,
|
tagId: tagId,
|
||||||
typeId: TypeLong,
|
typeId: TypeLong,
|
||||||
@ -129,15 +127,15 @@ func NewChildIfdBuilderTag(ii IfdIdentity, tagId uint16, value *IfdBuilderTagVal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bt *builderTag) Value() (value *IfdBuilderTagValue) {
|
func (bt *BuilderTag) Value() (value *IfdBuilderTagValue) {
|
||||||
return bt.value
|
return bt.value
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bt *builderTag) String() string {
|
func (bt *BuilderTag) String() string {
|
||||||
return fmt.Sprintf("BuilderTag<IFD=[%s] TAG-ID=(0x%04x) TAG-TYPE=[%s] VALUE=[%s]>", bt.ii, bt.tagId, TypeNames[bt.typeId], bt.value)
|
return fmt.Sprintf("BuilderTag<IFD=[%s] TAG-ID=(0x%04x) TAG-TYPE=[%s] VALUE=[%s]>", bt.ii, bt.tagId, TypeNames[bt.typeId], bt.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bt *builderTag) SetValue(byteOrder binary.ByteOrder, value interface{}) (err error) {
|
func (bt *BuilderTag) SetValue(byteOrder binary.ByteOrder, value interface{}) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -167,9 +165,9 @@ func (bt *builderTag) SetValue(byteOrder binary.ByteOrder, value interface{}) (e
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewStandardBuilderTagFromConfig constructs a `builderTag` instance. The type
|
// NewStandardBuilderTagFromConfig constructs a `BuilderTag` instance. The type
|
||||||
// is looked up. `ii` is the type of IFD that owns this tag.
|
// is looked up. `ii` is the type of IFD that owns this tag.
|
||||||
func NewStandardBuilderTagFromConfig(ii IfdIdentity, tagId uint16, byteOrder binary.ByteOrder, value interface{}) *builderTag {
|
func NewStandardBuilderTagFromConfig(ii IfdIdentity, tagId uint16, byteOrder binary.ByteOrder, value interface{}) *BuilderTag {
|
||||||
ti := NewTagIndex()
|
ti := NewTagIndex()
|
||||||
|
|
||||||
it, err := ti.Get(ii, tagId)
|
it, err := ti.Get(ii, tagId)
|
||||||
@ -202,9 +200,9 @@ func NewStandardBuilderTagFromConfig(ii IfdIdentity, tagId uint16, byteOrder bin
|
|||||||
tagValue)
|
tagValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewStandardBuilderTagFromConfig constructs a `builderTag` instance. The type is
|
// NewStandardBuilderTagFromConfig constructs a `BuilderTag` instance. The type is
|
||||||
// explicitly provided. `ii` is the type of IFD that owns this tag.
|
// explicitly provided. `ii` is the type of IFD that owns this tag.
|
||||||
func NewBuilderTagFromConfig(ii IfdIdentity, tagId uint16, typeId uint16, byteOrder binary.ByteOrder, value interface{}) *builderTag {
|
func NewBuilderTagFromConfig(ii IfdIdentity, tagId uint16, typeId uint16, byteOrder binary.ByteOrder, value interface{}) *BuilderTag {
|
||||||
tt := NewTagType(typeId, byteOrder)
|
tt := NewTagType(typeId, byteOrder)
|
||||||
|
|
||||||
ve := NewValueEncoder(byteOrder)
|
ve := NewValueEncoder(byteOrder)
|
||||||
@ -234,7 +232,7 @@ func NewBuilderTagFromConfig(ii IfdIdentity, tagId uint16, typeId uint16, byteOr
|
|||||||
// NewStandardBuilderTagFromConfigWithName allows us to easily generate solid, consistent tags
|
// NewStandardBuilderTagFromConfigWithName allows us to easily generate solid, consistent tags
|
||||||
// for testing with. `ii` is the type of IFD that owns this tag. This can not be
|
// for testing with. `ii` is the type of IFD that owns this tag. This can not be
|
||||||
// an IFD (IFDs are not associated with standardized, official names).
|
// an IFD (IFDs are not associated with standardized, official names).
|
||||||
func NewStandardBuilderTagFromConfigWithName(ii IfdIdentity, tagName string, byteOrder binary.ByteOrder, value interface{}) *builderTag {
|
func NewStandardBuilderTagFromConfigWithName(ii IfdIdentity, tagName string, byteOrder binary.ByteOrder, value interface{}) *BuilderTag {
|
||||||
ti := NewTagIndex()
|
ti := NewTagIndex()
|
||||||
|
|
||||||
it, err := ti.GetWithName(ii, tagName)
|
it, err := ti.GetWithName(ii, tagName)
|
||||||
@ -266,7 +264,6 @@ func NewStandardBuilderTagFromConfigWithName(ii IfdIdentity, tagName string, byt
|
|||||||
tagValue)
|
tagValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type IfdBuilder struct {
|
type IfdBuilder struct {
|
||||||
// ifd is the IfdIdentity instance of the IFD that owns the current tag.
|
// ifd is the IfdIdentity instance of the IFD that owns the current tag.
|
||||||
ii IfdIdentity
|
ii IfdIdentity
|
||||||
@ -277,7 +274,7 @@ type IfdBuilder struct {
|
|||||||
byteOrder binary.ByteOrder
|
byteOrder binary.ByteOrder
|
||||||
|
|
||||||
// Includes both normal tags and IFD tags (which point to child IFDs).
|
// Includes both normal tags and IFD tags (which point to child IFDs).
|
||||||
tags []*builderTag
|
tags []*BuilderTag
|
||||||
|
|
||||||
// existingOffset will be the offset that this IFD is currently found at if
|
// existingOffset will be the offset that this IFD is currently found at if
|
||||||
// it represents an IFD that has previously been stored (or 0 if not).
|
// it represents an IFD that has previously been stored (or 0 if not).
|
||||||
@ -302,7 +299,7 @@ func NewIfdBuilder(ii IfdIdentity, byteOrder binary.ByteOrder) (ib *IfdBuilder)
|
|||||||
ifdTagId: ifdTagId,
|
ifdTagId: ifdTagId,
|
||||||
|
|
||||||
byteOrder: byteOrder,
|
byteOrder: byteOrder,
|
||||||
tags: make([]*builderTag, 0),
|
tags: make([]*BuilderTag, 0),
|
||||||
}
|
}
|
||||||
|
|
||||||
return ib
|
return ib
|
||||||
@ -367,7 +364,7 @@ func (ib *IfdBuilder) String() string {
|
|||||||
return fmt.Sprintf("IfdBuilder<PARENT-IFD=[%s] IFD=[%s] TAG-ID=(0x%04x) COUNT=(%d) OFF=(0x%04x) NEXT-IFD=(0x%04x)>", ib.ii.ParentIfdName, ib.ii.IfdName, ib.ifdTagId, len(ib.tags), ib.existingOffset, nextIfdPhrase)
|
return fmt.Sprintf("IfdBuilder<PARENT-IFD=[%s] IFD=[%s] TAG-ID=(0x%04x) COUNT=(%d) OFF=(0x%04x) NEXT-IFD=(0x%04x)>", ib.ii.ParentIfdName, ib.ii.IfdName, ib.ifdTagId, len(ib.tags), ib.existingOffset, nextIfdPhrase)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ib *IfdBuilder) Tags() (tags []*builderTag) {
|
func (ib *IfdBuilder) Tags() (tags []*BuilderTag) {
|
||||||
return ib.tags
|
return ib.tags
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,11 +416,9 @@ func (ib *IfdBuilder) SetThumbnail(data []byte) (err error) {
|
|||||||
err = ib.Set(sizeBt)
|
err = ib.Set(sizeBt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// TODO(dustin): !! Debugging.
|
// TODO(dustin): !! Debugging.
|
||||||
// fmt.Printf("Set thumbnail into IB.\n")
|
// fmt.Printf("Set thumbnail into IB.\n")
|
||||||
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -588,7 +583,7 @@ func (ib *IfdBuilder) DeleteN(tagId uint16, n int) (err error) {
|
|||||||
log.Panicf("N must be at least 1: (%d)", n)
|
log.Panicf("N must be at least 1: (%d)", n)
|
||||||
}
|
}
|
||||||
|
|
||||||
for ; n > 0; {
|
for n > 0 {
|
||||||
j := -1
|
j := -1
|
||||||
for i, bt := range ib.tags {
|
for i, bt := range ib.tags {
|
||||||
if bt.tagId == tagId {
|
if bt.tagId == tagId {
|
||||||
@ -642,7 +637,7 @@ func (ib *IfdBuilder) DeleteAll(tagId uint16) (n int, err error) {
|
|||||||
return n, nil
|
return n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ib *IfdBuilder) ReplaceAt(position int, bt *builderTag) (err error) {
|
func (ib *IfdBuilder) ReplaceAt(position int, bt *BuilderTag) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -660,7 +655,7 @@ func (ib *IfdBuilder) ReplaceAt(position int, bt *builderTag) (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ib *IfdBuilder) Replace(tagId uint16, bt *builderTag) (err error) {
|
func (ib *IfdBuilder) Replace(tagId uint16, bt *BuilderTag) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -676,7 +671,7 @@ func (ib *IfdBuilder) Replace(tagId uint16, bt *builderTag) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set will add a new entry or update an existing entry.
|
// Set will add a new entry or update an existing entry.
|
||||||
func (ib *IfdBuilder) Set(bt *builderTag) (err error) {
|
func (ib *IfdBuilder) Set(bt *BuilderTag) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -734,7 +729,7 @@ func (ib *IfdBuilder) Find(tagId uint16) (position int, err error) {
|
|||||||
return found[0], nil
|
return found[0], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ib *IfdBuilder) FindTag(tagId uint16) (bt *builderTag, err error) {
|
func (ib *IfdBuilder) FindTag(tagId uint16) (bt *BuilderTag, err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -753,7 +748,7 @@ func (ib *IfdBuilder) FindTag(tagId uint16) (bt *builderTag, err error) {
|
|||||||
return ib.tags[position], nil
|
return ib.tags[position], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ib *IfdBuilder) FindTagWithName(tagName string) (bt *builderTag, err error) {
|
func (ib *IfdBuilder) FindTagWithName(tagName string) (bt *BuilderTag, err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -777,7 +772,7 @@ func (ib *IfdBuilder) FindTagWithName(tagName string) (bt *builderTag, err error
|
|||||||
return ib.tags[position], nil
|
return ib.tags[position], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ib *IfdBuilder) add(bt *builderTag) (err error) {
|
func (ib *IfdBuilder) add(bt *BuilderTag) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -785,18 +780,18 @@ func (ib *IfdBuilder) add(bt *builderTag) (err error) {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
if bt.ii == ZeroIi {
|
if bt.ii == ZeroIi {
|
||||||
log.Panicf("builderTag IfdIdentity is not set: %s", bt)
|
log.Panicf("BuilderTag IfdIdentity is not set: %s", bt)
|
||||||
} else if bt.typeId == 0x0 {
|
} else if bt.typeId == 0x0 {
|
||||||
log.Panicf("builderTag type-ID is not set: %s", bt)
|
log.Panicf("BuilderTag type-ID is not set: %s", bt)
|
||||||
} else if bt.value == nil {
|
} else if bt.value == nil {
|
||||||
log.Panicf("builderTag value is not set: %s", bt)
|
log.Panicf("BuilderTag value is not set: %s", bt)
|
||||||
}
|
}
|
||||||
|
|
||||||
ib.tags = append(ib.tags, bt)
|
ib.tags = append(ib.tags, bt)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ib *IfdBuilder) Add(bt *builderTag) (err error) {
|
func (ib *IfdBuilder) Add(bt *BuilderTag) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -842,7 +837,7 @@ func (ib *IfdBuilder) AddChildIb(childIb *IfdBuilder) (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ib *IfdBuilder) NewBuilderTagFromBuilder(childIb *IfdBuilder) (bt *builderTag) {
|
func (ib *IfdBuilder) NewBuilderTagFromBuilder(childIb *IfdBuilder) (bt *BuilderTag) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err := log.Wrap(state.(error))
|
err := log.Wrap(state.(error))
|
||||||
@ -914,7 +909,7 @@ func (ib *IfdBuilder) AddTagsFromExisting(ifd *Ifd, itevr *IfdTagEntryValueResol
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var bt *builderTag
|
var bt *BuilderTag
|
||||||
|
|
||||||
if ite.ChildIfdName != "" {
|
if ite.ChildIfdName != "" {
|
||||||
// If we want to add an IFD tag, we'll have to build it first and
|
// If we want to add an IFD tag, we'll have to build it first and
|
||||||
|
@ -84,7 +84,6 @@ func (bw ByteWriter) WriteFourBytes(value []byte) (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ifdOffsetIterator keeps track of where the next IFD should be written by
|
// ifdOffsetIterator keeps track of where the next IFD should be written by
|
||||||
// keeping track of where the offsets start, the data that has been added, and
|
// keeping track of where the offsets start, the data that has been added, and
|
||||||
// bumping the offset *when* the data is added.
|
// bumping the offset *when* the data is added.
|
||||||
@ -117,7 +116,6 @@ func (ida *ifdDataAllocator) Bytes() []byte {
|
|||||||
return ida.b.Bytes()
|
return ida.b.Bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// IfdByteEncoder converts an IB to raw bytes (for writing) while also figuring
|
// IfdByteEncoder converts an IB to raw bytes (for writing) while also figuring
|
||||||
// out all of the allocations and indirection that is required for extended
|
// out all of the allocations and indirection that is required for extended
|
||||||
// data.
|
// data.
|
||||||
@ -201,7 +199,7 @@ func (ibe *IfdByteEncoder) PrintJournal() {
|
|||||||
// (`nextIfdOffsetToWrite` is required in order for them to know where the its
|
// (`nextIfdOffsetToWrite` is required in order for them to know where the its
|
||||||
// IFD data will be written, in order for them to know the offset of where
|
// IFD data will be written, in order for them to know the offset of where
|
||||||
// their allocated-data block will start, which follows right behind).
|
// their allocated-data block will start, which follows right behind).
|
||||||
func (ibe *IfdByteEncoder) encodeTagToBytes(ib *IfdBuilder, bt *builderTag, bw *ByteWriter, ida *ifdDataAllocator, nextIfdOffsetToWrite uint32) (childIfdBlock []byte, err error) {
|
func (ibe *IfdByteEncoder) encodeTagToBytes(ib *IfdBuilder, bt *BuilderTag, bw *ByteWriter, ida *ifdDataAllocator, nextIfdOffsetToWrite uint32) (childIfdBlock []byte, err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
err = log.Wrap(state.(error))
|
err = log.Wrap(state.(error))
|
||||||
@ -454,7 +452,6 @@ func (ibe *IfdByteEncoder) encodeAndAttachIfd(ib *IfdBuilder, ifdAddressableOffs
|
|||||||
|
|
||||||
for thisIb := ib; thisIb != nil; thisIb = thisIb.nextIb {
|
for thisIb := ib; thisIb != nil; thisIb = thisIb.nextIb {
|
||||||
|
|
||||||
|
|
||||||
// Do a dry-run in order to pre-determine its size requirement.
|
// Do a dry-run in order to pre-determine its size requirement.
|
||||||
|
|
||||||
ibe.pushToJournal("encodeAndAttachIfd", ">", "Beginning encoding process: (%d) [%s]", i, thisIb.ii.IfdName)
|
ibe.pushToJournal("encodeAndAttachIfd", ">", "Beginning encoding process: (%d) [%s]", i, thisIb.ii.IfdName)
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package exif
|
package exif
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
|
||||||
"reflect"
|
|
||||||
"bytes"
|
"bytes"
|
||||||
"path"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"path"
|
||||||
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
"github.com/dsoprea/go-logging"
|
"github.com/dsoprea/go-logging"
|
||||||
)
|
)
|
||||||
@ -14,7 +14,7 @@ import (
|
|||||||
func TestAdd(t *testing.T) {
|
func TestAdd(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -24,7 +24,7 @@ func TestAdd(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -34,7 +34,7 @@ func TestAdd(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -46,7 +46,7 @@ func TestAdd(t *testing.T) {
|
|||||||
|
|
||||||
originalBytes := []byte{0x11, 0x22, 0x33}
|
originalBytes := []byte{0x11, 0x22, 0x33}
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x44,
|
tagId: 0x44,
|
||||||
@ -119,7 +119,7 @@ func TestAddChildIb(t *testing.T) {
|
|||||||
|
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -135,7 +135,7 @@ func TestAddChildIb(t *testing.T) {
|
|||||||
err = ib.AddChildIb(ibChild)
|
err = ib.AddChildIb(ibChild)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -291,7 +291,7 @@ func TestAddTagsFromExisting__Excludes(t *testing.T) {
|
|||||||
func TestFindN_First_1(t *testing.T) {
|
func TestFindN_First_1(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -301,7 +301,7 @@ func TestFindN_First_1(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -311,7 +311,7 @@ func TestFindN_First_1(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -341,7 +341,7 @@ func TestFindN_First_1(t *testing.T) {
|
|||||||
func TestFindN_First_2_1Returned(t *testing.T) {
|
func TestFindN_First_2_1Returned(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -351,7 +351,7 @@ func TestFindN_First_2_1Returned(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -361,7 +361,7 @@ func TestFindN_First_2_1Returned(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -391,7 +391,7 @@ func TestFindN_First_2_1Returned(t *testing.T) {
|
|||||||
func TestFindN_First_2_2Returned(t *testing.T) {
|
func TestFindN_First_2_2Returned(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -401,7 +401,7 @@ func TestFindN_First_2_2Returned(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -411,7 +411,7 @@ func TestFindN_First_2_2Returned(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -421,7 +421,7 @@ func TestFindN_First_2_2Returned(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -431,7 +431,7 @@ func TestFindN_First_2_2Returned(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -468,7 +468,7 @@ func TestFindN_First_2_2Returned(t *testing.T) {
|
|||||||
func TestFindN_Middle_WithDuplicates(t *testing.T) {
|
func TestFindN_Middle_WithDuplicates(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -478,7 +478,7 @@ func TestFindN_Middle_WithDuplicates(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -488,7 +488,7 @@ func TestFindN_Middle_WithDuplicates(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -498,7 +498,7 @@ func TestFindN_Middle_WithDuplicates(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -508,7 +508,7 @@ func TestFindN_Middle_WithDuplicates(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -518,7 +518,7 @@ func TestFindN_Middle_WithDuplicates(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -548,7 +548,7 @@ func TestFindN_Middle_WithDuplicates(t *testing.T) {
|
|||||||
func TestFindN_Middle_NoDuplicates(t *testing.T) {
|
func TestFindN_Middle_NoDuplicates(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -558,7 +558,7 @@ func TestFindN_Middle_NoDuplicates(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -568,7 +568,7 @@ func TestFindN_Middle_NoDuplicates(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -578,7 +578,7 @@ func TestFindN_Middle_NoDuplicates(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -619,7 +619,7 @@ func TestFindN_Miss(t *testing.T) {
|
|||||||
func TestFind_Hit(t *testing.T) {
|
func TestFind_Hit(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -629,7 +629,7 @@ func TestFind_Hit(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -639,7 +639,7 @@ func TestFind_Hit(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -649,7 +649,7 @@ func TestFind_Hit(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -677,7 +677,7 @@ func TestFind_Hit(t *testing.T) {
|
|||||||
func TestFind_Miss(t *testing.T) {
|
func TestFind_Miss(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -687,7 +687,7 @@ func TestFind_Miss(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -697,7 +697,7 @@ func TestFind_Miss(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -707,7 +707,7 @@ func TestFind_Miss(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -728,7 +728,7 @@ func TestFind_Miss(t *testing.T) {
|
|||||||
func TestReplace(t *testing.T) {
|
func TestReplace(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -738,7 +738,7 @@ func TestReplace(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -748,7 +748,7 @@ func TestReplace(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -767,7 +767,7 @@ func TestReplace(t *testing.T) {
|
|||||||
t.Fatalf("Pre-replace tags are not correct.")
|
t.Fatalf("Pre-replace tags are not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x99,
|
tagId: 0x99,
|
||||||
@ -790,7 +790,7 @@ func TestReplace(t *testing.T) {
|
|||||||
func TestReplaceN(t *testing.T) {
|
func TestReplaceN(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -800,7 +800,7 @@ func TestReplaceN(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -810,7 +810,7 @@ func TestReplaceN(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -829,7 +829,7 @@ func TestReplaceN(t *testing.T) {
|
|||||||
t.Fatalf("Pre-replace tags are not correct.")
|
t.Fatalf("Pre-replace tags are not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0xA9,
|
tagId: 0xA9,
|
||||||
@ -852,7 +852,7 @@ func TestReplaceN(t *testing.T) {
|
|||||||
func TestDeleteFirst(t *testing.T) {
|
func TestDeleteFirst(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -862,7 +862,7 @@ func TestDeleteFirst(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -872,7 +872,7 @@ func TestDeleteFirst(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -882,7 +882,7 @@ func TestDeleteFirst(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -892,7 +892,6 @@ func TestDeleteFirst(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
if len(ib.Tags()) != 4 {
|
if len(ib.Tags()) != 4 {
|
||||||
t.Fatalf("Pre-delete tag count not correct.")
|
t.Fatalf("Pre-delete tag count not correct.")
|
||||||
}
|
}
|
||||||
@ -906,7 +905,6 @@ func TestDeleteFirst(t *testing.T) {
|
|||||||
t.Fatalf("Pre-delete tags not correct.")
|
t.Fatalf("Pre-delete tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteFirst(0x22)
|
err = ib.DeleteFirst(0x22)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
@ -923,7 +921,6 @@ func TestDeleteFirst(t *testing.T) {
|
|||||||
t.Fatalf("Post-delete (1) tags not correct.")
|
t.Fatalf("Post-delete (1) tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteFirst(0x22)
|
err = ib.DeleteFirst(0x22)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
@ -940,7 +937,6 @@ func TestDeleteFirst(t *testing.T) {
|
|||||||
t.Fatalf("Post-delete (2) tags not correct.")
|
t.Fatalf("Post-delete (2) tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteFirst(0x22)
|
err = ib.DeleteFirst(0x22)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("Expected an error.")
|
t.Fatalf("Expected an error.")
|
||||||
@ -952,7 +948,7 @@ func TestDeleteFirst(t *testing.T) {
|
|||||||
func TestDeleteN(t *testing.T) {
|
func TestDeleteN(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -962,7 +958,7 @@ func TestDeleteN(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -972,7 +968,7 @@ func TestDeleteN(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -982,7 +978,7 @@ func TestDeleteN(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -992,7 +988,6 @@ func TestDeleteN(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
if len(ib.Tags()) != 4 {
|
if len(ib.Tags()) != 4 {
|
||||||
t.Fatalf("Pre-delete tag count not correct.")
|
t.Fatalf("Pre-delete tag count not correct.")
|
||||||
}
|
}
|
||||||
@ -1006,7 +1001,6 @@ func TestDeleteN(t *testing.T) {
|
|||||||
t.Fatalf("Pre-delete tags not correct.")
|
t.Fatalf("Pre-delete tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteN(0x22, 1)
|
err = ib.DeleteN(0x22, 1)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
@ -1023,7 +1017,6 @@ func TestDeleteN(t *testing.T) {
|
|||||||
t.Fatalf("Post-delete (1) tags not correct.")
|
t.Fatalf("Post-delete (1) tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteN(0x22, 1)
|
err = ib.DeleteN(0x22, 1)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
@ -1040,7 +1033,6 @@ func TestDeleteN(t *testing.T) {
|
|||||||
t.Fatalf("Post-delete (2) tags not correct.")
|
t.Fatalf("Post-delete (2) tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteN(0x22, 1)
|
err = ib.DeleteN(0x22, 1)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("Expected an error.")
|
t.Fatalf("Expected an error.")
|
||||||
@ -1052,7 +1044,7 @@ func TestDeleteN(t *testing.T) {
|
|||||||
func TestDeleteN_Two(t *testing.T) {
|
func TestDeleteN_Two(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -1062,7 +1054,7 @@ func TestDeleteN_Two(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -1072,7 +1064,7 @@ func TestDeleteN_Two(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -1082,7 +1074,7 @@ func TestDeleteN_Two(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -1092,7 +1084,6 @@ func TestDeleteN_Two(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
if len(ib.Tags()) != 4 {
|
if len(ib.Tags()) != 4 {
|
||||||
t.Fatalf("Pre-delete tag count not correct.")
|
t.Fatalf("Pre-delete tag count not correct.")
|
||||||
}
|
}
|
||||||
@ -1106,7 +1097,6 @@ func TestDeleteN_Two(t *testing.T) {
|
|||||||
t.Fatalf("Pre-delete tags not correct.")
|
t.Fatalf("Pre-delete tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteN(0x22, 2)
|
err = ib.DeleteN(0x22, 2)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
@ -1123,7 +1113,6 @@ func TestDeleteN_Two(t *testing.T) {
|
|||||||
t.Fatalf("Post-delete tags not correct.")
|
t.Fatalf("Post-delete tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteFirst(0x22)
|
err = ib.DeleteFirst(0x22)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("Expected an error.")
|
t.Fatalf("Expected an error.")
|
||||||
@ -1135,7 +1124,7 @@ func TestDeleteN_Two(t *testing.T) {
|
|||||||
func TestDeleteAll(t *testing.T) {
|
func TestDeleteAll(t *testing.T) {
|
||||||
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
ib := NewIfdBuilder(RootIi, TestDefaultByteOrder)
|
||||||
|
|
||||||
bt := &builderTag{
|
bt := &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x11,
|
tagId: 0x11,
|
||||||
@ -1145,7 +1134,7 @@ func TestDeleteAll(t *testing.T) {
|
|||||||
err := ib.Add(bt)
|
err := ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -1155,7 +1144,7 @@ func TestDeleteAll(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x22,
|
tagId: 0x22,
|
||||||
@ -1165,7 +1154,7 @@ func TestDeleteAll(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
bt = &builderTag{
|
bt = &BuilderTag{
|
||||||
ii: RootIi,
|
ii: RootIi,
|
||||||
typeId: TypeByte,
|
typeId: TypeByte,
|
||||||
tagId: 0x33,
|
tagId: 0x33,
|
||||||
@ -1175,7 +1164,6 @@ func TestDeleteAll(t *testing.T) {
|
|||||||
err = ib.Add(bt)
|
err = ib.Add(bt)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
if len(ib.Tags()) != 4 {
|
if len(ib.Tags()) != 4 {
|
||||||
t.Fatalf("Pre-delete tag count not correct.")
|
t.Fatalf("Pre-delete tag count not correct.")
|
||||||
}
|
}
|
||||||
@ -1189,7 +1177,6 @@ func TestDeleteAll(t *testing.T) {
|
|||||||
t.Fatalf("Pre-delete tags not correct.")
|
t.Fatalf("Pre-delete tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
n, err := ib.DeleteAll(0x22)
|
n, err := ib.DeleteAll(0x22)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
@ -1208,7 +1195,6 @@ func TestDeleteAll(t *testing.T) {
|
|||||||
t.Fatalf("Post-delete tags not correct.")
|
t.Fatalf("Post-delete tags not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = ib.DeleteFirst(0x22)
|
err = ib.DeleteFirst(0x22)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("Expected an error.")
|
t.Fatalf("Expected an error.")
|
||||||
@ -1309,7 +1295,6 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) {
|
|||||||
|
|
||||||
e := NewExif()
|
e := NewExif()
|
||||||
|
|
||||||
|
|
||||||
rawExif, err := e.SearchAndExtractExif(filepath)
|
rawExif, err := e.SearchAndExtractExif(filepath)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
@ -1323,7 +1308,6 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) {
|
|||||||
|
|
||||||
originalTags := originalIndex.RootIfd.DumpTags()
|
originalTags := originalIndex.RootIfd.DumpTags()
|
||||||
|
|
||||||
|
|
||||||
// Encode back to binary.
|
// Encode back to binary.
|
||||||
|
|
||||||
ibe := NewIfdByteEncoder()
|
ibe := NewIfdByteEncoder()
|
||||||
@ -1334,7 +1318,6 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) {
|
|||||||
updatedExif, err := ibe.EncodeToExif(rootIb)
|
updatedExif, err := ibe.EncodeToExif(rootIb)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// Parse again.
|
// Parse again.
|
||||||
|
|
||||||
_, recoveredIndex, err := e.Collect(updatedExif)
|
_, recoveredIndex, err := e.Collect(updatedExif)
|
||||||
@ -1342,18 +1325,15 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) {
|
|||||||
|
|
||||||
recoveredTags := recoveredIndex.RootIfd.DumpTags()
|
recoveredTags := recoveredIndex.RootIfd.DumpTags()
|
||||||
|
|
||||||
|
|
||||||
recoveredThumbnailData, err := recoveredIndex.RootIfd.NextIfd.Thumbnail()
|
recoveredThumbnailData, err := recoveredIndex.RootIfd.NextIfd.Thumbnail()
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// Check the thumbnail.
|
// Check the thumbnail.
|
||||||
|
|
||||||
if bytes.Compare(recoveredThumbnailData, originalThumbnailData) != 0 {
|
if bytes.Compare(recoveredThumbnailData, originalThumbnailData) != 0 {
|
||||||
t.Fatalf("recovered thumbnail does not match original")
|
t.Fatalf("recovered thumbnail does not match original")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Validate that all of the same IFDs were presented.
|
// Validate that all of the same IFDs were presented.
|
||||||
|
|
||||||
originalIfdTags := make([][2]interface{}, 0)
|
originalIfdTags := make([][2]interface{}, 0)
|
||||||
@ -1388,7 +1368,6 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) {
|
|||||||
t.Fatalf("Recovered IFD tags are not correct.")
|
t.Fatalf("Recovered IFD tags are not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Validate that all of the tags owned by the IFDs were presented. Note
|
// Validate that all of the tags owned by the IFDs were presented. Note
|
||||||
// that the thumbnail tags are not kept but only produced on the fly, which
|
// that the thumbnail tags are not kept but only produced on the fly, which
|
||||||
// is why we check it above.
|
// is why we check it above.
|
||||||
@ -1430,7 +1409,6 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData_WithUpdate(t *te
|
|||||||
|
|
||||||
e := NewExif()
|
e := NewExif()
|
||||||
|
|
||||||
|
|
||||||
rawExif, err := e.SearchAndExtractExif(filepath)
|
rawExif, err := e.SearchAndExtractExif(filepath)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
@ -1444,7 +1422,6 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData_WithUpdate(t *te
|
|||||||
|
|
||||||
originalTags := originalIndex.RootIfd.DumpTags()
|
originalTags := originalIndex.RootIfd.DumpTags()
|
||||||
|
|
||||||
|
|
||||||
// Encode back to binary.
|
// Encode back to binary.
|
||||||
|
|
||||||
ibe := NewIfdByteEncoder()
|
ibe := NewIfdByteEncoder()
|
||||||
@ -1452,7 +1429,6 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData_WithUpdate(t *te
|
|||||||
itevr := NewIfdTagEntryValueResolver(rawExif, originalIndex.RootIfd.ByteOrder)
|
itevr := NewIfdTagEntryValueResolver(rawExif, originalIndex.RootIfd.ByteOrder)
|
||||||
rootIb := NewIfdBuilderFromExistingChain(originalIndex.RootIfd, itevr)
|
rootIb := NewIfdBuilderFromExistingChain(originalIndex.RootIfd, itevr)
|
||||||
|
|
||||||
|
|
||||||
// Update a tag,.
|
// Update a tag,.
|
||||||
|
|
||||||
exifBt, err := rootIb.FindTagWithName("ExifTag")
|
exifBt, err := rootIb.FindTagWithName("ExifTag")
|
||||||
@ -1469,13 +1445,11 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData_WithUpdate(t *te
|
|||||||
err = ucBt.SetValue(rootIb.byteOrder, uc)
|
err = ucBt.SetValue(rootIb.byteOrder, uc)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// Encode.
|
// Encode.
|
||||||
|
|
||||||
updatedExif, err := ibe.EncodeToExif(rootIb)
|
updatedExif, err := ibe.EncodeToExif(rootIb)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// Parse again.
|
// Parse again.
|
||||||
|
|
||||||
_, recoveredIndex, err := e.Collect(updatedExif)
|
_, recoveredIndex, err := e.Collect(updatedExif)
|
||||||
@ -1483,18 +1457,15 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData_WithUpdate(t *te
|
|||||||
|
|
||||||
recoveredTags := recoveredIndex.RootIfd.DumpTags()
|
recoveredTags := recoveredIndex.RootIfd.DumpTags()
|
||||||
|
|
||||||
|
|
||||||
recoveredThumbnailData, err := recoveredIndex.RootIfd.NextIfd.Thumbnail()
|
recoveredThumbnailData, err := recoveredIndex.RootIfd.NextIfd.Thumbnail()
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// Check the thumbnail.
|
// Check the thumbnail.
|
||||||
|
|
||||||
if bytes.Compare(recoveredThumbnailData, originalThumbnailData) != 0 {
|
if bytes.Compare(recoveredThumbnailData, originalThumbnailData) != 0 {
|
||||||
t.Fatalf("recovered thumbnail does not match original")
|
t.Fatalf("recovered thumbnail does not match original")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Validate that all of the same IFDs were presented.
|
// Validate that all of the same IFDs were presented.
|
||||||
|
|
||||||
originalIfdTags := make([][2]interface{}, 0)
|
originalIfdTags := make([][2]interface{}, 0)
|
||||||
@ -1529,7 +1500,6 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData_WithUpdate(t *te
|
|||||||
t.Fatalf("Recovered IFD tags are not correct.")
|
t.Fatalf("Recovered IFD tags are not correct.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Validate that all of the tags owned by the IFDs were presented. Note
|
// Validate that all of the tags owned by the IFDs were presented. Note
|
||||||
// that the thumbnail tags are not kept but only produced on the fly, which
|
// that the thumbnail tags are not kept but only produced on the fly, which
|
||||||
// is why we check it above.
|
// is why we check it above.
|
||||||
@ -1574,7 +1544,7 @@ func Test_IfdBuilder_CreateIfdBuilderFromExistingChain_RealData_WithUpdate(t *te
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ExampleReadThumbnail() {
|
func ExampleIfd_Thumbnail() {
|
||||||
filepath := path.Join(assetsPath, "NDM_8901.jpg")
|
filepath := path.Join(assetsPath, "NDM_8901.jpg")
|
||||||
|
|
||||||
e := NewExif()
|
e := NewExif()
|
||||||
@ -1592,7 +1562,7 @@ func ExampleReadThumbnail() {
|
|||||||
// Output:
|
// Output:
|
||||||
}
|
}
|
||||||
|
|
||||||
func ExampleUpdateUnknownTag() {
|
func ExampleBuilderTag_SetValue() {
|
||||||
filepath := path.Join(assetsPath, "NDM_8901.jpg")
|
filepath := path.Join(assetsPath, "NDM_8901.jpg")
|
||||||
|
|
||||||
e := NewExif()
|
e := NewExif()
|
||||||
@ -1603,13 +1573,11 @@ func ExampleUpdateUnknownTag() {
|
|||||||
_, index, err := e.Collect(rawExif)
|
_, index, err := e.Collect(rawExif)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// Create builder.
|
// Create builder.
|
||||||
|
|
||||||
itevr := NewIfdTagEntryValueResolver(rawExif, index.RootIfd.ByteOrder)
|
itevr := NewIfdTagEntryValueResolver(rawExif, index.RootIfd.ByteOrder)
|
||||||
rootIb := NewIfdBuilderFromExistingChain(index.RootIfd, itevr)
|
rootIb := NewIfdBuilderFromExistingChain(index.RootIfd, itevr)
|
||||||
|
|
||||||
|
|
||||||
// Find tag to update.
|
// Find tag to update.
|
||||||
|
|
||||||
exifBt, err := rootIb.FindTagWithName("ExifTag")
|
exifBt, err := rootIb.FindTagWithName("ExifTag")
|
||||||
@ -1618,10 +1586,10 @@ func ExampleUpdateUnknownTag() {
|
|||||||
ucBt, err := exifBt.value.Ib().FindTagWithName("UserComment")
|
ucBt, err := exifBt.value.Ib().FindTagWithName("UserComment")
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// Update the value. Since this is an "undefined"-type tag, we have to use
|
// Update the value. Since this is an "undefined"-type tag, we have to use
|
||||||
// its type-specific struct.
|
// its type-specific struct.
|
||||||
|
|
||||||
|
// TODO(dustin): !! Add an example for setting a non-unknown value, too.
|
||||||
uc := TagUnknownType_9298_UserComment{
|
uc := TagUnknownType_9298_UserComment{
|
||||||
EncodingType: TagUnknownType_9298_UserComment_Encoding_ASCII,
|
EncodingType: TagUnknownType_9298_UserComment_Encoding_ASCII,
|
||||||
EncodingBytes: []byte("TEST COMMENT"),
|
EncodingBytes: []byte("TEST COMMENT"),
|
||||||
@ -1630,7 +1598,6 @@ func ExampleUpdateUnknownTag() {
|
|||||||
err = ucBt.SetValue(rootIb.byteOrder, uc)
|
err = ucBt.SetValue(rootIb.byteOrder, uc)
|
||||||
log.PanicIf(err)
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
|
||||||
// Encode.
|
// Encode.
|
||||||
|
|
||||||
ibe := NewIfdByteEncoder()
|
ibe := NewIfdByteEncoder()
|
||||||
@ -1674,10 +1641,10 @@ func TestNewStandardBuilderTagFromConfig_OneUnit(t *testing.T) {
|
|||||||
bt := NewStandardBuilderTagFromConfig(ExifIi, uint16(0x8833), TestDefaultByteOrder, []uint32{uint32(0x1234)})
|
bt := NewStandardBuilderTagFromConfig(ExifIi, uint16(0x8833), TestDefaultByteOrder, []uint32{uint32(0x1234)})
|
||||||
|
|
||||||
if bt.ii != ExifIi {
|
if bt.ii != ExifIi {
|
||||||
t.Fatalf("II in builderTag not correct")
|
t.Fatalf("II in BuilderTag not correct")
|
||||||
} else if bt.tagId != 0x8833 {
|
} else if bt.tagId != 0x8833 {
|
||||||
t.Fatalf("tag-ID not correct")
|
t.Fatalf("tag-ID not correct")
|
||||||
} else if bytes.Compare(bt.value.Bytes(), []byte { 0x0, 0x0, 0x12, 0x34, }) != 0 {
|
} else if bytes.Compare(bt.value.Bytes(), []byte{0x0, 0x0, 0x12, 0x34}) != 0 {
|
||||||
t.Fatalf("value not correct")
|
t.Fatalf("value not correct")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1686,12 +1653,12 @@ func TestNewStandardBuilderTagFromConfig_TwoUnits(t *testing.T) {
|
|||||||
bt := NewStandardBuilderTagFromConfig(ExifIi, uint16(0x8833), TestDefaultByteOrder, []uint32{uint32(0x1234), uint32(0x5678)})
|
bt := NewStandardBuilderTagFromConfig(ExifIi, uint16(0x8833), TestDefaultByteOrder, []uint32{uint32(0x1234), uint32(0x5678)})
|
||||||
|
|
||||||
if bt.ii != ExifIi {
|
if bt.ii != ExifIi {
|
||||||
t.Fatalf("II in builderTag not correct")
|
t.Fatalf("II in BuilderTag not correct")
|
||||||
} else if bt.tagId != 0x8833 {
|
} else if bt.tagId != 0x8833 {
|
||||||
t.Fatalf("tag-ID not correct")
|
t.Fatalf("tag-ID not correct")
|
||||||
} else if bytes.Compare(bt.value.Bytes(), []byte{
|
} else if bytes.Compare(bt.value.Bytes(), []byte{
|
||||||
0x0, 0x0, 0x12, 0x34,
|
0x0, 0x0, 0x12, 0x34,
|
||||||
0x0, 0x0, 0x56, 0x78, }) != 0 {
|
0x0, 0x0, 0x56, 0x78}) != 0 {
|
||||||
t.Fatalf("value not correct")
|
t.Fatalf("value not correct")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1700,12 +1667,12 @@ func TestNewStandardBuilderTagFromConfigWithName(t *testing.T) {
|
|||||||
bt := NewStandardBuilderTagFromConfigWithName(ExifIi, "ISOSpeed", TestDefaultByteOrder, []uint32{uint32(0x1234), uint32(0x5678)})
|
bt := NewStandardBuilderTagFromConfigWithName(ExifIi, "ISOSpeed", TestDefaultByteOrder, []uint32{uint32(0x1234), uint32(0x5678)})
|
||||||
|
|
||||||
if bt.ii != ExifIi {
|
if bt.ii != ExifIi {
|
||||||
t.Fatalf("II in builderTag not correct")
|
t.Fatalf("II in BuilderTag not correct")
|
||||||
} else if bt.tagId != 0x8833 {
|
} else if bt.tagId != 0x8833 {
|
||||||
t.Fatalf("tag-ID not correct")
|
t.Fatalf("tag-ID not correct")
|
||||||
} else if bytes.Compare(bt.value.Bytes(), []byte{
|
} else if bytes.Compare(bt.value.Bytes(), []byte{
|
||||||
0x0, 0x0, 0x12, 0x34,
|
0x0, 0x0, 0x12, 0x34,
|
||||||
0x0, 0x0, 0x56, 0x78, }) != 0 {
|
0x0, 0x0, 0x56, 0x78}) != 0 {
|
||||||
t.Fatalf("value not correct")
|
t.Fatalf("value not correct")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1734,4 +1701,3 @@ func TestAddFromConfigWithName(t *testing.T) {
|
|||||||
t.Fatalf("Value not correct: (%d) [%s]", len(s), s)
|
t.Fatalf("Value not correct: (%d) [%s]", len(s), s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user