Home Reference Source Test

specs/data-structures.spec.js

import { assert } from 'chai';


import { SafeTupleBuilder } from '../src/Data-Structures/safe-tuple-builder';
import { Tuple } from '../src/Data-Structures/tuple';

/** @test {SafeTupleBuilder} */
describe('SafeTupleBuilder Tests', () => {

  /** @test {SafeTupleBuilder#of} */
  it('test: .of(...args)', () => {
    const expected = ['Barkley', 'Rosser']
       , StringPair = SafeTupleBuilder.of(String, String)
       , name = new StringPair(...expected)
       , [first, last] = name.getAll();

    assert.equal(first, expected[0]);
    assert.equal(last, expected[1]);

    name.unpack((first, last) => {
      assert.equal(first, expected[0]);
      assert.equal(last, expected[1]);
    });

    assert.equal(name.get(0), expected[0]);
    assert.equal(name.get(1), expected[1]);
  });
});

/** @test {Tuple} */
describe('Tuple Tests', () => {

  /** @test {Tuple#getAll} */
  it('test: .getAll()', () => {
    const expected = ['Barkley', 'Rosser']
       , name = new Tuple(...expected)
       , [first, last] = name.getAll();

    assert.equal(first, expected[0]);
    assert.equal(last, expected[1]);
  });

    /** @test {Tuple#unpack} */
    it('test: .unpack()', () => {
      const expected = ['Barkley', 'Rosser']
          , name = new Tuple(...expected);

      name.unpack((first, last) => {
        assert.equal(first, expected[0]);
        assert.equal(last, expected[1]);
      });
    });

    /** @test {Tuple#get} */
    it('test: .get(index)', () => {
      const expected = ['Barkley', 'Rosser']
          , name = new Tuple(...expected);

      assert.equal(name.get(0), expected[0]);
      assert.equal(name.get(1), expected[1]);
    });
});