Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2534858

Browse files
chore: Merge pull request #737 from charliejmoore/comb-sort-tests
Comb sort tests
2 parents 7af7a1f + 9fb6884 commit 2534858

File tree

2 files changed

+76
-11
lines changed

2 files changed

+76
-11
lines changed

‎Sorts/CombSort.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@
1616
* Wikipedia: https://en.wikipedia.org/wiki/Comb_sort
1717
*/
1818

19+
/**
20+
* combSort returns an array of numbers sorted in increasing order.
21+
*
22+
* @param {number[]} list The array of numbers to sort.
23+
* @return {number[]} The array of numbers sorted in increasing order.
24+
*/
1925
function combSort (list) {
2026
if (list.length === 0) {
2127
return list
@@ -43,14 +49,4 @@ function combSort (list) {
4349
return list
4450
}
4551

46-
/**
47-
* Implementation of Comb Sort
48-
*/
49-
const array = [5, 6, 7, 8, 1, 2, 12, 14]
50-
// Before Sort
51-
console.log('\n- Before Sort | Implementation of Comb Sort -')
52-
console.log(array)
53-
// After Sort
54-
console.log('- After Sort | Implementation of Comb Sort -')
55-
console.log(combSort(array))
56-
console.log('\n')
52+
export { combSort }

‎Sorts/test/CombSort.test.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { combSort } from '../CombSort'
2+
3+
describe('combSort function', () => {
4+
it('should correctly sort an input list that is sorted backwards', () => {
5+
const array = [5, 4, 3, 2, 1]
6+
expect(combSort(array)).toEqual([1, 2, 3, 4, 5])
7+
})
8+
9+
it('should correctly sort an input list that is unsorted', () => {
10+
const array = [15, 24, 3, 2224, 1]
11+
expect(combSort(array)).toEqual([1, 3, 15, 24, 2224])
12+
})
13+
14+
describe('Variations of input array lengths', () => {
15+
it('should return an empty list with the input list is an empty list', () => {
16+
expect(combSort([])).toEqual([])
17+
})
18+
19+
it('should correctly sort an input list of length 1', () => {
20+
expect(combSort([100])).toEqual([100])
21+
})
22+
23+
it('should correctly sort an input list of an odd length', () => {
24+
expect(combSort([101, -10, 321])).toEqual([-10, 101, 321])
25+
})
26+
27+
it('should correctly sort an input list of an even length', () => {
28+
expect(combSort([40, 42, 56, 45, 12, 3])).toEqual([3, 12, 40, 42, 45, 56])
29+
})
30+
})
31+
32+
describe('Variations of input array elements', () => {
33+
it('should correctly sort an input list that contains only positive numbers', () => {
34+
expect(combSort([50, 33, 11, 2])).toEqual([2, 11, 33, 50])
35+
})
36+
37+
it('should correctly sort an input list that contains only negative numbers', () => {
38+
expect(combSort([-1, -21, -2, -35])).toEqual([-35, -21, -2, -1])
39+
})
40+
41+
it('should correctly sort an input list that contains only a mix of positive and negative numbers', () => {
42+
expect(combSort([-40, 42, 56, -45, 12, -3])).toEqual([-45, -40, -3, 12, 42, 56])
43+
})
44+
45+
it('should correctly sort an input list that contains only whole numbers', () => {
46+
expect(combSort([11, 3, 12, 4, -15])).toEqual([-15, 3, 4, 11, 12])
47+
})
48+
49+
it('should correctly sort an input list that contains only decimal numbers', () => {
50+
expect(combSort([1.0, 1.42, 2.56, 33.45, 13.12, 2.3])).toEqual([1.0, 1.42, 2.3, 2.56, 13.12, 33.45])
51+
})
52+
53+
it('should correctly sort an input list that contains only a mix of whole and decimal', () => {
54+
expect(combSort([32.40, 12.42, 56, 45, 12, 3])).toEqual([3, 12, 12.42, 32.40, 45, 56])
55+
})
56+
57+
it('should correctly sort an input list that contains only fractional numbers', () => {
58+
expect(combSort([0.98, 0.4259, 0.56, -0.456, -0.12, 0.322])).toEqual([-0.456, -0.12, 0.322, 0.4259, 0.56, 0.98])
59+
})
60+
61+
it('should correctly sort an input list that contains only a mix of whole, decimal, and fractional', () => {
62+
expect(combSort([-40, -0.222, 5.6, -4.5, 12, 0.333])).toEqual([-40, -4.5, -0.222, 0.333, 5.6, 12])
63+
})
64+
65+
it('should correctly sort an input list that contains duplicates', () => {
66+
expect(combSort([4, 3, 4, 2, 1, 2])).toEqual([1, 2, 2, 3, 4, 4])
67+
})
68+
})
69+
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /