function sumOddFibonacciNumbers(num) {
let firstNum = 1;
let secondNum = 1;
//edge case
if(num === 1) return 2;
let fibonacciNumbers = [];
fibonacciNumbers.push(firstNum);
fibonacciNumbers.push(secondNum);
for(let i = 2; i < num; i++) {
let nextNum = firstNum + secondNum;
//if next number in sequence is greater than
//num, break the loop
if(nextNum > num) break;
if(nextNum % 2 !== 0) {
fibonacciNumbers.push(nextNum);
}
firstNum = secondNum;
secondNum = nextNum;
}
let sum = fibonacciNumbers.reduce((acc, val) => {
return acc + val;
}, 0)
return sum;
}
/**
* 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);
});
});