Exemple #1
0
    def test_from_stream(self):
        ae = self.assertEqual

        data = bytearray()
        data.extend(b"\x3E\x00\x00\x00")  # size
        data.extend(b"\x01\x00\x00\x00")  # id/index
        data.extend(b"\x00\x68\x67\x4F\xB7\xA3\xCA\x01")  # mtime
        data.extend(b"d\x00a\x00n\x00g\x00e\x00r\x00-\x00s\x00i\x00")  # name
        data.extend(b"g\x00n\x00-\x00s\x00h\x00o\x00c\x00k\x00")  # more name
        data.extend(b".\x00j\x00p\x00g\x00\x00\x00")  # more name

        stream = ByteIStream(data)
        ce0 = CatalogEntry.from_stream(stream)
        ce1 = CatalogEntry.from_stream(stream, 0)

        for ce in (ce0, ce1):
            ae(ce.size, 0x3E)
            ae(ce.id, 1)
            ae(ce.stream_name, "1")
            ae(ce.mtime, datetime(2010, 2, 2, 3,  25, 4))
Exemple #2
0
    def test_from_stream(self):
        ae = self.assertEqual

        data = bytearray()
        data.extend(b"\x3E\x00\x00\x00")  # size
        data.extend(b"\x01\x00\x00\x00")  # id/index
        data.extend(b"\x00\x68\x67\x4F\xB7\xA3\xCA\x01")  # mtime
        data.extend(b"d\x00a\x00n\x00g\x00e\x00r\x00-\x00s\x00i\x00")  # name
        data.extend(b"g\x00n\x00-\x00s\x00h\x00o\x00c\x00k\x00")  # more name
        data.extend(b".\x00j\x00p\x00g\x00\x00\x00")  # more name

        stream = ByteIStream(data)
        ce0 = CatalogEntry.from_stream(stream)
        ce1 = CatalogEntry.from_stream(stream, 0)

        for ce in (ce0, ce1):
            ae(ce.size, 0x3E)
            ae(ce.id, 1)
            ae(ce.stream_name, "1")
            ae(ce.mtime, datetime(2010, 2, 2, 3, 25, 4))
Exemple #3
0
    def test_from_stream(self):
        ae = self.assertEqual

        data = bytearray()
        # catalog header
        data.extend(b"\x10\x00\x07\x00")  # unknown 1 and 2
        data.extend(b"\x02\x00\x00\x00")  # item_count
        data.extend(b"\x00\x01\x02\x03")  # width
        data.extend(b"\x04\x05\x06\x07")  # height

        # first entry
        data.extend(b"\x2E\x00\x00\x00")  # size
        data.extend(b"\x01\x00\x00\x00")  # id/index
        data.extend(b"\x95\x98\x50\xB7\xA3\xCA\x01")  # mtime
        data.extend(b"z\x00o\x00o\x00l\x00e\x00m\x00u\x00r\x00")  # name
        data.extend(b"1\x00.\x00j\x00p\x00g\x00\x00")  # more name

        # second entry
        data.extend(b"\x3E\x00\x00\x00")  # size
        data.extend(b"\x02\x00\x00\x00")  # id/index
        data.extend(b"\x00\x68\x67\x4F\xB7\xA3\xCA\x01")  # mtime
        data.extend(b"d\x00a\x00n\x00g\x00e\x00r\x00-\x00s\x00i\x00")  # name
        data.extend(b"g\x00n\x00-\x00s\x00h\x00o\x00c\x00k\x00")  # more name
        data.extend(b".\x00j\x00p\x00g\x00\x00\x00")  # more name

        stream = ByteIStream(data)

        cat0 = Catalog.from_stream(stream)
        cat1 = Catalog.from_stream(stream, 0)

        entries = [
            CatalogEntry.from_stream(stream, 16),
            CatalogEntry.from_stream(stream, 62)
        ]

        for cat in (cat0, cat1):
            ae(cat.width, 0x03020100)
            ae(cat.height, 0x07060504)
            ae(cat.item_count, 2)
            ae(cat.entries, entries)
Exemple #4
0
    def test_from_stream(self):
        ae = self.assertEqual

        data = bytearray()
        # catalog header
        data.extend(b"\x10\x00\x07\x00")  # unknown 1 and 2
        data.extend(b"\x02\x00\x00\x00")  # item_count
        data.extend(b"\x00\x01\x02\x03")  # width
        data.extend(b"\x04\x05\x06\x07")  # height

        # first entry
        data.extend(b"\x2E\x00\x00\x00")  # size
        data.extend(b"\x01\x00\x00\x00")  # id/index
        data.extend(b"\x95\x98\x50\xB7\xA3\xCA\x01")  # mtime
        data.extend(b"z\x00o\x00o\x00l\x00e\x00m\x00u\x00r\x00")  # name
        data.extend(b"1\x00.\x00j\x00p\x00g\x00\x00")  # more name

        # second entry
        data.extend(b"\x3E\x00\x00\x00")  # size
        data.extend(b"\x02\x00\x00\x00")  # id/index
        data.extend(b"\x00\x68\x67\x4F\xB7\xA3\xCA\x01")  # mtime
        data.extend(b"d\x00a\x00n\x00g\x00e\x00r\x00-\x00s\x00i\x00")  # name
        data.extend(b"g\x00n\x00-\x00s\x00h\x00o\x00c\x00k\x00")  # more name
        data.extend(b".\x00j\x00p\x00g\x00\x00\x00")  # more name

        stream = ByteIStream(data)

        cat0 = Catalog.from_stream(stream)
        cat1 = Catalog.from_stream(stream, 0)

        entries = [
            CatalogEntry.from_stream(stream, 16),
            CatalogEntry.from_stream(stream, 62)
        ]

        for cat in (cat0, cat1):
            ae(cat.width, 0x03020100)
            ae(cat.height, 0x07060504)
            ae(cat.item_count, 2)
            ae(cat.entries, entries)
