-
-
Notifications
You must be signed in to change notification settings - Fork 283
Birmingham | ITP Jan 2026 | Arunkumar Akilan | Sprint 2 | Data Groups #1027
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
arunkumarakilan
wants to merge
6
commits into
CodeYourFuture:main
from
arunkumarakilan:coursework/sprint2-clean
Closed
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
2baf830
feat: clean Sprint-2 implementation and tests
arunkumarakilan a149a4c
style: format Sprint-2 with Prettier
arunkumarakilan 900dfb7
refactor: improve invert readability by using [key, value] destructuring
arunkumarakilan cc25f2c
Merge branch 'main' into coursework/sprint2-clean
arunkumarakilan 3fee122
feat: complete tally implementation and handle special keys like toSt…
arunkumarakilan 5930937
test: add edge case tests for parseQueryString and handle invalid que…
arunkumarakilan File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,14 @@ | ||
| function contains() {} | ||
| function contains(object, propertyName) { | ||
| if (typeof object !== "object" || Array.isArray(object) || object === null) { | ||
| throw new Error("It is a invalid object"); | ||
| } | ||
| const newArray = Object.keys(object); | ||
| for (let item of newArray) { | ||
| if (item === propertyName) { | ||
| return true; | ||
| } | ||
| } | ||
| return false; | ||
| } | ||
|
|
||
| module.exports = contains; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,11 @@ | ||
| function createLookup() { | ||
| // implementation here | ||
| function createLookup(countryCurrencyPairs) { | ||
| const countryCurrencyLookup = {}; | ||
|
|
||
| for (let item of countryCurrencyPairs) { | ||
| const [key, value] = [item[0], item[1]]; | ||
| countryCurrencyLookup[key] = value; | ||
| } | ||
| return countryCurrencyLookup; | ||
| } | ||
|
|
||
| module.exports = createLookup; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,15 @@ | ||
| function tally() {} | ||
| function tally(arr) { | ||
| const object = Object.create(null); | ||
| if (!Array.isArray(arr)) { | ||
| throw new Error("Invalid input: tally expects an array"); | ||
| } | ||
| if (arr.length === 0) { | ||
| return object; | ||
| } | ||
| arr.forEach((ele) => { | ||
| object[ele] = (object[ele] || 0) + 1; | ||
| }); | ||
| return object; | ||
| } | ||
|
|
||
| module.exports = tally; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| const invert = require("./invert"); | ||
|
|
||
| test("returns an object with the key and value swapped when given a single key-value pair", () => { | ||
| expect(invert({ a: 1 })).toEqual({ 1: "a" }); | ||
| }); | ||
|
|
||
| test("returns an object with all keys and values swapped for multiple key-value pairs", () => { | ||
| expect(invert({ a: 1, b: 2 })).toEqual({ 1: "a", 2: "b" }); | ||
| }); |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Array is also an object where it indexes are its keys.
Object.hasOwn([1, 2, 3], "a")evaluates tofalsebecause"a"is not a key (index) of the array.However,
Object.hasOwn([1, 2, 3], "0")evaluates totruebecause"0"is a key (index) of the array.To test if the implemented function can correctly return
falsewhen the first argument is an array,we should specify an actual key of the array.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the clarification!
I understand that arrays are objects and that
Object.hasOwn([1, 2, 3], "0") returns true because "0" is a valid index.
However, in my implementation I explicitly treat arrays as invalid inputs:
if (typeof object !== "object" || Array.isArray(object) || object === null)
So the function throws an error before reaching Object.keys().
That’s why the test passes — it never evaluates array indexes like "0".
I’ll update either the test or the implementation depending on the expected behaviour
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not about your function, it is correctly implemented.
In practice, we prepare tests not just to check our implementation, but also to serve as a guard for future modification. In TDD, the tests will also serve as the spec that define how the function should be implemented.
That's why I keep emphasising the importance of preparing the tests correctly.