import {DeadMansSwitch} from "../../../../application/source/util/deadmansswitch.mjs";


describe('DeadMansSwitch', function () {

    describe('run instance', function () {

        it('should run', function (done) {

            const ms1 =  Date.now();

            new DeadMansSwitch(100, () => {

                const ms2 =  Date.now();

                const diff = ms2 - ms1;
                if (diff < 100) {
                    done('to short ' + diff);
                    return;
                }
                done();
            })


        });
    });

    describe('run instance and touch', function () {

        it('should run', function (done) {

            const ms1 = Date.now();

            const deadmansswitch = new DeadMansSwitch(100, () => {

                const ms2 = Date.now();

                const diff = ms2 - ms1;

                if (ms1 > ms2) {
                    done(new Error('timing error'));
                    return;
                }

                if (diff < 600) {
                    done(new Error('to short ' + diff));
                    return;
                }
                done();
            })

            //   0 ms: init() -> wait 100 ms 
            //  50 ms: touch() -> wait 100 ms
            //          -> wait 100
            // 100 ms: touch(500) -> wait 500 ms
            //          -> wait 500
            // 600 ms: execute callback
            setTimeout(() => {
                deadmansswitch.touch()

                setTimeout(() => {
                    deadmansswitch.touch(500)
                }, 50)

            }, 50)


        });
    });

});