Commit 32aeaca5a546e28da16423548ecc95a2efd17e77
added type checking
wanderer committed on 12/19/2017, 9:22:04 PMParent: 5371632604920c465015a0273871defe9feabdfa
Files changed
index.js | changed |
tests/index.js | changed |
index.js | ||
---|---|---|
@@ -11,20 +11,21 @@ | ||
11 | 11 … | * referance |
12 | 12 … | * @param {*} obj |
13 | 13 … | * @return {integer} |
14 | 14 … | */ |
15 | - add (obj) { | |
15 … | + add (obj, type) { | |
16 | 16 … | return this._map.push(obj) - 1 |
17 | 17 … | } |
18 | 18 … | |
19 | 19 … | /** |
20 | 20 … | * gets a POJO given a refernce as an int |
21 | 21 … | * @param {integer} ref |
22 … | + * @param {Object} type - optional, a contructor that the retreived object should be an instance of | |
22 | 23 … | * @return {*} |
23 | 24 … | */ |
24 | - get (ref) { | |
25 … | + get (ref, type) { | |
25 | 26 … | const obj = this._map[ref] |
26 | - if (obj === undefined) { | |
27 … | + if (obj === undefined || (type && type !== obj.constructor)) { | |
27 | 28 … | throw new Error('invalid referance') |
28 | 29 … | } |
29 | 30 … | return obj |
30 | 31 … | } |
tests/index.js | |||
---|---|---|---|
@@ -1,9 +1,9 @@ | |||
1 | 1 … | const tape = require('tape') | |
2 | 2 … | const ReferanceMap = require('../index.js') | |
3 | 3 … | ||
4 | 4 … | tape('referance mapping', t => { | |
5 | - t.plan(9) | ||
5 … | + t.plan(11) | ||
6 | 6 … | const referanceMap = new ReferanceMap() | |
7 | 7 … | const obj1 = {} | |
8 | 8 … | const obj2 = {} | |
9 | 9 … | const ref1 = referanceMap.add(obj1) | |
@@ -35,5 +35,14 @@ | |||
35 | 35 … | referanceMap.get(ref2) | |
36 | 36 … | } catch (e) { | |
37 | 37 … | t.true(true, 'should clear refances') | |
38 | 38 … | } | |
39 … | + | ||
40 … | + const aMap = new Map() | ||
41 … | + const ref3 = referanceMap.add(aMap) | ||
42 … | + t.equals(referanceMap.get(ref3, Map), aMap) | ||
43 … | + try { | ||
44 … | + referanceMap.get(ref3, Set) | ||
45 … | + } catch (e) { | ||
46 … | + t.true(true, 'should throw if wrong type') | ||
47 … | + } | ||
39 | 48 … | }) |
Built with git-ssb-web