'use strict'; var test = require('tape'); var hooker = require('hooker'); var beeper = require('./'); var BEEP_CHAR = '\u0007'; test('beep', function (t) { var i = 0; hooker.hook(process.stdout, 'write', function (str) { if (str === BEEP_CHAR) { i++; } }); beeper(1, function () { hooker.unhook(process.stdout, 'write'); t.assert(i === 1, i); t.end(); }); }); function testBeepCount(count) { test('count ' + count, function (t) { var i = 0; hooker.hook(process.stdout, 'write', function (str) { if (str === BEEP_CHAR) { i++; } }); beeper(count, function () { hooker.unhook(process.stdout, 'write'); t.assert(i === count, i); t.end(); }); }); } testBeepCount(0); testBeepCount(1); testBeepCount(3); test('non-integer count should throw exception', function (t) { try { beeper(1.5, function () { t.assert(false); t.end(); }); } catch (e) { t.assert(true); t.end(); } }); test('negative count should throw exception', function (t) { try { beeper(-1, function () { t.assert(false); t.end(); }); } catch (e) { t.assert(true); t.end(); } }); test('melody', function (t) { var i = 0; hooker.hook(process.stdout, 'write', function (str) { if (str === BEEP_CHAR) { i++; } }); beeper('*-*', function () { hooker.unhook(process.stdout, 'write'); t.assert(i === 2, i); t.end(); }); });