| import { decodeAndTransformProto, FILE_TYPES, FILE_DECODERS } from '../src/decode'; |
| import fs from 'fs'; |
| import path from 'path'; |
| import { expectedEntries, expectedLayers, layers_traces } from './traces/ExpectedTraces'; |
| |
| describe("Proto Transformations", () => { |
| it("can transform surface flinger traces", () => { |
| for (var i = 0; i < layers_traces.length; i++) { |
| const trace = layers_traces[i]; |
| const buffer = new Uint8Array(fs.readFileSync(path.resolve(__dirname, trace))); |
| const data = decodeAndTransformProto(buffer, FILE_DECODERS[FILE_TYPES.SURFACE_FLINGER_TRACE].decoderParams, true); |
| |
| // use final entry as this determines if there was any error in previous entry parsing |
| const transformedEntry = data.entries[data.entries.length-1]; |
| const expectedEntry = expectedEntries[i]; |
| for (const property in expectedEntry) { |
| expect(transformedEntry[property]).toEqual(expectedEntry[property]); |
| } |
| |
| // check final flattened layer |
| const transformedLayer = transformedEntry.flattenedLayers[transformedEntry.flattenedLayers.length-1]; |
| const expectedLayer = expectedLayers[i]; |
| for (const property in expectedLayer) { |
| expect(transformedLayer[property]).toEqual(expectedLayer[property]); |
| } |
| } |
| }); |
| }); |