|  | const expect = require('chai').expect;
const sinon = require('sinon');
const Clock = require('../src/common/clock.js');
describe("Clock Tests", function(){
  var count = 0;
  var tick = ()=>{count += 1;};
  var clk = (new Clock()).clk(tick);
  function speedTest(hz){
    let stime = (new Date()).getTime();
    let dt = 0;
    clk.hz = hz;
    while (count < hz && dt < 1000){
      clk.tick();
      dt = ((new Date()).getTime()) - stime;
    }
    return dt;
  }
  it("4hz for approx. 1 second", function(){
    let dt = speedTest(4);
    expect(count).to.equal(4);
    expect(dt).to.be.gt(750);
  });
  it("4Khz for approx. 1 second", function(){
    let ts = 4000;
    let d = ts * 0.01;
    let dt = speedTest(ts); 
    expect(count).to.be.gt(ts - d);
    expect(count).to.be.lt(ts + d);
    expect(dt).to.be.gt(990);
    expect(dt).to.be.lt(1010);
  });
  it("4Mhz for approx. 1 second", function(){
    let ts = 4000000;
    let d = ts * 0.01;
    let dt = speedTest(ts); 
    expect(count).to.be.gt(ts - d);
    expect(count).to.be.lt(ts + d);
    expect(dt).to.be.gt(990);
    expect(dt).to.be.lt(1010);
  });
});
 |