git ssb

0+

wanderer🌟 / referenceMap



Commit 32aeaca5a546e28da16423548ecc95a2efd17e77

added type checking

wanderer committed on 12/19/2017, 9:22:04 PM
Parent: 5371632604920c465015a0273871defe9feabdfa

Files changed

index.jschanged
tests/index.jschanged
index.jsView
@@ -11,20 +11,21 @@
1111 * referance
1212 * @param {*} obj
1313 * @return {integer}
1414 */
15- add (obj) {
15 + add (obj, type) {
1616 return this._map.push(obj) - 1
1717 }
1818
1919 /**
2020 * gets a POJO given a refernce as an int
2121 * @param {integer} ref
22 + * @param {Object} type - optional, a contructor that the retreived object should be an instance of
2223 * @return {*}
2324 */
24- get (ref) {
25 + get (ref, type) {
2526 const obj = this._map[ref]
26- if (obj === undefined) {
27 + if (obj === undefined || (type && type !== obj.constructor)) {
2728 throw new Error('invalid referance')
2829 }
2930 return obj
3031 }
tests/index.jsView
@@ -1,9 +1,9 @@
11 const tape = require('tape')
22 const ReferanceMap = require('../index.js')
33
44 tape('referance mapping', t => {
5- t.plan(9)
5 + t.plan(11)
66 const referanceMap = new ReferanceMap()
77 const obj1 = {}
88 const obj2 = {}
99 const ref1 = referanceMap.add(obj1)
@@ -35,5 +35,14 @@
3535 referanceMap.get(ref2)
3636 } catch (e) {
3737 t.true(true, 'should clear refances')
3838 }
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 + }
3948 })

Built with git-ssb-web