'use strict'
/* eslint-disable */

// A special, edited version of the multipart parser from parted is needed here
// because otherwise it attempts to do some things above and beyond just parsing
// -- like saving to disk and whatnot

const Parser = require('./parted-multipart')
const boundary = '-----------------------------168072824752491622650073'
const parser = new Parser('boundary=' + boundary)
const mb = 100
const buffer = createMultipartBuffer(boundary, mb * 1024 * 1024)
const callbacks =
      {
        partBegin: -1,
        partEnd: -1,
        headerField: -1,
        headerValue: -1,
        partData: -1,
        end: -1,
      }

parser.on('header', function () {
  // callbacks.headerField++;
})

parser.on('data', function () {
  // callbacks.partBegin++;
})

parser.on('part', function () {

})

parser.on('end', function () {
  // callbacks.end++;
})

const start = +new Date()
const duration = +new Date() - start
const mbPerSec = (mb / (duration / 1000)).toFixed(2)

console.log(mbPerSec + ' mb/sec')

function createMultipartBuffer (boundary, size) {
  const head =
        '--' + boundary + '\r\n' +
      'content-disposition: form-data; name="field1"\r\n' +
      '\r\n'
  const tail = '\r\n--' + boundary + '--\r\n'
  const buffer = Buffer.allocUnsafe(size)

  buffer.write(head, 'ascii', 0)
  buffer.write(tail, 'ascii', buffer.length - tail.length)
  return buffer
}

process.on('exit', function () {
  /* for (var k in callbacks) {
    assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]);
  } */
})