Exemple #5
0
    def test__init__(self):
        ae = self.assertEqual
        ar = self.assertRaises
        tdb = self.tdb

        catalog_entries = [
            CatalogEntry(
                (0x2E, 1, FILETIMETodatetime.from_int(0x01CAA3B750989500),
                 "zoolemur1.jpg", "1")),
            CatalogEntry(
                (0x56, 2, FILETIMETodatetime.from_int(0x01CAA3B74F676800),
                 "Copy (2) of danger-sign-shock.jpg", "2")),
            CatalogEntry(
                (0x5E, 3, FILETIMETodatetime.from_int(0x01CAA3B74E363B00),
                 "Copy (2) of Kookaburra_at_Marwell.jpg", "3")),
            CatalogEntry(
                (0x54, 4, FILETIMETodatetime.from_int(0x01CAA3B74F676800),
                 "Copy (2) of Makari_the_Tiger.jpg", "4")),
            CatalogEntry(
                (0x4A, 5, FILETIMETodatetime.from_int(0x01CAA3B750989500),
                 "Copy (2) of prairiedogs.jpg", "5")),
            CatalogEntry(
                (0x46, 6, FILETIMETodatetime.from_int(0x01CAA3B750989500),
                 "Copy (2) of zoolemur1.jpg", "6")),
            CatalogEntry(
                (0x4E, 7, FILETIMETodatetime.from_int(0x01CAA3B74F676800),
                 "Copy of danger-sign-shock.jpg", "7")),
            CatalogEntry(
                (0x56, 8, FILETIMETodatetime.from_int(0x01CAA3B74E363B00),
                 "Copy of Kookaburra_at_Marwell.jpg", "8")),
            CatalogEntry(
                (0x4C, 9, FILETIMETodatetime.from_int(0x01CAA3B74F676800),
                 "Copy of Makari_the_Tiger.jpg", "9")),
            CatalogEntry(
                (0x42, 10, FILETIMETodatetime.from_int(0x01CAA3B750989500),
                 "Copy of prairiedogs.jpg", "01")),
            CatalogEntry(
                (0x3E, 11, FILETIMETodatetime.from_int(0x01CAA3B750989500),
                 "Copy of zoolemur1.jpg", "11")),
            CatalogEntry(
                (0x3E, 12, FILETIMETodatetime.from_int(0x01CAA3B74F676800),
                 "danger-sign-shock.jpg", "21")),
            CatalogEntry(
                (0x46, 13, FILETIMETodatetime.from_int(0x01CAA3B74E363B00),
                 "Kookaburra_at_Marwell.jpg", "31")),
            CatalogEntry(
                (0x3C, 14, FILETIMETodatetime.from_int(0x01CAA3B74F676800),
                 "Makari_the_Tiger.jpg", "41")),
            CatalogEntry(
                (0x32, 15, FILETIMETodatetime.from_int(0x01CAA3B750989500),
                 "prairiedogs.jpg", "51")),
        ]

        catalog = Catalog((96, 96, 15, catalog_entries))
        md5_hashes = {
            8: "41783146a36b0df9c0e450715439fa55",
            4: "8524c25aab60e2a76ecb3fd1215c52fa",
            2: "ca70cbc23a7e39fbeba90f027fef6e5c",
            1: "925405772966a6c3bbcedec92c2cb29a",
            3: "41783146a36b0df9c0e450715439fa55",
            6: "925405772966a6c3bbcedec92c2cb29a",
            5: "6bbeb0387e4f44aac21d582a1f2a467d",
            7: "ca70cbc23a7e39fbeba90f027fef6e5c",
            12: "ca70cbc23a7e39fbeba90f027fef6e5c",
            10: "6bbeb0387e4f44aac21d582a1f2a467d",
            9: "8524c25aab60e2a76ecb3fd1215c52fa",
            11: "925405772966a6c3bbcedec92c2cb29a",
            14: "8524c25aab60e2a76ecb3fd1215c52fa",
            13: "41783146a36b0df9c0e450715439fa55",
            15: "6bbeb0387e4f44aac21d582a1f2a467d"
        }

        ae(tdb.catalog, catalog)
        ae(tdb.thumbnails.keys(), md5_hashes.keys())
        for (key, hash) in md5_hashes.items():
            ae(md5(tdb.thumbnails[key].data).hexdigest(), hash)
        # end for

        ar(KeyError, ThumbsDb, self.cfb, "thisisnotthecatalogyouarelookingfor")