def test_analyzed_data_e2e(self): expected = models.ADCMediaItemAnalyzedData( bpm=1, keySignatureIndex=10, uuid="foo", ) actual = archiver.unarchive(archiver.archive(expected)) self.assertEqual(actual, expected)
def test_cuepoint_e2e(self): expected = models.ADCCuePoint( comment="bar", number=2, time=15.2, ) actual = archiver.unarchive(archiver.archive(expected)) self.assertEqual(actual, expected)
def save_track(self, track: models.DjayTrack): self.validate_track(track) uuid = track.title.uuid rows = [] rows.append( ('mediaItemUserData', uuid, archiver.archive(track.user_data))) rows.append(('mediaItemTitleIDs', uuid, archiver.archive(track.title))) if track.analysis is not None: rows.append(('mediaItemAnalyzedData', uuid, archiver.archive(track.analysis))) query = 'UPDATE database2 set data=? WHERE collection=? AND key=?' with sqlite3.connect(self._fname) as conn: for row in rows: conn.execute(query, (row[2], row[0], row[1])) self.load()
def test_circular_ref(self): obj = FooArchive('herp', timestamp(9001), 42, ['strawberries', 'dragonfruit'], {'key': 'value'}, False, None) obj.recursive = obj plist = plistlib.loads(archiver.archive(obj)) foo_obj = plist['$objects'][1] self.assertEqual(plistlib.UID(1), foo_obj['recurse'])
def test_circular_ref(self): foo = FooArchive('herp', timestamp(9001), 42, ['strawberries', 'dragonfruit'], {'key': 'value'}, False, None) foo.recursive = foo plist = bplist.parse(archiver.archive(foo)) foo_obj = plist['$objects'][1] self.assertEqual(uid(1), foo_obj['recurse'])
def test_title_e2e(self): expected = models.ADCMediaItemTitleID( title='title', artist='artist', uuid='UuId', internalID='UuId', stringRepresentation='String Repr', duration=15.3, ) actual = archiver.unarchive(archiver.archive(expected)) self.assertEqual(actual, expected)
def test_location_e2e(self): expected = models.ADCMediaItemLocation( sourceURIs={ models.NSURL(NSrelative='file:///tmp/foo.wav', NSbase=None), models.NSURL(NSrelative='com.apple.iTunes:123456', NSbase=None) }, type=3, urlBookmarkData=models.NSMutableData( NSdata=b'not a b64-encoded string'), uuid='71f9') actual = archiver.unarchive(archiver.archive(expected)) self.assertEqual(actual, expected)
def test_PLRevGeoLocationInfo_2(): # test PLRevGeoLocationInfo class archive/unarchive from bpylist import archiver from osxphotos.placeinfo import ( PlaceInfo, PlaceInfo5, PLRevGeoLocationInfo, CNPostalAddress, PLRevGeoMapItem, PLRevGeoMapItemAdditionalPlaceInfo, ) place_1 = PlaceInfo5(REVERSE_GEO_LOC_DATA_1) plrevgeoloc_1 = place_1._plrevgeoloc archived = archiver.archive(plrevgeoloc_1) place_1_unarchived = PlaceInfo5(archived) assert isinstance(place_1_unarchived, PlaceInfo) assert place_1_unarchived._plrevgeoloc == place_1._plrevgeoloc
def test_userdata_e2e(self): expected = models.ADCMediaItemUserData( cuePoints=[ models.ADCCuePoint(comment=None, number=1, time=3.2826459407806396), models.ADCCuePoint(comment=None, number=2, time=114.29496765136719), models.ADCCuePoint(comment=None, number=3, time=114.83682250976562) ], startPoint=models.ADCCuePoint(comment=None, number=0, time=112.90266418457031), uuid='71f9ccc746630c592ceeed39cbc837b2', playCount=7, energy=15, highEQ=10.30, midEQ=2.0, lowEQ=3.0, manualBPM=117.33, manualBeatTime=1.01, manualKeySignatureIndex=7, rating=3, # TODO: Populate the fields. linkedUserDataUUIDs=None, loopRegions=None, manualFirstDownBeatIndices=None, manualGridStartPoints=None, tagUUIDs=None, endPoint=None, ) actual = archiver.unarchive(archiver.archive(expected)) self.assertEqual(actual, expected)
def pyobject_to_selector(s): return archiver.archive(s)
def ns_keyed_archiver(obj): return archiver.archive(obj)
def archive(self, obj): archived = archiver.archive(obj) unarchived = archiver.unarchive(archived) self.assertEqual(obj, unarchived)
def test_unpack_primitive_multiple_refs(self): expected = ['a', 'a'] actual = archiver.unarchive(archiver.archive(['a', 'a'])) self.assertEqual(actual, expected)
class Person: def __init__(self, name, age, house): self.name = name self.age = age self.house = house def __eq__(self, other): for field in ['name', 'age', 'house']: if getattr(self, field) != getattr(other, field): return False return True @staticmethod def encode_archive(obj, archive): archive.encode('name', obj.name) archive.encode('age', obj.age) archive.encode('house', obj.house) @staticmethod def decode_archive(archive): name = archive.decode('name') age = archive.decode('age') house = archive.decode('house') return Person(name, age, house) archiver.update_class_map({'crap.Foo': Person}) obj = Person('herp', '42', 'strawberries') archiver.archive(obj)