function sumOddFibonacciNumbers(num) {
if (num < 0) {
throw 'number must be zero or positive';
}
if (num === 0) {
return 0;
}
if (num === 1) {
return 1;
}
let sumOddNums = 1;
const fibHelper = [0, 1];
let nextFib = fibHelper[0] + fibHelper[1];
for (let i = 2; nextFib <= num; i++) {
fibHelper[fibHelper.length] = fibHelper[i - 2] + fibHelper[i - 1];
if (fibHelper[fibHelper.length - 1] % 2 !== 0) {
sumOddNums += fibHelper[fibHelper.length - 1];
}
nextFib = fibHelper[i - 1] + fibHelper[i];
}
return sumOddNums;
}
/**
* Test Suite
*/
describe('sumOddFibonacciNumbers()', () => {
it('returns sum of all odd Fibonnci numbers', () => {
// arrange
const num = 10;
// act
const result = sumOddFibonacciNumbers(num);
// log
console.log("result 1: ", result);
// assert
expect(result).toBe(10);
});
it('returns sum of all odd Fibonnci numbers 2nd example', () => {
// arrange
const num = 1000;
// act
const result = sumOddFibonacciNumbers(num);
// log
console.log("result 2: ", result);
// assert
expect(result).toBe(1785);
});
});