-
-
Notifications
You must be signed in to change notification settings - Fork 283
Expand file tree
/
Copy pathdedupe.test.js
More file actions
44 lines (37 loc) · 1.63 KB
/
dedupe.test.js
File metadata and controls
44 lines (37 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const dedupe = require("./dedupe.js");
/*
Dedupe Array
📖 Dedupe means **deduplicate**
In this kata, you will need to deduplicate the elements of an array
E.g. dedupe(['a','a','a','b','b','c']) returns ['a','b','c']
E.g. dedupe([5, 1, 1, 2, 3, 2, 5, 8]) returns [5, 1, 2, 3, 8]
E.g. dedupe([1, 2, 1]) returns [1, 2]
*/
// Acceptance Criteria:
// Given an empty array
// When passed to the dedupe function
// Then it should return an empty array
test("given an empty array, it returns an empty array", () => {
expect(dedupe([])).toEqual([]);
});
// Given an array with no duplicates
// When passed to the dedupe function
// Then it should return a copy of the original array
test("given an array has no duplicates, it returns a copy of the original array", () => {
const originalArray = [1, 2, 3];
const result = dedupe(originalArray);
expect(result).toEqual(originalArray);
expect(result).not.toBe(originalArray);
});
// Given an array of strings or numbers
// When passed to the dedupe function
// Then it should remove the duplicate values, preserving the first occurence of each element
test("given an array with strings or numbers, it removes the duplicates preserving the first occurrence of each element", () => {
expect(dedupe([5, 1, 1, 2, 3, 2, 5, 8])).toEqual([5, 1, 2, 3, 8]);
expect(dedupe([1, 2, 1])).toEqual([1, 2]);
expect(dedupe(["a", "a", "a", "b", "b", "c"])).toEqual(["a", "b", "c"]);
expect(dedupe(["z", "y", "w", "w", "u", "u"])).toEqual(["z", "y", "w", "u"]);
});
// Then it should return a new array with duplicates removed while preserving the
// first occurrence of each element from the original array.
// updated version