undefined: Add five test suites

for/master
Dustin Oprea 2020-01-11 17:17:44 -05:00
parent a52d1de840
commit 41fd3ae870
6 changed files with 407 additions and 1 deletions

View File

@ -0,0 +1,72 @@
package exifundefined
import (
"bytes"
"reflect"
"testing"
"github.com/dsoprea/go-logging"
"github.com/dsoprea/go-exif/v2/common"
)
func TestTag927CMakerNote_String(t *testing.T) {
ut := Tag927CMakerNote{
MakerNoteType: []byte{0, 1, 2, 3, 4},
MakerNoteBytes: []byte{5, 6, 7, 8, 9},
}
s := ut.String()
if s != "MakerNote<TYPE-ID=[00 01 02 03 04] LEN=(5) SHA1=[bdb42cb7eb76e64efe49b22369b404c67b0af55a]>" {
t.Fatalf("String not correct: [%s]", s)
}
}
func TestCodec927CMakerNote_Encode(t *testing.T) {
codec := Codec927CMakerNote{}
prefix := []byte{0, 1, 2, 3, 4}
b := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
ut := Tag927CMakerNote{
MakerNoteType: prefix,
MakerNoteBytes: b,
}
encoded, unitCount, err := codec.Encode(ut, exifcommon.TestDefaultByteOrder)
log.PanicIf(err)
if bytes.Equal(encoded, b) != true {
t.Fatalf("Encoding not correct: %v", encoded)
} else if unitCount != uint32(len(b)) {
t.Fatalf("Unit-count not correct: (%d)", len(b))
}
}
func TestCodec927CMakerNote_Decode(t *testing.T) {
b := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
ut := Tag927CMakerNote{
MakerNoteType: b,
MakerNoteBytes: b,
}
valueContext := exifcommon.NewValueContext(
"",
0,
uint32(len(b)),
0,
nil,
b,
exifcommon.TypeUndefined,
exifcommon.TestDefaultByteOrder)
codec := Codec927CMakerNote{}
value, err := codec.Decode(valueContext)
log.PanicIf(err)
if reflect.DeepEqual(value, ut) != true {
t.Fatalf("Decoded value not correct: %s != %s", value, ut)
}
}

View File

@ -0,0 +1,94 @@
package exifundefined
import (
"bytes"
"reflect"
"testing"
"github.com/dsoprea/go-logging"
"github.com/dsoprea/go-exif/v2/common"
)
func TestTag9286UserComment_String(t *testing.T) {
comment := "some comment"
ut := Tag9286UserComment{
EncodingType: TagUndefinedType_9286_UserComment_Encoding_ASCII,
EncodingBytes: []byte(comment),
}
s := ut.String()
if s != "[ASCII] some comment" {
t.Fatalf("String not correct: [%s]", s)
}
}
func TestCodec9286UserComment_Encode(t *testing.T) {
comment := "some comment"
ut := Tag9286UserComment{
EncodingType: TagUndefinedType_9286_UserComment_Encoding_ASCII,
EncodingBytes: []byte(comment),
}
codec := Codec9286UserComment{}
encoded, unitCount, err := codec.Encode(ut, exifcommon.TestDefaultByteOrder)
log.PanicIf(err)
typeBytes := TagUndefinedType_9286_UserComment_Encodings[TagUndefinedType_9286_UserComment_Encoding_ASCII]
if bytes.Equal(encoded[:8], typeBytes) != true {
exifcommon.DumpBytesClause(encoded[:8])
t.Fatalf("Encoding type not correct.")
}
if bytes.Equal(encoded[8:], []byte(comment)) != true {
exifcommon.DumpBytesClause(encoded[8:])
t.Fatalf("Encoded comment not correct.")
}
if unitCount != uint32(len(encoded)) {
t.Fatalf("Unit-couunt not correct: (%d)", unitCount)
}
exifcommon.DumpBytesClause(encoded)
}
func TestCodec9286UserComment_Decode(t *testing.T) {
encoded := []byte{
0x41, 0x53, 0x43, 0x49, 0x49, 0x00, 0x00, 0x00,
0x73, 0x6f, 0x6d, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
}
addressableBytes := encoded
valueContext := exifcommon.NewValueContext(
"",
0,
uint32(len(encoded)),
0,
nil,
addressableBytes,
exifcommon.TypeUndefined,
exifcommon.TestDefaultByteOrder)
codec := Codec9286UserComment{}
decoded, err := codec.Decode(valueContext)
log.PanicIf(err)
comment := "some comment"
expectedUt := Tag9286UserComment{
EncodingType: TagUndefinedType_9286_UserComment_Encoding_ASCII,
EncodingBytes: []byte(comment),
}
if reflect.DeepEqual(decoded, expectedUt) != true {
t.Fatalf("Decoded struct not correct.")
}
}

View File

