diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..0e1d7f82b 100644 --- a/extra/1-currency-conversion.js +++ b/extra/1-currency-conversion.js @@ -5,7 +5,9 @@ Write a function that converts a price to USD (exchange rate is 1.4 $ to £) */ -function convertToUSD() {} +function convertToUSD(price) { + return price * 1.4; +} /* CURRENCY CONVERSION @@ -15,7 +17,10 @@ function convertToUSD() {} They have also decided that they should add a 1% fee to all foreign transactions, which means you only convert 99% of the £ to BRL. */ -function convertToBRL() {} +function convertToBRL(price) { + return Math.round((price * 0.99) * 5.7 * 100) / 100; + +} /* ======= TESTS - DO NOT MODIFY ===== There are some Tests in this file that will help you work out if your code is working. diff --git a/extra/2-piping.js b/extra/2-piping.js index b4f8c4c1b..8d1bc1604 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -16,37 +16,42 @@ the final result to the variable goodCode */ -function add() { - +function add(number1, number2) { + return number1 + number2; } -function multiply() { +function multiply(number1, number2) { + return number1 * number2; } -function format() { +function format(number) { + return `£${number}`; } const startingValue = 2; + // Why can this code be seen as bad practice? Comment your answer. -let badCode = +let badCode = format(multiply(add(startingValue, 10), 2)); /* BETTER PRACTICE */ -let goodCode = +let addedNumbers = add(startingValue, 10); +let multiplyedNumbers = multiply(addedNumbers, 2); +let goodCode = format(multiplyedNumbers); -/* ======= TESTS - DO NOT MODIFY ===== -There are some Tests in this file that will help you work out if your code is working. + /* ======= TESTS - DO NOT MODIFY ===== + There are some Tests in this file that will help you work out if your code is working. -To run the tests for just this one file, type `npm test -- --testPathPattern 2-piping` into your terminal -(Reminder: You must have run `npm install` one time before this will work!) -*/ + To run the tests for just this one file, type `npm test -- --testPathPattern 2-piping` into your terminal + (Reminder: You must have run `npm install` one time before this will work!) + */ -test("add function - case 1 works", () => { - expect(add(1, 3)).toEqual(4); -}); + test("add function - case 1 works", () => { + expect(add(1, 3)).toEqual(4); + }); test("add function - case 2 works", () => { expect(add(2.4, 5)).toEqual(7.4); @@ -70,4 +75,4 @@ test("badCode variable correctly assigned", () => { test("goodCode variable correctly assigned", () => { expect(goodCode).toEqual("£24"); -}); +}); \ No newline at end of file diff --git a/extra/3-magic-8-ball.js b/extra/3-magic-8-ball.js index 46f65f928..37630c06b 100644 --- a/extra/3-magic-8-ball.js +++ b/extra/3-magic-8-ball.js @@ -45,10 +45,37 @@ // This should log "The ball has shaken!" // and return the answer. +const magicBallAnswers = [ + "It is certain.", + "It is decidedly so.", + "Without a doubt.", + "Yes - definitely.", + "You may rely on it.", + "As I see it, yes.", + "Most likely.", + "Outlook good.", + "Yes.", + "Signs point to yes.", + "Reply hazy, try again.", + "Ask again later.", + "Better not tell you now.", + "Cannot predict now.", + "Concentrate and ask again.", + "Don 't count on it.", + "My reply is no.", + "My sources say no.", + "Outlook not so good.", + "Very doubtful." +] + function shakeBall() { - //Write your code in here + console.log("The ball has shaken!"); + let randomNumber = Math.ceil(Math.random() * 19); + return magicBallAnswers[randomNumber]; } +const answer = shakeBall(); + /* This function should say whether the answer it is given is - very positive @@ -58,8 +85,23 @@ function shakeBall() { This function should expect to be called with any value which was returned by the shakeBall function. */ + + function checkAnswer(answer) { - //Write your code in here + let result = ''; + const number = magicBallAnswers.indexOf(answer); + if (number >= 0 && number < 5) { + result = 'very positive'; + } else if (number >= 5 && number < 10) { + result = 'positive'; + } else if (number >= 10 && number < 15) { + result = 'negative'; + } else { + result = 'very negative'; + } + + return result; + } /* @@ -115,4 +157,4 @@ test("checkAnswer works for `It is decidedly so.`", () => { test("checkAnswer works for `My reply is no.`", () => { expect(checkAnswer("My reply is no.")).toEqual("very negative"); -}); +}); \ No newline at end of file diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index d9e004465..dda84c3e5 100644 --- a/mandatory/1-syntax-errors.js +++ b/mandatory/1-syntax-errors.js @@ -1,16 +1,16 @@ // There are syntax errors in this code - can you fix it to pass the tests? -function addNumbers(a b c) { +function addNumbers(a, b, c) { return a + b + c; } -function introduceMe(name, age) - return `Hello, my {name}` is "and I am $age years old`; +function introduceMe(name, age) { + return `Hello, my name is ${name} and I am ${age} years old`; +} function getTotal(a, b) { - total = a ++ b; - - return "The total is total"; + total = a + b; + return `The total is ${total}`; } /* diff --git a/mandatory/2-logic-error.js b/mandatory/2-logic-error.js index 9eb8c8cd7..85b4adff0 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,15 @@ // The syntax for these functions is valid but there are some errors, find them and fix them function trimWord(word) { - return wordtrim(); + return word.trim(); } function getStringLength(word) { - return "word".length(); + return word.length; } function multiply(a, b, c) { - a * b * c; - return; + return a * b * c; } /* diff --git a/mandatory/3-function-output.js b/mandatory/3-function-output.js index 5a953ba60..7784a71b3 100644 --- a/mandatory/3-function-output.js +++ b/mandatory/3-function-output.js @@ -1,9 +1,11 @@ // Add comments to explain what this function does. You're meant to use Google! +// This function is meant to return a random number between 0 and 9.9999 function getRandomNumber() { return Math.random() * 10; } // Add comments to explain what this function does. You're meant to use Google! +//This function is meant to join two strings togeather and return it as a new string. function combine2Words(word1, word2) { return word1.concat(word2); } @@ -11,6 +13,7 @@ function combine2Words(word1, word2) { function concatenate(firstWord, secondWord, thirdWord) { // Write the body of this function to concatenate three words together. // Look at the test case below to understand what this function is expected to return. + return `${firstWord} ${secondWord} ${thirdWord}` } /* diff --git a/mandatory/4-tax.js b/mandatory/4-tax.js index ba77c7ae2..e498c12b5 100644 --- a/mandatory/4-tax.js +++ b/mandatory/4-tax.js @@ -5,7 +5,9 @@ Sales tax is 20% of the price of the product. */ -function calculateSalesTax() {} +function calculateSalesTax(price) { + return price * 1.20; +} /* CURRENCY FORMATTING @@ -17,7 +19,15 @@ function calculateSalesTax() {} Remember that the prices must include the sales tax (hint: you already wrote a function for this!) */ -function addTaxAndFormatCurrency() {} +function addTaxAndFormatCurrency(price) { + const priceWithTax = calculateSalesTax(price).toFixed(2); + return `£${priceWithTax}`; + +} + + + + /* =================================================== @@ -52,4 +62,4 @@ test("addTaxAndFormatCurrency for £17.50", () => { test("addTaxAndFormatCurrency for £34", () => { expect(addTaxAndFormatCurrency(34)).toEqual("£40.80"); -}); +}); \ No newline at end of file