diff --git a/exercises/C-variables/exercise.js b/exercises/C-variables/exercise.js index a6bbb9786..7beea3261 100644 --- a/exercises/C-variables/exercise.js +++ b/exercises/C-variables/exercise.js @@ -1,3 +1,5 @@ // Start by creating a variable `greeting` - +var greeting = "Hello world"; +console.log(greeting); +console.log(greeting); console.log(greeting); diff --git a/extra/1-currency-conversion.js b/extra/1-currency-conversion.js index 75b3c6aab..abb26e965 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,9 @@ 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 Number(parseFloat(((price*0.99) * 5.7)).toFixed(2)) +} /* ======= 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..645cfebba 100644 --- a/extra/2-piping.js +++ b/extra/2-piping.js @@ -16,26 +16,26 @@ the final result to the variable goodCode */ -function add() { - +function add(a,b) { + return a + b } -function multiply() { - +function multiply(a,b) { + return parseFloat(a)* parseFloat( b) } -function format() { - +function format(a) { + return `£${a}` } 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 goodCode = format((startingValue + 10) * 2) /* ======= 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/3-magic-8-ball.js b/extra/3-magic-8-ball.js deleted file mode 100644 index 46f65f928..000000000 --- a/extra/3-magic-8-ball.js +++ /dev/null @@ -1,118 +0,0 @@ -/** - - Let's peer into the future using a Magic 8 Ball! - https://en.wikipedia.org/wiki/Magic_8-Ball - - There are a few steps to being able view the future though: - * Ask a question - * Shake the ball - * Get an answer - * Decide if it's positive or negative - - The question can be anything, but the answers are fixed, - and have different levels of positivity or negativity. - - Below are the possible answers: - - ## Very positive - It is certain. - It is decidedly so. - Without a doubt. - Yes - definitely. - You may rely on it. - - ## Positive - As I see it, yes. - Most likely. - Outlook good. - Yes. - Signs point to yes. - - ## Negative - Reply hazy, try again. - Ask again later. - Better not tell you now. - Cannot predict now. - Concentrate and ask again. - - ## Very negative - Don't count on it. - My reply is no. - My sources say no. - Outlook not so good. - Very doubtful. -*/ - -// This should log "The ball has shaken!" -// and return the answer. -function shakeBall() { - //Write your code in here -} - -/* - This function should say whether the answer it is given is - - very positive - - positive - - negative - - very negative - - 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 -} - -/* -================================== -======= 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 3-magic-8-ball` into your terminal -(Reminder: You must have run `npm install` one time before this will work!) -================================== -*/ - -test("whole magic 8 ball sequence", () => { - const consoleLogSpy = jest.spyOn(global.console, "log"); - const answer = shakeBall(); - - expect(typeof answer).toEqual("string"); - - expect(consoleLogSpy).toHaveBeenCalledTimes(1); - expect(consoleLogSpy).toHaveBeenLastCalledWith("The ball has shaken!"); - - expect(checkAnswer(answer)).toBeOneOf([ - "very positive", - "positive", - "negative", - "very negative", - ]); -}); - -test("magic 8 ball returns different values each time", () => { - const seenAnswers = new Set(); - for (let i = 0; i < 10; ++i) { - seenAnswers.add(shakeBall()); - } - if (seenAnswers.size < 2) { - throw Error( - "Expected to get different random answers each time shakeBall was called, but always got the same one" - ); - } - - let seenPositivities = new Set(Array.from(seenAnswers.values()).map(checkAnswer)); - if (seenPositivities.size < 2) { - throw Error( - "Expected to random answers with different positivities each time shakeBall was called, but always got the same one" - ); - } -}); - -test("checkAnswer works for `It is decidedly so.`", () => { - expect(checkAnswer("It is decidedly so.")).toEqual("very positive"); -}); - -test("checkAnswer works for `My reply is no.`", () => { - expect(checkAnswer("My reply is no.")).toEqual("very negative"); -}); diff --git a/mandatory/1-syntax-errors.js b/mandatory/1-syntax-errors.js index a10cc9ac2..4cddf937e 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 " + name "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; + total = a + b; - return "The total is total"; + return "The total is " + total; } /* diff --git a/mandatory/2-logic-error.js b/mandatory/2-logic-error.js index 9cca7603b..ccd4d71fa 100644 --- a/mandatory/2-logic-error.js +++ b/mandatory/2-logic-error.js @@ -1,16 +1,16 @@ // The syntax for this function is valid but it has an error, find it and fix it. 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; + let result = a * b * c; + return result; } /* diff --git a/mandatory/3-function-output.js b/mandatory/3-function-output.js index 5a953ba60..d0147b9ac 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! +// Get random number and multiply it by 10 function getRandomNumber() { return Math.random() * 10; } // Add comments to explain what this function does. You're meant to use Google! +// concatenate two words 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..6362355bf 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(product) { + return product * 1.2 +} /* CURRENCY FORMATTING @@ -17,7 +19,10 @@ function calculateSalesTax() {} Remember that the prices must include the sales tax (hint: you already wrote a function for this!) */ -function addTaxAndFormatCurrency() {} +function addTaxAndFormatCurrency(product) { + let result = ((product * 1.2).toFixed(2)).toString(); + return `£${result}` +} /* =================================================== diff --git a/package.json b/package.json index 93e0861e3..9e7f2ffeb 100644 --- a/package.json +++ b/package.json @@ -14,15 +14,21 @@ "url": "https://github.com/CodeYourFuture/JavaScript-Core-1-Coursework-Week1/issues" }, "jest": { - "setupFilesAfterEnv": ["jest-extended"], + "setupFilesAfterEnv": [ + "jest-extended" + ], "projects": [ { "displayName": "mandatory", - "testMatch": ["/mandatory/*.js"] + "testMatch": [ + "/mandatory/*.js" + ] }, { "displayName": "extra", - "testMatch": ["/extra/*.js"] + "testMatch": [ + "/extra/*.js" + ] } ] },