@ -0,0 +1,70 @@
package exifundefined
import (
"bytes"
"reflect"
"testing"
"github.com/dsoprea/go-logging"
"github.com/dsoprea/go-exif/v2/common"
)
func TestTagA000FlashpixVersion_String(t *testing.T) {
versionPhrase := "some version"
ut := TagA000FlashpixVersion{versionPhrase}
s := ut.String()
if s != versionPhrase {
t.Fatalf("String not correct: [%s]", s)
}
}
func TestCodecA000FlashpixVersion_Encode(t *testing.T) {
versionPhrase := "some version"
ut := TagA000FlashpixVersion{versionPhrase}
codec := CodecA000FlashpixVersion{}
encoded, unitCount, err := codec.Encode(ut, exifcommon.TestDefaultByteOrder)
log.PanicIf(err)
if bytes.Equal(encoded, []byte(versionPhrase)) != true {
exifcommon.DumpBytesClause(encoded)
t.Fatalf("Encoding not correct.")
} else if unitCount != uint32(len(encoded)) {
t.Fatalf("Unit-couunt not correct: (%d)", unitCount)
}
}
func TestCodecA000FlashpixVersion_Decode(t *testing.T) {
versionPhrase := "some version"
expectedUt := TagA000FlashpixVersion{versionPhrase}
encoded := []byte(versionPhrase)
addressableBytes := encoded
valueContext := exifcommon.NewValueContext(
"",
0,
uint32(len(encoded)),
0,
nil,
addressableBytes,
exifcommon.TypeUndefined,
exifcommon.TestDefaultByteOrder)
codec := CodecA000FlashpixVersion{}
decoded, err := codec.Decode(valueContext)
log.PanicIf(err)
if reflect.DeepEqual(decoded, expectedUt) != true {
t.Fatalf("Decoded struct not correct.")
}
}

View File

@ -0,0 +1,104 @@
package exifundefined
import (
"bytes"
"reflect"
"testing"
"github.com/dsoprea/go-logging"
"github.com/dsoprea/go-exif/v2/common"
)
func TestTagA20CSpatialFrequencyResponse_String(t *testing.T) {
ut := TagA20CSpatialFrequencyResponse{
Columns: 2,
Rows: 9,
ColumnNames: []string{"column1", "column2"},
Values: []exifcommon.Rational{
exifcommon.Rational{1, 2},
exifcommon.Rational{3, 4},
},
}
s := ut.String()
if s != "CodecA20CSpatialFrequencyResponse<COLUMNS=(2) ROWS=(9)>" {
t.Fatalf("String not correct: [%s]", s)
}
}
func TestCodecA20CSpatialFrequencyResponse_Encode(t *testing.T) {
ut := TagA20CSpatialFrequencyResponse{
Columns: 2,
Rows: 9,
ColumnNames: []string{"column1", "column2"},
Values: []exifcommon.Rational{
exifcommon.Rational{1, 2},
exifcommon.Rational{3, 4},
},
}
codec := CodecA20CSpatialFrequencyResponse{}
encoded, unitCount, err := codec.Encode(ut, exifcommon.TestDefaultByteOrder)
log.PanicIf(err)
expectedEncoded := []byte{
0x00, 0x02,
0x00, 0x09,
0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x31, 0x00,
0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x32, 0x00,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04,
}
if bytes.Equal(encoded, expectedEncoded) != true {
exifcommon.DumpBytesClause(encoded)
t.Fatalf("Encoding not correct.")
} else if unitCount != uint32(len(encoded)) {
t.Fatalf("Unit-couunt not correct: (%d)", unitCount)
}
}
func TestCodecA20CSpatialFrequencyResponse_Decode(t *testing.T) {
expectedUt := TagA20CSpatialFrequencyResponse{
Columns: 2,
Rows: 9,
ColumnNames: []string{"column1", "column2"},
Values: []exifcommon.Rational{
exifcommon.Rational{1, 2},
exifcommon.Rational{3, 4},
},
}
encoded := []byte{
0x00, 0x02,
0x00, 0x09,
0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x31, 0x00,
0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x32, 0x00,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04,
}
addressableBytes := encoded
valueContext := exifcommon.NewValueContext(
"",
0,
uint32(len(encoded)),
0,
nil,
addressableBytes,
exifcommon.TypeUndefined,
exifcommon.TestDefaultByteOrder)
codec := CodecA20CSpatialFrequencyResponse{}
decoded, err := codec.Decode(valueContext)
log.PanicIf(err)
if reflect.DeepEqual(decoded, expectedUt) != true {
t.Fatalf("Decoded struct not correct.")
}
}

View File

@ -17,7 +17,7 @@ func (TagExifA300FileSource) EncoderName() string {
}
func (af TagExifA300FileSource) String() string {
return fmt.Sprintf("%d", af)
return fmt.Sprintf("0x%08x", uint32(af))
}
const (

View File

@ -0,0 +1,66 @@
package exifundefined
import (
"bytes"
"reflect"
"testing"
"github.com/dsoprea/go-logging"
"github.com/dsoprea/go-exif/v2/common"
)
func TestTagExifA300FileSource_String(t *testing.T) {
ut := TagExifA300FileSource(0x1234)
s := ut.String()
if s != "0x00001234" {
t.Fatalf("String not correct: [%s]", s)
}
}
func TestCodecExifA300FileSource_Encode(t *testing.T) {
ut := TagExifA300FileSource(0x1234)
codec := CodecExifA300FileSource{}
encoded, unitCount, err := codec.Encode(ut, exifcommon.TestDefaultByteOrder)
log.PanicIf(err)
expectedEncoded := []byte{0, 0, 0x12, 0x34}
if bytes.Equal(encoded, expectedEncoded) != true {
exifcommon.DumpBytesClause(encoded)
t.Fatalf("Encoding not correct.")
} else if unitCount != 1 {
t.Fatalf("Unit-couunt not correct: (%d)", unitCount)
}
}
func TestCodecExifA300FileSource_Decode(t *testing.T) {
expectedUt := TagExifA300FileSource(0x1234)
encoded := []byte{0, 0, 0x12, 0x34}
rawValueOffset := encoded
valueContext := exifcommon.NewValueContext(
"",
0,
1,
0,
rawValueOffset,
nil,
exifcommon.TypeUndefined,
exifcommon.TestDefaultByteOrder)
codec := CodecExifA300FileSource{}
decoded, err := codec.Decode(valueContext)
log.PanicIf(err)
if reflect.DeepEqual(decoded, expectedUt) != true {
t.Fatalf("Decoded struct not correct.")
}
}