diff --git a/exiftool_test.go b/exiftool_test.go index 27f3528..5dc44dd 100644 --- a/exiftool_test.go +++ b/exiftool_test.go @@ -765,3 +765,27 @@ func TestBufferTooSmallError(t *testing.T) { assert.Len(t, fms, 1) assert.Equal(t, ErrBufferTooSmall, fms[0].Err) } + +func TestWriteMetadataAddString(t *testing.T) { + t.Parallel() + + e, err := NewExiftool() + assert.Nil(t, err) + defer e.Close() + + testFile := filepath.Join(t.TempDir(), "test.jpg") + require.Nil(t, copyFile("testdata/20190404_131804.jpg", testFile)) + + mds := []FileMetadata{EmptyFileMetadata()} + mds[0].File = testFile + mds[0].AddString("ImageUniqueID", "newValue") + e.WriteMetadata(mds) + require.Nil(t, mds[0].Err) + + mds2 := e.ExtractMetadata(testFile) + require.Len(t, mds2, 1) + require.Nil(t, mds2[0].Err) + value, err := mds2[0].GetString("ImageUniqueID") + require.Nil(t, err) + require.Equal(t, "newValue", value) +} diff --git a/filemetadata.go b/filemetadata.go index 853d06c..91b6054 100644 --- a/filemetadata.go +++ b/filemetadata.go @@ -178,3 +178,8 @@ func EmptyFileMetadata() FileMetadata { Fields: make(map[string]interface{}), } } + +// AddString adds a new key-value pair to the Fields map with a string value +func (fm *FileMetadata) AddString(key string, value string) { + fm.Fields[key] = value +} diff --git a/filemetadata_test.go b/filemetadata_test.go index 0303d28..4375d19 100644 --- a/filemetadata_test.go +++ b/filemetadata_test.go @@ -221,3 +221,17 @@ func TestClearAll(t *testing.T) { assert.Equal(t, ErrKeyNotFound, err) } + +func TestAddString(t *testing.T) { + fm := EmptyFileMetadata() + + fm.AddString("key", "value") + got, err := fm.GetString("key") + assert.Nil(t, err) + assert.Equal(t, "value", got) + + fm.AddString("key", "new value") + got, err = fm.GetString("key") + assert.Nil(t, err) + assert.Equal(t, "new value", got) +}