import { expect, assert } from 'chai';
import { describe } from 'mocha';
import { eCompress } from '../../src/index.js';
import { isNonOverlappingAll } from '../../node/double-expansion/is-overlapping.js';
import { isValid } from '../helpers/is-valid.js';


/**
 * 
 * @param e 
 * @param res 
 */
function check(e: number[], res: number[]) {
    assert(
        isNonOverlappingAll(e),
        'The input should be a non-overlapping expansion.'
    );

    let result = eCompress(e);

    assert(
        isValid(result),
        'The result should be a non-overlapping, non-adjacent expansion'
    );

    expect(result).to.eql(res);
}


describe('eCompress', function() {
	it('should correctly eCompress some floating point number expansions', 
	function() {
        check(
            [1, 2, 4, 8],
            [15]
        );

        check(
            [0, 0, -5.551115123125783e-17, 0.6000000000000001],
            [-5.551115123125783e-17, 0.6000000000000001]
        );

        check(
            [0,3],
            [3]
        );

        check(
            [0, 2e-101, 0, 4.6e-81, 0, 9.12e-61, 0, 1.56e-40, 0, 1.998e-20],
            [2e-101, 4.6e-81, 9.12e-61, 1.56e-40, 1.998e-20]
        );
	});
});
