import {test} from 'node:test';
import assert from 'node:assert/strict';
import {parseNumber} from './main.js';
test('eine ganze Zahl im Bereich ergibt ihren Wert, Leerzeichen entfernt', () => {
assert.deepEqual(parseNumber(' 4 ', 1, 10), {value: 4}, `parseNumber(' 4 ', 1, 10) ergab ${JSON.stringify(parseNumber(' 4 ', 1, 10))}`);
assert.deepEqual(parseNumber('-3', -5, 5), {value: -3}, `parseNumber('-3', -5, 5) ergab ${JSON.stringify(parseNumber('-3', -5, 5))}`);
});
test('eine leere Antwort bittet um eine Zahl', () => {
assert.deepEqual(parseNumber(' ', 1, 10), {error: 'Please type a number'}, `parseNumber(' ', 1, 10) ergab ${JSON.stringify(parseNumber(' ', 1, 10))}`);
});
test('Text, Dezimalzahlen und Exponenten sind keine ganzen Zahlen', () => {
for (const answer of ['abc', '2.5', '1e1', '4 tickets']) {
const got = parseNumber(answer, 1, 10);
assert.deepEqual(got, {error: `"${answer}" is not a whole number`}, `parseNumber('${answer}', 1, 10) ergab ${JSON.stringify(got)}`);
}
});
test('Zahlen außerhalb des Bereichs nennen die Grenze', () => {
assert.deepEqual(parseNumber('0', 1, 10), {error: 'The smallest is 1'}, `parseNumber('0', 1, 10) ergab ${JSON.stringify(parseNumber('0', 1, 10))}`);
assert.deepEqual(parseNumber('11', 1, 10), {error: 'The largest is 10'}, `parseNumber('11', 1, 10) ergab ${JSON.stringify(parseNumber('11', 1, 10))}`);
assert.deepEqual(parseNumber('120', 0, 99), {error: 'The largest is 99'}, `parseNumber('120', 0, 99) ergab ${JSON.stringify(parseNumber('120', 0, 99))}`);
});