text: var stdout = process.stdout
    , test = require("tape")
    , parse = require("../index")
    , fs = require("fs")
    , path = require("path")
    , file = path.resolve(__dirname, "fixtures/c.tar")
    , index = 0
  
    , expect =
  [ [ 'entry',
      { path: 'c.txt',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 513,
        mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'),
        cksum: 5422,
        type: '0',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '' },
      undefined ],
    [ 'entry',
      { path: 'cc.txt',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 513,
        mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'),
        cksum: 5525,
        type: '0',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '' },
      undefined ],
    [ 'entry',
      { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 100,
        mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'),
        cksum: 18124,
        type: '0',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '' },
      undefined ],
    [ 'entry',
      { path: 'Ω.txt',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 2,
        mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
        cksum: 5695,
        type: '0',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '' },
      undefined ],
    [ 'extendedHeader',
      { path: 'PaxHeader/Ω.txt',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 120,
        mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
        cksum: 6702,
        type: 'x',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '' },
      { path: 'Ω.txt',
        ctime: 1319737909,
        atime: 1319739061,
        dev: 234881026,
        ino: 51693379,
        nlink: 1 } ],
    [ 'entry',
      { path: 'Ω.txt',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 2,
        mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
        cksum: 5695,
        type: '0',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '',
        ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
        atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'),
        dev: 234881026,
        ino: 51693379,
        nlink: 1 },
      undefined ],
    [ 'extendedHeader',
      { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 353,
        mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
        cksum: 14488,
        type: 'x',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '' },
      { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        ctime: 1319686868,
        atime: 1319741254,
        'LIBARCHIVE.creationtime': '1319686852',
        dev: 234881026,
        ino: 51681874,
        nlink: 1 } ],
    [ 'entry',
      { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 200,
        mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
        cksum: 14570,
        type: '0',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '',
        ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
        atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'),
        'LIBARCHIVE.creationtime': '1319686852',
        dev: 234881026,
        ino: 51681874,
        nlink: 1 },
      undefined ],
    [ 'longPath',
      { path: '././@LongLink',
        mode: 0,
        uid: 0,
        gid: 0,
        size: 201,
        mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
        cksum: 4976,
        type: 'L',
        linkpath: '',
        ustar: false },
      '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ],
    [ 'entry',
      { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        mode: 420,
        uid: 1000,
        gid: 1000,
        size: 201,
        mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'),
        cksum: 14086,
        type: '0',
        linkpath: '',
        ustar: false },
      undefined ],
    [ 'longLinkpath',
      { path: '././@LongLink',
        mode: 0,
        uid: 0,
        gid: 0,
        size: 201,
        mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
        cksum: 4975,
        type: 'K',
        linkpath: '',
        ustar: false },
      '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ],
    [ 'longPath',
      { path: '././@LongLink',
        mode: 0,
        uid: 0,
        gid: 0,
        size: 201,
        mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
        cksum: 4976,
        type: 'L',
        linkpath: '',
        ustar: false },
      '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ],
    [ 'entry',
      { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL',
        mode: 511,
        uid: 1000,
        gid: 1000,
        size: 0,
        mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'),
        cksum: 21603,
        type: '2',
        linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        ustar: false },
      undefined ],
    [ 'extendedHeader',
      { path: 'PaxHeader/200-hard',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 143,
        mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
        cksum: 6533,
        type: 'x',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '' },
      { ctime: 1320617144,
        atime: 1320617232,
        'LIBARCHIVE.creationtime': '1319686852',
        dev: 234881026,
        ino: 51681874,
        nlink: 2 } ],
    [ 'entry',
      { path: '200-hard',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 200,
        mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
        cksum: 5526,
        type: '0',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '',
        ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'),
        atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'),
        'LIBARCHIVE.creationtime': '1319686852',
        dev: 234881026,
        ino: 51681874,
        nlink: 2 },
      undefined ],
    [ 'extendedHeader',
      { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 353,
        mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
        cksum: 14488,
        type: 'x',
        linkpath: '',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '' },
      { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        ctime: 1320617144,
        atime: 1320617406,
        'LIBARCHIVE.creationtime': '1319686852',
        dev: 234881026,
        ino: 51681874,
        nlink: 2 } ],
    [ 'entry',
      { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
        mode: 420,
        uid: 24561,
        gid: 20,
        size: 0,
        mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
        cksum: 15173,
        type: '1',
        linkpath: '200-hard',
        ustar: 'ustar\0',
        ustarver: '00',
        uname: 'isaacs',
        gname: 'staff',
        devmaj: 0,
        devmin: 0,
        fill: '',
        ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'),
        atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'),
        'LIBARCHIVE.creationtime': '1319686852',
        dev: 234881026,
        ino: 51681874,
        nlink: 2 },
      undefined ] ]
  
  
  var through = require('through')
  
  test("parser test", function (t) {
    var parser = parse()
  
    parser.on("end", function () {
      t.equal(index, expect.length, "saw all expected events")
      t.end()
    })
  
    fs.createReadStream(file)
      .pipe(parser)
      .on("*", function (ev, entry) {
        var wanted = expect[index]
        if (!wanted) {
          return t.fail("Unexpected event: " + ev)
        }
        var result = [ev, entry.props]
        entry.on("end", function () {
          result.push(entry.fields || entry.body)
  
          t.equal(ev, wanted[0], index + " event type")
          t.deepEqual(entry.props, wanted[1], wanted[1].path + " entry properties")
          if (wanted[2]) {
            t.deepEqual(result[2], wanted[2], "metadata values")
          }
          index ++
        })
      })
  })
  