'use strict'
/* eslint-env mocha */

const chai = require('chai')
chai.use(require('dirty-chai'))
const { expect } = chai

const pTimes = require('p-times')

const peerUtils = require('../utils/creators/peer')
const baseOptions = require('../utils/base-options')

describe('ping', () => {
  let nodes

  beforeEach(async () => {
    nodes = await peerUtils.createPeer({
      number: 2,
      config: baseOptions
    })
  })

  it('ping once from peer0 to peer1', async () => {
    const latency = await nodes[0].ping(nodes[1].peerInfo)

    expect(latency).to.be.a('Number')
  })

  it('ping several times for getting an average', async () => {
    const latencies = await pTimes(5, () => nodes[1].ping(nodes[0].peerInfo))

    const averageLatency = latencies.reduce((p, c) => p + c, 0) / latencies.length
    expect(averageLatency).to.be.a('Number')
  })
})