diff --git a/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumkins1.jpg b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumkins1.jpg
new file mode 100644
index 00000000..b1615930
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumkins1.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumkins2.jpg b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumkins2.jpg
new file mode 100644
index 00000000..f23a024a
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumkins2.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumpkins3.jpg b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumpkins3.jpg
new file mode 100644
index 00000000..136dfe8d
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumpkins3.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/St James Park.jpg b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/St James Park.jpg
new file mode 100644
index 00000000..e5a6b0bd
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/St James Park.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Tulips.jpg b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Tulips.jpg
new file mode 100644
index 00000000..31eb2ab3
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Tulips.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/wedding.jpg b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/wedding.jpg
new file mode 100644
index 00000000..ad8137e3
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/wedding.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/database/DataModelVersion.plist b/tests/Test-10.14.5.photoslibrary/database/DataModelVersion.plist
new file mode 100644
index 00000000..295f02dd
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/database/DataModelVersion.plist
@@ -0,0 +1,18 @@
+
+
+
+
+ DatabaseMinorVersion
+ 1
+ DatabaseVersion
+ 112
+ LastOpenMode
+ 2
+ LibrarySchemaVersion
+ 4016
+ MetaSchemaVersion
+ 2
+ createDate
+ 2019-07-27T13:16:43Z
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/database/RKAlbum_name.skindex b/tests/Test-10.14.5.photoslibrary/database/RKAlbum_name.skindex
new file mode 100644
index 00000000..d2428fab
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/database/RKAlbum_name.skindex differ
diff --git a/tests/Test-10.14.5.photoslibrary/database/RKMemory_title.skindex b/tests/Test-10.14.5.photoslibrary/database/RKMemory_title.skindex
new file mode 100644
index 00000000..e407c663
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/database/RKMemory_title.skindex differ
diff --git a/tests/Test-10.14.5.photoslibrary/database/RKVersion_searchIndexText.skindex b/tests/Test-10.14.5.photoslibrary/database/RKVersion_searchIndexText.skindex
new file mode 100644
index 00000000..f8bfbf9e
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/database/RKVersion_searchIndexText.skindex differ
diff --git a/tests/Test-10.14.5.photoslibrary/database/metaSchema.db b/tests/Test-10.14.5.photoslibrary/database/metaSchema.db
new file mode 100644
index 00000000..a69a92eb
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/database/metaSchema.db differ
diff --git a/tests/Test-10.14.5.photoslibrary/database/photos.db b/tests/Test-10.14.5.photoslibrary/database/photos.db
new file mode 100644
index 00000000..37f44b75
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/database/photos.db differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/.metadata_never_index b/tests/Test-10.14.5.photoslibrary/private/.metadata_never_index
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.Photos/appPrivateData.plist b/tests/Test-10.14.5.photoslibrary/private/com.apple.Photos/appPrivateData.plist
new file mode 100644
index 00000000..68b1f8ba
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/private/com.apple.Photos/appPrivateData.plist
@@ -0,0 +1,43 @@
+
+
+
+
+ Photos
+
+ CollapsedSidebarSectionIdentifiers
+
+ ExpandedSidebarItemIdentifiers
+
+ TopLevelAlbums
+ TopLevelSlideshows
+
+ IPXWorkspaceControllerZoomLevelsKey
+
+ kZoomLevelIdentifierAlbums
+ 7
+ kZoomLevelIdentifierVersions
+ 7
+
+ lastAddToDestination
+
+ key
+ 1
+ lastKnownDisplayName
+ September 28, 2018
+ type
+ album
+ uuid
+ DFFKmHt3Tk+AGzZLe2Xq+g
+
+ lastKnownItemCounts
+
+ other
+ 0
+ photos
+ 7
+ videos
+ 0
+
+
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotoAnalysisServicePreferences.plist b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotoAnalysisServicePreferences.plist
new file mode 100644
index 00000000..0e61023c
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotoAnalysisServicePreferences.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ PhotoAnalysisGraphLastBackgroundGraphRebuildJobDate
+ 2019-07-27T13:18:12Z
+ PhotoAnalysisGraphLastBackgroundMemoryGenerationJobDate
+ 2019-07-27T21:11:37Z
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb
new file mode 100644
index 00000000..96fee1ce
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-shm b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-shm differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-wal b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/liveupdate-photosgraph.graphdb b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/liveupdate-photosgraph.graphdb
new file mode 100644
index 00000000..4db1b860
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/liveupdate-photosgraph.graphdb differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/liveupdate-photosgraph.graphdb-shm b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/liveupdate-photosgraph.graphdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/liveupdate-photosgraph.graphdb-shm differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/liveupdate-photosgraph.graphdb-wal b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/liveupdate-photosgraph.graphdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb
new file mode 100644
index 00000000..96fee1ce
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb-shm b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb-shm differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb-wal b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb
new file mode 100644
index 00000000..534144c3
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-shm b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-shm
new file mode 100644
index 00000000..fe9ac284
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-shm differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-wal b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-wal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/2E578BF2-718A-43E1-81BA-80AC61004DCF.cmap b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/2E578BF2-718A-43E1-81BA-80AC61004DCF.cmap
new file mode 100644
index 00000000..4aaf1638
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/2E578BF2-718A-43E1-81BA-80AC61004DCF.cmap differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/AlgoFaceClusterCache.data b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/AlgoFaceClusterCache.data
new file mode 100644
index 00000000..1f14d535
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/AlgoFaceClusterCache.data differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/C7589FFF-A378-4059-ABDC-19C4316A8B69.cmap b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/C7589FFF-A378-4059-ABDC-19C4316A8B69.cmap
new file mode 100644
index 00000000..1d6b6446
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/C7589FFF-A378-4059-ABDC-19C4316A8B69.cmap differ
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/PersonPromoter b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/PersonPromoter
new file mode 100644
index 00000000..4fdc85b4
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/PersonPromoter
@@ -0,0 +1,12 @@
+
+
+
+
+ ProcessedInQuiescentState
+
+ SuggestedMeIdentifier
+
+ Version
+ 3
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/clustererState.plist b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/clustererState.plist
new file mode 100644
index 00000000..cb4560b6
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/clustererState.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ PVClustererBringUpState
+ 50
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/faceWorkerState.plist b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/faceWorkerState.plist
new file mode 100644
index 00000000..736db69d
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/private/com.apple.photoanalysisd/VisionService/faceWorkerState.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ IncrementalPersonProcessingStage
+ 0
+ PersonBuilderLastMinimumFaceGroupSizeForCreatingMergeCandidates
+ 15
+ PersonBuilderMergeCandidatesEnabled
+
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/resources/.metadata_never_index b/tests/Test-10.14.5.photoslibrary/resources/.metadata_never_index
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_1.jpeg b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_1.jpeg
new file mode 100644
index 00000000..f39a1ec8
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_1.jpeg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_2.jpeg b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_2.jpeg
new file mode 100644
index 00000000..4ac5f4ed
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_2.jpeg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_3.jpeg b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_3.jpeg
new file mode 100644
index 00000000..78bc1973
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_3.jpeg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_4.jpeg b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_4.jpeg
new file mode 100644
index 00000000..44d120e7
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_4.jpeg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_5.jpeg b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_5.jpeg
new file mode 100644
index 00000000..908ac7f3
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_5.jpeg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_7.jpeg b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_7.jpeg
new file mode 100644
index 00000000..4a892442
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_7.jpeg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_a.jpeg b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_a.jpeg
new file mode 100644
index 00000000..75bd69d7
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/media/face/00/00/facetile_a.jpeg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/media/version/00/00/fullsizeoutput_9.jpeg b/tests/Test-10.14.5.photoslibrary/resources/media/version/00/00/fullsizeoutput_9.jpeg
new file mode 100644
index 00000000..88caa537
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/media/version/00/00/fullsizeoutput_9.jpeg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/moments/analysismetadata.plist b/tests/Test-10.14.5.photoslibrary/resources/moments/analysismetadata.plist
new file mode 100644
index 00000000..372e575e
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/resources/moments/analysismetadata.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ PLLanguageAndLocaleKey
+ en-US:en_US
+ PLLastGeoProviderIdKey
+ 7618
+ PLLastLocationInfoFormatVer
+ 12
+ PLLastRevGeoForcedProviderOutOfDateCheckVersionKey
+ 1
+ PLLastRevGeoVerFileFetchDateKey
+ 2019-07-27T13:16:46Z
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/resources/moments/historicalmarker.plist b/tests/Test-10.14.5.photoslibrary/resources/moments/historicalmarker.plist
new file mode 100644
index 00000000..006311f3
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/resources/moments/historicalmarker.plist
@@ -0,0 +1,12 @@
+
+
+
+
+ LastHistoryRowId
+ 417
+ LibraryBuildTag
+ D8C4AAA1-3AB6-4A65-BEBD-99CC3E5D433E
+ LibrarySchemaVersion
+ 4016
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/resources/moments/needsanalysis b/tests/Test-10.14.5.photoslibrary/resources/moments/needsanalysis
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/Test-10.14.5.photoslibrary/resources/moments/serverinfo.plist b/tests/Test-10.14.5.photoslibrary/resources/moments/serverinfo.plist
new file mode 100644
index 00000000..ce9edee3
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/resources/moments/serverinfo.plist
@@ -0,0 +1,47 @@
+
+
+
+
+ FileVersion
+ 11
+ Source
+
+ 35230
+
+ CountryMinVersions
+
+ OTHER
+ 1
+
+ CurrentVersion
+ 1
+ NoResultErrorIsSuccess
+
+
+ 57879
+
+ CountryMinVersions
+
+ OTHER
+ 1
+
+ CurrentVersion
+ 1
+ NoResultErrorIsSuccess
+
+
+ 7618
+
+ AddCountyIfNeeded
+
+ CountryMinVersions
+
+ OTHER
+ 10
+
+ CurrentVersion
+ 10
+
+
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/1/Y6OofYkbR96spbS6XgwOQw_mini_1.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/1/Y6OofYkbR96spbS6XgwOQw_mini_1.jpg
new file mode 100644
index 00000000..30e71540
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/1/Y6OofYkbR96spbS6XgwOQw_mini_1.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/1/Y6OofYkbR96spbS6XgwOQw_thumb_1.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/1/Y6OofYkbR96spbS6XgwOQw_thumb_1.jpg
new file mode 100644
index 00000000..db88ba04
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/1/Y6OofYkbR96spbS6XgwOQw_thumb_1.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/2/UNADJUSTEDNONRAW_mini_2.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/2/UNADJUSTEDNONRAW_mini_2.jpg
new file mode 100644
index 00000000..8c8e178d
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/2/UNADJUSTEDNONRAW_mini_2.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/2/UNADJUSTEDNONRAW_thumb_2.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/2/UNADJUSTEDNONRAW_thumb_2.jpg
new file mode 100644
index 00000000..8a612cdc
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/2/UNADJUSTEDNONRAW_thumb_2.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/3/UNADJUSTEDNONRAW_mini_3.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/3/UNADJUSTEDNONRAW_mini_3.jpg
new file mode 100644
index 00000000..0549fb7f
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/3/UNADJUSTEDNONRAW_mini_3.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/3/UNADJUSTEDNONRAW_thumb_3.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/3/UNADJUSTEDNONRAW_thumb_3.jpg
new file mode 100644
index 00000000..4f0c1479
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/3/UNADJUSTEDNONRAW_thumb_3.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/4/UNADJUSTEDNONRAW_mini_4.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/4/UNADJUSTEDNONRAW_mini_4.jpg
new file mode 100644
index 00000000..095ef4d1
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/4/UNADJUSTEDNONRAW_mini_4.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/4/UNADJUSTEDNONRAW_thumb_4.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/4/UNADJUSTEDNONRAW_thumb_4.jpg
new file mode 100644
index 00000000..6881aa31
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/4/UNADJUSTEDNONRAW_thumb_4.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/5/UNADJUSTEDNONRAW_mini_5.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/5/UNADJUSTEDNONRAW_mini_5.jpg
new file mode 100644
index 00000000..7929d77d
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/5/UNADJUSTEDNONRAW_mini_5.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/5/UNADJUSTEDNONRAW_thumb_5.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/5/UNADJUSTEDNONRAW_thumb_5.jpg
new file mode 100644
index 00000000..df6e6345
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/5/UNADJUSTEDNONRAW_thumb_5.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/6/UNADJUSTEDNONRAW_mini_6.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/6/UNADJUSTEDNONRAW_mini_6.jpg
new file mode 100644
index 00000000..0fddde1a
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/6/UNADJUSTEDNONRAW_mini_6.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/6/UNADJUSTEDNONRAW_thumb_6.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/6/UNADJUSTEDNONRAW_thumb_6.jpg
new file mode 100644
index 00000000..c64fcafd
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/6/UNADJUSTEDNONRAW_thumb_6.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/7/UNADJUSTEDNONRAW_mini_7.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/7/UNADJUSTEDNONRAW_mini_7.jpg
new file mode 100644
index 00000000..15403b4d
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/7/UNADJUSTEDNONRAW_mini_7.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/7/UNADJUSTEDNONRAW_thumb_7.jpg b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/7/UNADJUSTEDNONRAW_thumb_7.jpg
new file mode 100644
index 00000000..f8943c5c
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/proxies/derivatives/00/00/7/UNADJUSTEDNONRAW_thumb_7.jpg differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/Info.plist b/tests/Test-10.14.5.photoslibrary/resources/recovery/Info.plist
new file mode 100644
index 00000000..e1f5cdb2
--- /dev/null
+++ b/tests/Test-10.14.5.photoslibrary/resources/recovery/Info.plist
@@ -0,0 +1,31 @@
+
+
+
+
+ DatabaseMinorVersion
+ 1
+ DatabaseVersion
+ 112
+ HistoricalMarker
+
+ LastHistoryRowId
+ 422
+ LibraryBuildTag
+ D8C4AAA1-3AB6-4A65-BEBD-99CC3E5D433E
+ LibrarySchemaVersion
+ 4016
+
+ LibrarySchemaVersion
+ 4016
+ MetaSchemaVersion
+ 2
+ SnapshotComplete
+
+ SnapshotCompletedDate
+ 2019-07-27T13:16:43Z
+ SnapshotLastValidated
+ 2019-07-27T13:16:43Z
+ SnapshotTables
+
+
+
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAdjustmentData/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAdjustmentData/0000000000.lij
new file mode 100644
index 00000000..7ffc0291
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAdjustmentData/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAdminData/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAdminData/0000000000.lij
new file mode 100644
index 00000000..65290a1f
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAdminData/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAlbum/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAlbum/0000000000.lij
new file mode 100644
index 00000000..f4fdf662
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAlbum/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAlbumVersion/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAlbumVersion/0000000000.lij
new file mode 100644
index 00000000..9730a2c4
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKAlbumVersion/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKBookmark/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKBookmark/0000000000.lij
new file mode 100644
index 00000000..88d7f509
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKBookmark/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKCustomSortOrder/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKCustomSortOrder/0000000000.lij
new file mode 100644
index 00000000..7be9cc57
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKCustomSortOrder/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFace/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFace/0000000000.lij
new file mode 100644
index 00000000..bfc7e6ea
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFace/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFaceGroup/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFaceGroup/0000000000.lij
new file mode 100644
index 00000000..ea33f762
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFaceGroup/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFacePrint/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFacePrint/0000000000.lij
new file mode 100644
index 00000000..fca406bf
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFacePrint/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFolder/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFolder/0000000000.lij
new file mode 100644
index 00000000..ebefb6ff
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKFolder/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKImageProxyState/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKImageProxyState/0000000000.lij
new file mode 100644
index 00000000..e27c53cb
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKImageProxyState/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKImportGroup/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKImportGroup/0000000000.lij
new file mode 100644
index 00000000..f9e21589
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKImportGroup/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKKeyword/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKKeyword/0000000000.lij
new file mode 100644
index 00000000..ae599bfe
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKKeyword/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKKeywordForVersion/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKKeywordForVersion/0000000000.lij
new file mode 100644
index 00000000..869f9778
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKKeywordForVersion/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKMaster/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKMaster/0000000000.lij
new file mode 100644
index 00000000..4a6854d7
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKMaster/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKModelResource/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKModelResource/0000000000.lij
new file mode 100644
index 00000000..6f49cdf5
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKModelResource/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPerson/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPerson/0000000000.lij
new file mode 100644
index 00000000..29ce3a59
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPerson/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPersonMergeCandidatePerson/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPersonMergeCandidatePerson/0000000000.lij
new file mode 100644
index 00000000..94ff1216
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPersonMergeCandidatePerson/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPlace/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPlace/0000000000.lij
new file mode 100644
index 00000000..1698aaef
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPlace/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPlaceForVersion/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPlaceForVersion/0000000000.lij
new file mode 100644
index 00000000..991ca93c
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKPlaceForVersion/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKSceneInVersion/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKSceneInVersion/0000000000.lij
new file mode 100644
index 00000000..23cc9007
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKSceneInVersion/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVersion/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVersion/0000000000.lij
new file mode 100644
index 00000000..839eb162
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVersion/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVersionAnalysisState/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVersionAnalysisState/0000000000.lij
new file mode 100644
index 00000000..0715465e
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVersionAnalysisState/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVolume/0000000000.lij b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVolume/0000000000.lij
new file mode 100644
index 00000000..bc990544
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/recovery/RKVolume/0000000000.lij differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/segments/Thumb64Segment_0.data b/tests/Test-10.14.5.photoslibrary/resources/segments/Thumb64Segment_0.data
new file mode 100644
index 00000000..c7694d14
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/segments/Thumb64Segment_0.data differ
diff --git a/tests/Test-10.14.5.photoslibrary/resources/segments/ThumbJPGSegment_0.data b/tests/Test-10.14.5.photoslibrary/resources/segments/ThumbJPGSegment_0.data
new file mode 100644
index 00000000..acc56717
Binary files /dev/null and b/tests/Test-10.14.5.photoslibrary/resources/segments/ThumbJPGSegment_0.data differ
diff --git a/tests/test_mojave.py b/tests/test_mojave.py
new file mode 100644
index 00000000..277e4501
--- /dev/null
+++ b/tests/test_mojave.py
@@ -0,0 +1,188 @@
+import pytest
+
+# TODO: put some of this code into a pre-function
+
+PHOTOS_DB = "./tests/Test-10.14.5.photoslibrary/database/photos.db"
+KEYWORDS = [
+ "Kids",
+ "wedding",
+ "flowers",
+ "England",
+ "London",
+ "London 2018",
+ "St. James's Park",
+ "UK",
+ "United Kingdom",
+]
+PERSONS = ["Katie", "Suzy", "Maria"]
+ALBUMS = ["Pumpkin Farm"]
+KEYWORDS_DICT = {
+ "Kids": 4,
+ "wedding": 2,
+ "flowers": 1,
+ "England": 1,
+ "London": 1,
+ "London 2018": 1,
+ "St. James's Park": 1,
+ "UK": 1,
+ "United Kingdom": 1,
+}
+PERSONS_DICT = {"Katie": 3, "Suzy": 2, "Maria": 1}
+ALBUM_DICT = {"Pumpkin Farm": 3}
+
+
+def test_init():
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ assert isinstance(photosdb, osxphotos.PhotosDB)
+
+
+def test_persons():
+ import osxphotos
+ import collections
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ assert "Katie" in photosdb.persons()
+ assert collections.Counter(PERSONS) == collections.Counter(photosdb.persons())
+
+
+def test_keywords():
+ import osxphotos
+ import collections
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ assert "wedding" in photosdb.keywords()
+ assert collections.Counter(KEYWORDS) == collections.Counter(photosdb.keywords())
+
+
+def test_albums():
+ import osxphotos
+ import collections
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ assert "Pumpkin Farm" in photosdb.albums()
+ assert collections.Counter(ALBUMS) == collections.Counter(photosdb.albums())
+
+
+def test_keywords_dict():
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ keywords = photosdb.keywords_as_dict()
+ assert keywords["wedding"] == 2
+ assert keywords == KEYWORDS_DICT
+
+
+def test_persons_as_dict():
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ persons = photosdb.persons_as_dict()
+ assert persons["Maria"] == 1
+ assert persons == PERSONS_DICT
+
+
+def test_albums_as_dict():
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ albums = photosdb.albums_as_dict()
+ assert albums["Pumpkin Farm"] == 3
+ assert albums == ALBUM_DICT
+
+
+def test_attributes():
+ import datetime
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ photos = photosdb.photos(uuid=["15uNd7%8RguTEgNPKHfTWw"])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.keywords() == ["Kids"]
+ assert p.filename() == "Pumkins2.jpg"
+ assert p.date() == datetime.datetime(2018, 9, 28, 16, 7, 7)
+ assert p.description() == "Girl holding pumpkin"
+ assert p.name() == "I found one!"
+ assert p.albums() == ["Pumpkin Farm"]
+ assert p.persons() == ["Katie"]
+ assert (
+ p.path()
+ == "./tests/Test-10.14.5.photoslibrary/Masters/2019/07/27/20190727-131650/Pumkins2.jpg"
+ )
+ assert p.ismissing() == False
+
+
+def test_missing():
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ photos = photosdb.photos(uuid=["od0fmC7NQx+ayVr+%i06XA"])
+ assert len(photos) == 1
+ p = photos[0]
+ assert p.path() == None
+ assert p.ismissing() == True
+
+
+def test_count():
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ photos = photosdb.photos()
+ assert len(photos) == 7
+
+
+def test_keyword_2():
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+ photos = photosdb.photos(keywords=["wedding"])
+ assert len(photos) == 2
+
+
+def test_keyword_not_in_album():
+ import osxphotos
+
+ photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+
+ # find all photos with keyword "Kids" not in the album "Pumpkin Farm"
+ photos1 = photosdb.photos(albums=["Pumpkin Farm"])
+ photos2 = photosdb.photos(keywords=["Kids"])
+ photos3 = [p for p in photos2 if p not in photos1]
+ assert len(photos3) == 1
+ assert photos3[0].uuid() == "od0fmC7NQx+ayVr+%i06XA"
+
+
+# def main():
+# photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB)
+# print(photosdb.keywords())
+# print(photosdb.persons())
+# print(photosdb.albums())
+
+# print(photosdb.keywords_as_dict())
+# print(photosdb.persons_as_dict())
+# print(photosdb.albums_as_dict())
+
+# # # find all photos with Keyword = Foo and containing John Smith
+# # photos = photosdb.photos(keywords=["Foo"],persons=["John Smith"])
+# #
+# # # find all photos that include Alice Smith but do not contain the keyword Bar
+# # photos = [p for p in photosdb.photos(persons=["Alice Smith"])
+# # if p not in photosdb.photos(keywords=["Bar"]) ]
+# photos = photosdb.photos()
+# for p in photos:
+# print(
+# p.uuid(),
+# p.filename(),
+# p.date(),
+# p.description(),
+# p.name(),
+# p.keywords(),
+# p.albums(),
+# p.persons(),
+# p.path(),
+# )
+
+# if __name__ == "__main__":
+# main()