'use strict';

import * as assert from './assert';
import 'should';

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

  /**
   * @test {assert#arrayMatchWithEqualLength}
   */
  describe('arrayMatchWithEqualLength', () => {

    /**
     * @test {assert#arrayMatchWithEqualLength}
     */
    it('should be possible to use matchers with pass result', () => {
      assert.arrayMatchWithEqualLength([{value: 1}, {value: 2}], [
        {value: it => it.should.be.Number()},
        {value: it => it.should.be.Number()}
      ]);
    });

    /**
     * @test {assert#arrayMatchWithEqualLength}
     */
    it('should be possible to use matchers with fail result', () => {
      try {
        assert.arrayMatchWithEqualLength([{value: 1}, {value: 2}], [
          {value: it => it.should.be.String()},
          {value: 2}
        ]);
        throw new Error('test');
      } catch (err) {
        err.name.should.equal('AssertionError');
      }
    });

  });

});
