Skip to content

Commit

Permalink
Updating tests for armstrong-numbers (#2577)
Browse files Browse the repository at this point in the history
* Updating tests for armstrong-numbers

* Implementing BigInt to handle last two test cases

* Updating test file to implement BigInt

* Adding note in the instructions

* Adding exercism note block

* Fixing the CI, hopefully

---------

Co-authored-by: Cool-Katt <[email protected]>
  • Loading branch information
jagdish-15 and Cool-Katt authored Jan 22, 2025
1 parent a3a8df0 commit 6d109d8
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<!-- prettier-ignore-start -->
~~~~exercism/note
Some of the tests might pass a `BigInt` as input.
Ensure that your implementation can handle such cases.
~~~~
<!-- prettier-ignore-end -->
1 change: 1 addition & 0 deletions exercises/practice/armstrong-numbers/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"ankorGH",
"gargrave",
"hayashi-ay",
"jagdish-15",
"ovidiu141",
"SleeplessByte",
"xarxziux"
Expand Down
12 changes: 8 additions & 4 deletions exercises/practice/armstrong-numbers/.meta/proof.ci.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
export const isArmstrongNumber = (input) => {
const digits = [...String(input)];
const bigInput = BigInt(input);

const digits = [...String(bigInput)];

const sum = digits.reduce(
(total, current) => total + current ** digits.length,
0,
(total, current) => total + BigInt(current) ** BigInt(digits.length),
BigInt(0),
);
return sum === input;

return sum === bigInput;
};
35 changes: 24 additions & 11 deletions exercises/practice/armstrong-numbers/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -1,30 +1,43 @@
# This is an auto-generated file. Regular comments will be removed when this
# file is regenerated. Regenerating will not touch any manually added keys,
# so comments can be added in a "comment" key.
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[c1ed103c-258d-45b2-be73-d8c6d9580c7b]
description = "Zero is an Armstrong number"

[579e8f03-9659-4b85-a1a2-d64350f6b17a]
description = "Single digit numbers are Armstrong numbers"
description = "Single-digit numbers are Armstrong numbers"

[2d6db9dc-5bf8-4976-a90b-b2c2b9feba60]
description = "There are no 2 digit Armstrong numbers"
description = "There are no two-digit Armstrong numbers"

[509c087f-e327-4113-a7d2-26a4e9d18283]
description = "Three digit number that is an Armstrong number"
description = "Three-digit number that is an Armstrong number"

[7154547d-c2ce-468d-b214-4cb953b870cf]
description = "Three digit number that is not an Armstrong number"
description = "Three-digit number that is not an Armstrong number"

[6bac5b7b-42e9-4ecb-a8b0-4832229aa103]
description = "Four digit number that is an Armstrong number"
description = "Four-digit number that is an Armstrong number"

[eed4b331-af80-45b5-a80b-19c9ea444b2e]
description = "Four digit number that is not an Armstrong number"
description = "Four-digit number that is not an Armstrong number"

[f971ced7-8d68-4758-aea1-d4194900b864]
description = "Seven digit number that is an Armstrong number"
description = "Seven-digit number that is an Armstrong number"

[7ee45d52-5d35-4fbd-b6f1-5c8cd8a67f18]
description = "Seven digit number that is not an Armstrong number"
description = "Seven-digit number that is not an Armstrong number"

[5ee2fdf8-334e-4a46-bb8d-e5c19c02c148]
description = "Armstrong number containing seven zeroes"

[12ffbf10-307a-434e-b4ad-c925680e1dd4]
description = "The largest and last Armstrong number"
26 changes: 18 additions & 8 deletions exercises/practice/armstrong-numbers/armstrong-numbers.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,45 @@ describe('Armstrong Numbers', () => {
expect(isArmstrongNumber(0)).toEqual(true);
});

xtest('Single digit numbers are Armstrong numbers', () => {
xtest('Single-digit numbers are Armstrong numbers', () => {
expect(isArmstrongNumber(5)).toEqual(true);
});

xtest('There are no 2 digit Armstrong numbers', () => {
xtest('There are no two-digit Armstrong numbers', () => {
expect(isArmstrongNumber(10)).toEqual(false);
});

xtest('Three digit number that is an Armstrong number', () => {
xtest('Three-digit number that is an Armstrong number', () => {
expect(isArmstrongNumber(153)).toEqual(true);
});

xtest('Three digit number that is not an Armstrong number', () => {
xtest('Three-digit number that is not an Armstrong number', () => {
expect(isArmstrongNumber(100)).toEqual(false);
});

xtest('Four digit number that is an Armstrong number', () => {
xtest('Four-digit number that is an Armstrong number', () => {
expect(isArmstrongNumber(9474)).toEqual(true);
});

xtest('Four digit number that is not an Armstrong number', () => {
xtest('Four-digit number that is not an Armstrong number', () => {
expect(isArmstrongNumber(9475)).toEqual(false);
});

xtest('Seven digit number that is an Armstrong number', () => {
xtest('Seven-digit number that is an Armstrong number', () => {
expect(isArmstrongNumber(9926315)).toEqual(true);
});

xtest('Seven digit number that is not an Armstrong number', () => {
xtest('Seven-digit number that is not an Armstrong number', () => {
expect(isArmstrongNumber(9926314)).toEqual(false);
});

xtest('Armstrong number containing seven zeroes', () => {
const bigInput = 186709961001538790100634132976990n;
expect(isArmstrongNumber(bigInput)).toEqual(true);
});

xtest('The largest and last Armstrong number', () => {
const bigInput = 115132219018763992565095597973971522401n;
expect(isArmstrongNumber(bigInput)).toEqual(true);
});
});

0 comments on commit 6d109d8

Please sign in to comment.