parent
4d1f419b41
commit
829730fb79
|
@ -0,0 +1,3 @@
|
|||
The goal of this exercise is to introduce you to the concept of objects and classes. These are fundamental building blocks for OOP (Object Oriented Programming). You shouldn't need to write a ton of new code, in fact you can re-use your solution from the Simon Says exercise!
|
||||
|
||||
The key here will be rewriting certain bits of it to work within the class given to you.
|
|
@ -0,0 +1,8 @@
|
|||
class bookTitle {
|
||||
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
bookTitle
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
var bookTitles = require ('./bookTitles.js');
|
||||
|
||||
describe('bookTitle', function() {
|
||||
|
||||
var book; // note the scope here, if you declare this inside beforeEach then the scope won't allow it to access the other specs
|
||||
|
||||
beforeEach(function() {
|
||||
book = new bookTitles.bookTitle(); // creates a new book instance before each test is run
|
||||
});
|
||||
|
||||
describe('title', function() {
|
||||
|
||||
it('should capitalize the first letter', function() {
|
||||
book.title = 'inferno';
|
||||
expect(book.title).toEqual('Inferno');
|
||||
});
|
||||
|
||||
it('should capitalize every word', function() {
|
||||
book.title = 'stuart little';
|
||||
expect(book.title).toEqual('Stuart Little');
|
||||
});
|
||||
|
||||
describe('should capitalize every word except...', function() {
|
||||
describe('articles', function() {
|
||||
it('does not capitalize "the"', function() {
|
||||
book.title = 'alexander the great';
|
||||
expect(book.title).toEqual('Alexander the Great');
|
||||
});
|
||||
|
||||
it('does not capitalize "a"', function() {
|
||||
book.title = 'to kill a mockingbird';
|
||||
expect(book.title).toEqual('To Kill a Mockingbird');
|
||||
});
|
||||
|
||||
it('does not capitalize "an"', function() {
|
||||
book.title = 'to eat an apple a day';
|
||||
expect(book.title).toEqual('To Eat an Apple a Day');
|
||||
});
|
||||
});
|
||||
|
||||
it('conjunctions', function() {
|
||||
book.title = 'war and peace';
|
||||
expect(book.title).toEqual('War and Peace');
|
||||
});
|
||||
|
||||
it('prepositions', function() {
|
||||
book.title = 'love in the time of cholera';
|
||||
expect(book.title).toEqual('Love in the Time of Cholera');
|
||||
});
|
||||
});
|
||||
|
||||
describe('should always capitalize...', function() {
|
||||
it('I', function() {
|
||||
book.title = 'what i wish i knew when i was 20';
|
||||
expect(book.title).toEqual('What I Wish I Knew When I Was 20');
|
||||
});
|
||||
|
||||
it('the first word', function() {
|
||||
book.title = 'the man in the iron mask';
|
||||
expect(book.title).toEqual('The Man in the Iron Mask');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,5 +1,5 @@
|
|||
var helloWorld = function() {
|
||||
return 'Hello, World!'
|
||||
return ''
|
||||
}
|
||||
|
||||
module.exports = helloWorld
|
||||
module.exports = helloWorld
|
|
@ -1,8 +1,5 @@
|
|||
var leapYears = function(year) {
|
||||
if (year % 4 !== 0 || (year % 100 == 0 && year % 400 != 0)) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
var leapYears = function() {
|
||||
|
||||
}
|
||||
|
||||
module.exports = leapYears
|
||||
|
|
|
@ -4,19 +4,19 @@ describe('leapYears', function() {
|
|||
it('works with non century years', function() {
|
||||
expect(leapYears(1996)).toEqual(true);
|
||||
});
|
||||
it('works with non century years', function() {
|
||||
xit('works with non century years', function() {
|
||||
expect(leapYears(1997)).toEqual(false);
|
||||
});
|
||||
it('works with ridiculously futuristic non century years', function() {
|
||||
xit('works with ridiculously futuristic non century years', function() {
|
||||
expect(leapYears(34992)).toEqual(true);
|
||||
});
|
||||
it('works with century years', function() {
|
||||
xit('works with century years', function() {
|
||||
expect(leapYears(1900)).toEqual(false);
|
||||
});
|
||||
it('works with century years', function() {
|
||||
xit('works with century years', function() {
|
||||
expect(leapYears(1600)).toEqual(true);
|
||||
});
|
||||
it('works with century years', function() {
|
||||
xit('works with century years', function() {
|
||||
expect(leapYears(700)).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
var removeFromArray = function(array) {
|
||||
elementsToRemove = [...arguments]
|
||||
elementsToRemove.splice(0,1)
|
||||
elementsToRemove.forEach(element => {
|
||||
let index = array.indexOf(element)
|
||||
if (index > -1) {
|
||||
array.splice(index, 1)
|
||||
}
|
||||
})
|
||||
return array
|
||||
var removeFromArray = function() {
|
||||
|
||||
}
|
||||
|
||||
module.exports = removeFromArray
|
||||
|
|
|
@ -4,19 +4,19 @@ describe('removeFromArray', function() {
|
|||
it('removes a single value', function() {
|
||||
expect(removeFromArray([1, 2, 3, 4], 3)).toEqual([1, 2, 4]);
|
||||
});
|
||||
it('removes multiple values', function() {
|
||||
xit('removes multiple values', function() {
|
||||
expect(removeFromArray([1, 2, 3, 4], 3, 2)).toEqual([1, 4]);
|
||||
});
|
||||
it('ignores non present values', function() {
|
||||
xit('ignores non present values', function() {
|
||||
expect(removeFromArray([1, 2, 3, 4], 7, "tacos")).toEqual([1, 2, 3, 4]);
|
||||
});
|
||||
it('ignores non present values, but still works', function() {
|
||||
xit('ignores non present values, but still works', function() {
|
||||
expect(removeFromArray([1, 2, 3, 4], 7, 2)).toEqual([1, 3, 4]);
|
||||
});
|
||||
it('can remove all values', function() {
|
||||
xit('can remove all values', function() {
|
||||
expect(removeFromArray([1, 2, 3, 4], 1, 2, 3, 4)).toEqual([]);
|
||||
});
|
||||
it('works with strings', function() {
|
||||
xit('works with strings', function() {
|
||||
expect(removeFromArray(["hey", 2, 3, "ho"], "hey", 3)).toEqual([2, "ho"]);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Exercis 02 - repeatString
|
||||
# Exercise 02 - repeatString
|
||||
|
||||
Write a function that simply repeats the string a given number of times:
|
||||
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
var repeatString = function(string, num) {
|
||||
if (num < 0) return 'ERROR'
|
||||
let returnValue = ''
|
||||
for(let i = 0; i < num; i++) {
|
||||
returnValue = returnValue + string
|
||||
}
|
||||
return returnValue
|
||||
var repeatString = function() {
|
||||
|
||||
}
|
||||
|
||||
module.exports = repeatString
|
||||
|
|
|
@ -4,16 +4,16 @@ describe('repeatString', function() {
|
|||
it('repeats the string', function() {
|
||||
expect(repeatString('hey', 3)).toEqual('heyheyhey');
|
||||
});
|
||||
it('repeats the string many times', function() {
|
||||
xit('repeats the string many times', function() {
|
||||
expect(repeatString('hey', 10)).toEqual('heyheyheyheyheyheyheyheyheyhey');
|
||||
});
|
||||
it('repeats the string 1 times', function() {
|
||||
xit('repeats the string 1 times', function() {
|
||||
expect(repeatString('hey', 1)).toEqual('hey');
|
||||
});
|
||||
it('repeats the string 0 times', function() {
|
||||
xit('repeats the string 0 times', function() {
|
||||
expect(repeatString('hey', 0)).toEqual('');
|
||||
});
|
||||
it('returns ERROR with negative numbers', function() {
|
||||
xit('returns ERROR with negative numbers', function() {
|
||||
expect(repeatString('hey', -1)).toEqual('ERROR');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
var reverseString = function(string) {
|
||||
return string.split('').reverse().join('')
|
||||
var reverseString = function() {
|
||||
|
||||
}
|
||||
|
||||
module.exports = reverseString
|
||||
module.exports = reverseString
|
|
@ -5,11 +5,11 @@ describe('Hello World', function() {
|
|||
expect(reverseString('hello')).toEqual('olleh');
|
||||
});
|
||||
|
||||
it('reverses multiple words', function() {
|
||||
xit('reverses multiple words', function() {
|
||||
expect(reverseString('hello there')).toEqual('ereht olleh')
|
||||
})
|
||||
|
||||
it('works with numbers and punctuation', function() {
|
||||
xit('works with numbers and punctuation', function() {
|
||||
expect(reverseString('123! abc!')).toEqual('!cba !321')
|
||||
})
|
||||
});
|
||||
});
|
|
@ -1,20 +1,5 @@
|
|||
var sumAll = function(a, b) {
|
||||
if (a > b) {
|
||||
let temp = a
|
||||
a = b
|
||||
b = temp
|
||||
}
|
||||
if (
|
||||
a < 0 || b < 0 ||
|
||||
typeof a != 'number' || typeof b != 'number'
|
||||
) {
|
||||
return 'ERROR'
|
||||
}
|
||||
let sum = 0
|
||||
for(let i = a; i < b + 1; i++) {
|
||||
sum += i
|
||||
}
|
||||
return sum
|
||||
var sumAll = function() {
|
||||
|
||||
}
|
||||
|
||||
module.exports = sumAll
|
||||
|
|
|
@ -4,19 +4,19 @@ describe('sumAll', function() {
|
|||
it('sums numbers within the range', function() {
|
||||
expect(sumAll(1, 4)).toEqual(10);
|
||||
});
|
||||
it('works with large numbers', function() {
|
||||
xit('works with large numbers', function() {
|
||||
expect(sumAll(1, 4000)).toEqual(8002000);
|
||||
});
|
||||
it('works with larger number first', function() {
|
||||
xit('works with larger number first', function() {
|
||||
expect(sumAll(123, 1)).toEqual(7626);
|
||||
});
|
||||
it('returns ERROR with negative numbers', function() {
|
||||
xit('returns ERROR with negative numbers', function() {
|
||||
expect(sumAll(-10, 4)).toEqual('ERROR');
|
||||
});
|
||||
it('returns ERROR with non-number parameters', function() {
|
||||
xit('returns ERROR with non-number parameters', function() {
|
||||
expect(sumAll(10, "90")).toEqual('ERROR');
|
||||
});
|
||||
it('returns ERROR with non-number parameters', function() {
|
||||
xit('returns ERROR with non-number parameters', function() {
|
||||
expect(sumAll(10, [90, 1])).toEqual('ERROR');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
The goal of this exercise is for you to create a timer. The timer will operate with the following format:
|
||||
|
||||
00:00:00
|
||||
|
||||
You will be given an object with the value of seconds already added. Your job is to use the class to add a string containing the timer result to this original object.
|
||||
|
||||
Example:
|
||||
|
||||
12 seconds given
|
||||
|
||||
00:00:12 should be the output
|
|
@ -0,0 +1,7 @@
|
|||
class timeFormat {
|
||||
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
timeFormat
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
var Timer = require ('./timer.js');
|
||||
|
||||
describe('Timer', function() {
|
||||
var timer; // undefined, here for scope purposes
|
||||
|
||||
beforeEach(function () {
|
||||
timer = new Timer.timeFormat();
|
||||
});
|
||||
|
||||
it('should initialize to 0 seconds', function() {
|
||||
expect(timer.seconds).toEqual(0); // makes sure timer starts with 0 seconds
|
||||
});
|
||||
|
||||
describe('time_string', function() {
|
||||
it('should display 0 seconds as 00:00:00', function() {
|
||||
timer.seconds = 0;
|
||||
expect(timer.time_string()).toEqual("00:00:00");
|
||||
});
|
||||
|
||||
it('should display 12 seconds as 00:00:12', function() {
|
||||
timer.seconds = 12;
|
||||
expect(timer.time_string()).toEqual("00:00:12");
|
||||
});
|
||||
|
||||
it('should display 66 seconds as 00:01:06', function() {
|
||||
timer.seconds = 66;
|
||||
expect(timer.time_string()).toEqual("00:01:06");
|
||||
});
|
||||
|
||||
it('should display 4000 seconds as 01:06:40', function() {
|
||||
timer.seconds = 4000;
|
||||
expect(timer.time_string()).toEqual("01:06:40");
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue