Skip to content

Commit 0c405cb

Browse files
Update anagram.spec.js (#2596)
* Update anagram.spec.js * [CI] Format code * no reason to use `let` here, i think * [CI] Format code --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent b0b7992 commit 0c405cb

File tree

1 file changed

+74
-38
lines changed

1 file changed

+74
-38
lines changed
Lines changed: 74 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,120 @@
11
import { describe, expect, test, xtest } from '@jest/globals';
22
import { findAnagrams } from './anagram';
33

4+
const areSetsEqual = (setA, setB) =>
5+
setA.size === setB.size && [...setA].every((val) => setB.has(val));
6+
47
describe('Anagram', () => {
58
test('no matches', () => {
6-
expect(
7-
findAnagrams('diaper', ['hello', 'world', 'zombies', 'pants']),
8-
).toEqual([]);
9+
const expected = [];
10+
const actual = findAnagrams('diaper', [
11+
'hello',
12+
'world',
13+
'zombies',
14+
'pants',
15+
]);
16+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
917
});
1018

1119
xtest('detects two anagrams', () => {
12-
expect(findAnagrams('solemn', ['lemons', 'cherry', 'melons'])).toEqual([
13-
'lemons',
14-
'melons',
15-
]);
20+
const expected = ['lemons', 'melons'];
21+
const actual = findAnagrams('solemn', ['lemons', 'cherry', 'melons']);
22+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
1623
});
1724

1825
xtest('does not detect anagram subsets', () => {
19-
expect(findAnagrams('good', ['dog', 'goody'])).toEqual([]);
26+
const expected = [];
27+
const actual = findAnagrams('good', ['dog', 'goody']);
28+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
2029
});
2130

2231
xtest('detects anagram', () => {
23-
expect(
24-
findAnagrams('listen', ['enlists', 'google', 'inlets', 'banana']),
25-
).toEqual(['inlets']);
32+
const expected = ['inlets'];
33+
const actual = findAnagrams('listen', [
34+
'enlists',
35+
'google',
36+
'inlets',
37+
'banana',
38+
]);
39+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
2640
});
2741

2842
xtest('detects three anagrams', () => {
29-
expect(
30-
findAnagrams('allergy', [
31-
'gallery',
32-
'ballerina',
33-
'regally',
34-
'clergy',
35-
'largely',
36-
'leading',
37-
]),
38-
).toEqual(['gallery', 'regally', 'largely']);
43+
const expected = ['gallery', 'regally', 'largely'];
44+
const actual = findAnagrams('allergy', [
45+
'gallery',
46+
'ballerina',
47+
'regally',
48+
'clergy',
49+
'largely',
50+
'leading',
51+
]);
52+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
3953
});
4054

4155
xtest('detects multiple anagrams with different case', () => {
42-
expect(findAnagrams('nose', ['Eons', 'ONES'])).toEqual(['Eons', 'ONES']);
56+
const expected = ['Eons', 'ONES'];
57+
const actual = findAnagrams('nose', ['Eons', 'ONES']);
58+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
4359
});
4460

4561
xtest('does not detect non-anagrams with identical checksum', () => {
46-
expect(findAnagrams('mass', ['last'])).toEqual([]);
62+
const expected = [];
63+
const actual = findAnagrams('mass', ['last']);
64+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
4765
});
4866

4967
xtest('detects anagrams case-insensitively', () => {
50-
expect(
51-
findAnagrams('Orchestra', ['cashregister', 'Carthorse', 'radishes']),
52-
).toEqual(['Carthorse']);
68+
const expected = ['Carthorse'];
69+
const actual = findAnagrams('Orchestra', [
70+
'cashregister',
71+
'Carthorse',
72+
'radishes',
73+
]);
74+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
5375
});
5476

5577
xtest('detects anagrams using case-insensitive subject', () => {
56-
expect(
57-
findAnagrams('Orchestra', ['cashregister', 'carthorse', 'radishes']),
58-
).toEqual(['carthorse']);
78+
const expected = ['carthorse'];
79+
const actual = findAnagrams('Orchestra', [
80+
'cashregister',
81+
'carthorse',
82+
'radishes',
83+
]);
84+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
5985
});
6086

6187
xtest('detects anagrams using case-insensitive possible matches', () => {
62-
expect(
63-
findAnagrams('orchestra', ['cashregister', 'Carthorse', 'radishes']),
64-
).toEqual(['Carthorse']);
88+
const expected = ['Carthorse'];
89+
const actual = findAnagrams('orchestra', [
90+
'cashregister',
91+
'Carthorse',
92+
'radishes',
93+
]);
94+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
6595
});
6696

6797
xtest('does not detect an anagram if the original word is repeated', () => {
68-
expect(findAnagrams('go', ['go Go GO'])).toEqual([]);
98+
const expected = [];
99+
const actual = findAnagrams('go', ['go Go GO']);
100+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
69101
});
70102

71103
xtest('anagrams must use all letters exactly once', () => {
72-
expect(findAnagrams('tapper', ['patter'])).toEqual([]);
104+
const expected = [];
105+
const actual = findAnagrams('tapper', ['patter']);
106+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
73107
});
74108

75109
xtest('words are not anagrams of themselves (case-insensitive)', () => {
76-
expect(findAnagrams('BANANA', ['BANANA', 'Banana', 'banana'])).toEqual([]);
110+
const expected = [];
111+
const actual = findAnagrams('BANANA', ['BANANA', 'Banana', 'banana']);
112+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
77113
});
78114

79115
xtest('words other than themselves can be anagrams', () => {
80-
expect(findAnagrams('LISTEN', ['Listen', 'Silent', 'LISTEN'])).toEqual([
81-
'Silent',
82-
]);
116+
const expected = ['Silent'];
117+
const actual = findAnagrams('LISTEN', ['Listen', 'Silent', 'LISTEN']);
118+
expect(areSetsEqual(new Set(expected), new Set(actual))).toEqual(true);
83119
});
84120
});

0 commit comments

Comments
 (0)