diff --git a/02_repeatString/repeatString.js b/02_repeatString/repeatString.js index 4359bbe..55fe9b6 100644 --- a/02_repeatString/repeatString.js +++ b/02_repeatString/repeatString.js @@ -1,5 +1,15 @@ -const repeatString = function() { +const repeatString = function (string, times) { + if (times < 0) { + return 'ERROR' + } + let result = '' + + for (let i = 0; i < times; i++) { + result += string + } + + return result }; // Do not edit below this line diff --git a/02_repeatString/repeatString.spec.js b/02_repeatString/repeatString.spec.js index 912ac20..37e6228 100644 --- a/02_repeatString/repeatString.spec.js +++ b/02_repeatString/repeatString.spec.js @@ -1,37 +1,41 @@ const repeatString = require('./repeatString') describe('repeatString', () => { - test('repeats the string', () => { - expect(repeatString('hey', 3)).toEqual('heyheyhey'); - }); - test.skip('repeats the string many times', () => { - expect(repeatString('hey', 10)).toEqual('heyheyheyheyheyheyheyheyheyhey'); - }); - test.skip('repeats the string 1 times', () => { - expect(repeatString('hey', 1)).toEqual('hey'); - }); - test.skip('repeats the string 0 times', () => { - expect(repeatString('hey', 0)).toEqual(''); - }); - test.skip('returns ERROR with negative numbers', () => { - expect(repeatString('hey', -1)).toEqual('ERROR'); - }); - test.skip('repeats the string a random amount of times', function () { - /*The number is generated by using Math.random to get a value from between - 0 to 1, when this is multiplied by 1000 and rounded down with Math.floor it - equals a number between 0 to 999 (this number will change everytime you run - the test).*/ + test('repeats the string', () => { + expect(repeatString('hey', 3)).toEqual('heyheyhey'); + }); + test('repeats the string many times', () => { + expect(repeatString('hey', 10)).toEqual('heyheyheyheyheyheyheyheyheyhey'); + }); + test('repeats the string 1 times', () => { + expect(repeatString('hey', 1)).toEqual('hey'); + }); + test('repeats the string 0 times', () => { + expect(repeatString('hey', 0)).toEqual(''); + }); + test('returns ERROR with negative numbers', () => { + expect(repeatString('hey', -1)).toEqual('ERROR'); + }); + // noinspection SpellCheckingInspection,GrazieInspection + test('repeats the string a random amount of times', function () { + /*The number is generated by using Math.random to get a value from + between 0 and 1, when this is multiplied by 1000 and rounded down with + Math.floor it equals a number between 0 and 999 (this number will change + everytime you run the test).*/ - // DO NOT use Math.floor(Math.random() * 1000) in your code, - // this test generates a random number, then passes it into your code with a function parameter. - // If this doesn't make sense, you should go read about functions here: https://www.theodinproject.com/paths/foundations/courses/foundations/lessons/fundamentals-part-3 - const number = Math.floor(Math.random() * 1000) - /*The .match(/((hey))/g).length is a regex that will count the number of heys - in the result, which if your function works correctly will equal the number that - was randomly generated. */ - expect(repeatString('hey', number).match(/((hey))/g).length).toEqual(number); - }); - test.skip('works with blank strings', () => { - expect(repeatString('', 10)).toEqual(''); - }); + // DO NOT use Math.floor(Math.random() * 1000) in your code, + // this test generates a random number, then passes it into your code + // with a function parameter. + // If this doesn't make sense, you should go read about functions here: + // https://www.theodinproject.com/paths/foundations/courses/foundations/lessons/fundamentals-part-3 + const number = Math.floor(Math.random() * 1000) + /*The .match(/((hey))/g).length is a regex that will count the number of + heys in the result, which if your function works correctly will equal + the number that was randomly generated. */ + expect(repeatString('hey', number).match(/(hey)/g).length) + .toEqual(number); + }); + test('works with blank strings', () => { + expect(repeatString('', 10)).toEqual(''); + }); });