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 9f7ed56

Browse files
merge: Remove duplicate helper functions in cache tests. (TheAlgorithms#933)
* refactor: added one implementation of fibonacciCahce * chore: move union function * chore: renamed the cacheTest file
1 parent bb23382 commit 9f7ed56

File tree

4 files changed

+44
-49
lines changed

4 files changed

+44
-49
lines changed

‎Cache/test/LFUCache.test.js‎

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { LFUCache } from '../LFUCache'
2+
import { fibonacciCache } from './cacheTest'
23

34
describe('LFUCache', () => {
45
it('Example 1 (Small Cache, size=2)', () => {
@@ -28,27 +29,11 @@ describe('LFUCache', () => {
2829

2930
it('Example 2 (Computing Fibonacci Series, size=100)', () => {
3031
const cache = new LFUCache(100)
32+
3133
for (let i = 1; i <= 100; i++) {
32-
fib(i, cache)
34+
fibonacciCache(i, cache)
3335
}
36+
3437
expect(cache.cacheInfo()).toBe('CacheInfo(hits=193, misses=103, capacity=100, current size=98)')
3538
})
3639
})
37-
38-
// Helper for building and caching Fibonacci series
39-
function fib (num, cache = null) {
40-
if (cache) {
41-
const value = cache.get(num)
42-
if (value) {
43-
return value
44-
}
45-
}
46-
if (num === 1 || num === 2) {
47-
return 1
48-
}
49-
const result = fib(num - 1, cache) + fib(num - 2, cache)
50-
if (cache) {
51-
cache.set(num, result)
52-
}
53-
return result
54-
}

‎Cache/test/LRUCache.test.js‎

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { LRUCache } from '../LRUCache'
2+
import { fibonacciCache } from './cacheTest'
23

34
describe('LRUCache', () => {
45
it('Example 1 (Small Cache, size=2)', () => {
@@ -29,26 +30,8 @@ describe('LRUCache', () => {
2930
it('Example 2 (Computing Fibonacci Series, size=100)', () => {
3031
const cache = new LRUCache(100)
3132
for (let i = 1; i <= 100; i++) {
32-
fib(i, cache)
33+
fibonacciCache(i, cache)
3334
}
3435
expect(cache.cacheInfo()).toBe('CacheInfo(hits=193, misses=103, capacity=100, current size=98)')
3536
})
3637
})
37-
38-
// Helper for building and caching Fibonacci series
39-
function fib (num, cache = null) {
40-
if (cache) {
41-
const value = cache.get(num)
42-
if (value) {
43-
return value
44-
}
45-
}
46-
if (num === 1 || num === 2) {
47-
return 1
48-
}
49-
const result = fib(num - 1, cache) + fib(num - 2, cache)
50-
if (cache) {
51-
cache.set(num, result)
52-
}
53-
return result
54-
}

‎Cache/test/Memoize.test.js‎

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
import { memoize } from '../Memoize'
2+
import { union } from './cacheTest'
23
import { fibonacci } from '../../Dynamic-Programming/FibonacciNumber'
34
import { factorial } from '../../Recursive/Factorial'
45

56
const multipleFactorials = (arr) => arr.map(factorial)
67

7-
/**
8-
* @title implementation of union function
9-
* @param {Set} sets
10-
* @return {new Set}
11-
*/
12-
function union (...sets) {
13-
return new Set(
14-
sets.reduce((flatArray, set) => [...flatArray, ...set], [])
15-
)
16-
}
17-
188
describe('Testing Memoize', () => {
199
it('expects the fibonacci function to use the cache on the second call', () => {
2010
const memoFibonacci = memoize(fibonacci)

‎Cache/test/cacheTest.js‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* @function fibonacciCache
3+
* @description - this is a cached variant of fib number
4+
* @param {number} n - Real number (n > -1)
5+
* @param {Object} cache
6+
* @returns {number}
7+
*/
8+
export const fibonacciCache = (n, cache = null) => {
9+
if (cache) {
10+
const value = cache.get(n)
11+
12+
if (value !== null) {
13+
return value
14+
}
15+
}
16+
17+
if (n === 1 || n === 2) {
18+
return 1
19+
}
20+
21+
const result = fibonacciCache(n - 1, cache) + fibonacciCache(n - 2, cache)
22+
23+
cache && cache.set(n, result)
24+
25+
return result
26+
}
27+
28+
/**
29+
* @title implementation of union function
30+
* @param {Set} sets
31+
* @return {new Set}
32+
*/
33+
export const union = (...sets) => {
34+
return new Set(
35+
sets.reduce((flatArray, set) => [...flatArray, ...set], [])
36+
)
37+
}

0 commit comments

Comments
(0)

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