test/atomic/timetag.spec.js
- import { expect } from 'chai'
-
- import AtomicTimetag, {
- Timetag,
- SECONDS_70_YEARS,
- } from '../../src/atomic/timetag'
-
- /** @test {Timetag} */
- describe('Timetag', () => {
- let timetag
- let anotherTimetag
-
- before(() => {
- timetag = new Timetag(SECONDS_70_YEARS + 1234, 0)
- anotherTimetag = new Timetag(3718482449, 131799040)
- })
-
- it('sets the values correctly on initialization', () => {
- expect(timetag.seconds).to.be.equals(SECONDS_70_YEARS + 1234)
- expect(timetag.fractions).to.be.equals(0)
- })
-
- /** @test {Timetag#timestamp} */
- describe('timestamp', () => {
- it('converts correctly to js timestamps', () => {
- expect(timetag.timestamp()).to.be.equals(1234 * 1000)
- expect(anotherTimetag.timestamp()).to.be.equals(1509493649000)
- })
-
- it('converts correctly to NTP timestamps', () => {
- timetag.timestamp(1)
-
- expect(timetag.seconds).to.be.equals(SECONDS_70_YEARS)
- expect(timetag.fractions).to.be.equals(4294967)
- })
- })
- })
-
- /** @test {AtomicTimetag} */
- describe('AtomicTimetag', () => {
- const bitArray = {
- 0: 0, 1: 1, 2: 248, 3: 99, 4: 0, 5: 4, 6: 84, 7: 63,
- }
-
- let atomic
-
- before(() => {
- atomic = new AtomicTimetag(new Timetag(129123, 283711))
- })
-
- /** @test {AtomicTimetag#pack} */
- describe('pack', () => {
- let result
-
- before(() => {
- result = atomic.pack()
- })
-
- it('returns correct bits', () => {
- expect(JSON.stringify(result)).to.equal(JSON.stringify(bitArray))
- })
-
- it('consists of 64 bits', () => {
- expect(result.byteLength * 8).to.equal(64)
- })
- })
-
- /** @test {AtomicTimetag#unpack} */
- describe('unpack', () => {
- let returnValue
-
- before(() => {
- const data = new Uint8Array([1, 1, 1, 0, 0, 0, 1, 0])
- const dataView = new DataView(data.buffer)
-
- returnValue = atomic.unpack(dataView, 0)
- })
-
- it('returns a number', () => {
- expect(returnValue).to.be.a('number')
- })
-
- it('sets the offset to 8', () => {
- expect(atomic.offset).to.equal(8)
- })
-
- it('sets the correct NTP values', () => {
- expect(atomic.value.seconds).to.equal(16843008)
- expect(atomic.value.fractions).to.equal(256)
- })
- })
-
- describe('constructor', () => {
- it('with an integer timestamp', () => {
- atomic = new AtomicTimetag(5000)
- expect(atomic.value.seconds).to.equal(2208988805)
- })
-
- it('with a Date instance', () => {
- const date = new Date(2015, 2, 21, 5, 0, 21)
- date.setUTCHours(4)
- atomic = new AtomicTimetag(date)
- expect(atomic.value.seconds).to.equal(3635899221)
- })
- })
- })