Skip to content

Commit ba306aa

Browse files
HD-40307gHD-40307g
HD-40307g
authored and
HD-40307g
committed
rewrite LuhnAlgorithm.test.js to be Jest-compatible describe/test/it block
1 parent 52cf1cd commit ba306aa

File tree

1 file changed

+58
-69
lines changed

1 file changed

+58
-69
lines changed

Diff for: Maths/test/LuhnAlgorithm.test.js

+58-69
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,61 @@
11
// Import the functions to be tested
22
import { validateCred, findInvalidCards, idInvalidCardCompanies } from '../LuhnAlgorithm.js';
3-
43
// Import credit card numbers to be tested
5-
import { valid1, valid2, valid4, valid3, valid5, invalid1, invalid2, invalid3, invalid4, invalid5, batch} from '../LuhnAlgorithm.js'
6-
7-
// Test suite for credit card validation
8-
9-
//Test validateCred function
10-
function testValidateCred() {
11-
console.log('Running tests for validateCred...');
12-
13-
// Valid test cases
14-
if (![valid1, valid2, valid3, valid4, valid5].every(card => validateCred(card))) {
15-
console.error('FAILED: validateCred should return true for all valid cards');
16-
}
17-
if ([invalid1, invalid2, invalid3, invalid4, invalid5].some(card => validateCred(card))) {
18-
console.error('FAILED: validateCred should return false for all invalid cards');
19-
} else {
20-
console.log('PASSED: Valid card test');
21-
};
22-
23-
// Invalid test cases
24-
if (validateCred(invalid1 || invalid2 || invalid3 || invalid4 || invalid5)) {
25-
console.error('FAILED: validateCred should return false for invalid cards');
26-
} else {
27-
console.log('PASSED: Invalid card test');
28-
}
29-
};
30-
31-
//Test findInvalidCards function
32-
function testFindInvalidCards(batch) {
33-
console.log('Running tests for findInvalidCards...');
34-
const invalidCards = findInvalidCards(batch);
35-
36-
// Check if the result only contains invalid cards
37-
const allInvalid = invalidCards.every(card => !validateCred(card));
38-
39-
if (!allInvalid) {
40-
console.error('FAILED: findInvalidCards should return only invalid cards');
41-
} else {
42-
console.log('PASSED: Find invalid cards test');
43-
}
44-
};
45-
46-
// Test idInvalidCardCompanies function
47-
function testIdInvalidCardCompanies() {
48-
console.log('Running tests for idInvalidCardCompanies...');
49-
const companies = idInvalidCardCompanies(batch);
50-
51-
if (!companies.includes('Visa') || !companies.includes('Mastercard') || !companies.includes('Amex') || !companies.includes('Discover')) {
52-
console.error('FAILED: idInvalidCardCompanies should include all expected companies');
53-
} else if (companies.includes('Unknown')) {
54-
console.error('FAILED: idInvalidCardCompanies should not include unrecognized prefixes');
55-
} else {
56-
console.log('PASSED: Identify invalid card companies test');
57-
}
58-
};
59-
60-
//Run all tests
61-
function runAllTests() {
62-
console.log('Starting test suite...');
63-
testValidateCred();
64-
testFindInvalidCards(batch);
65-
testIdInvalidCardCompanies();
66-
console.log('Testing edge cases...');
67-
console.assert(findInvalidCards([[]]).length === 0, 'FAILED: findInvalidCards should handle empty arrays');
68-
console.log('All tests completed.');
69-
};
70-
71-
// Run the test suite
72-
runAllTests();
4+
import { valid1, valid2, valid3, valid4, valid5, invalid1, invalid2, invalid3, invalid4, invalid5, batch } from '../LuhnAlgorithm.js';
5+
6+
describe('Luhn Algorithm Tests', () => {
7+
// Test for validateCred function
8+
describe('validateCred', () => {
9+
test('should return true for valid credit cards', () => {
10+
const validCards = [valid1, valid2, valid3, valid4, valid5];
11+
validCards.forEach(card => {
12+
expect(validateCred(card)).toBe(true);
13+
});
14+
});
15+
16+
test('should return false for invalid credit cards', () => {
17+
const invalidCards = [invalid1, invalid2, invalid3, invalid4, invalid5];
18+
invalidCards.forEach(card => {
19+
expect(validateCred(card)).toBe(false);
20+
});
21+
});
22+
});
23+
24+
// Test for findInvalidCards function
25+
describe('findInvalidCards', () => {
26+
test('should return only invalid credit cards from a batch', () => {
27+
const invalidCards = findInvalidCards(batch);
28+
const allInvalid = invalidCards.every(card => !validateCred(card));
29+
expect(allInvalid).toBe(true);
30+
});
31+
32+
test('should return an empty array if no invalid cards are found', () => {
33+
const validCards = [valid1, valid2, valid3, valid4, valid5];
34+
const invalidCards = findInvalidCards(validCards);
35+
expect(invalidCards).toEqual([]);
36+
});
37+
});
38+
39+
// Test for idInvalidCardCompanies function
40+
describe('idInvalidCardCompanies', () => {
41+
test('should identify all companies that issued invalid cards', () => {
42+
const invalidCards = findInvalidCards(batch);
43+
const companies = idInvalidCardCompanies(invalidCards);
44+
45+
// Expect the companies array to include known companies
46+
expect(companies).toEqual(expect.arrayContaining(['Visa', 'Mastercard', 'Amex', 'Discover']));
47+
});
48+
49+
test('should return an empty array if no invalid cards are found', () => {
50+
const validCards = [valid1, valid2, valid3, valid4, valid5];
51+
const companies = idInvalidCardCompanies(validCards);
52+
expect(companies).toEqual([]);
53+
});
54+
55+
test('should handle unknown card companies gracefully', () => {
56+
const unknownCard = [9, 3, 1, 8, 2, 0, 7, 4, 5, 6, 7, 8, 9];
57+
const companies = idInvalidCardCompanies([unknownCard]);
58+
expect(companies).not.toContain('Unknown');
59+
});
60+
});
61+
});

0 commit comments

Comments
 (0)