Skip to content
This repository has been archived by the owner on Jan 11, 2019. It is now read-only.

Commit

Permalink
Fix CollisionNode and ValueNode owner tests and fix iterateReverse
Browse files Browse the repository at this point in the history
  • Loading branch information
Phil Pluckthun committed Dec 17, 2016
1 parent 24485ac commit abd89da
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src/kvHamt/CollisionNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ export default class CollisionNode<T> {
}

iterateReverse(step: Predicate<T>) {
for (let i = this.keys.length; i >= 0; i--) {
for (let i = this.keys.length - 1; i >= 0; i--) {
const key = this.keys[i]
const value = this.values[i]

Expand Down
36 changes: 22 additions & 14 deletions src/kvHamt/__tests__/CollisionNode.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,14 @@ describe('CollisionNode', () => {
expect(result.values[2]).toBe(newValue)
})

it('should assign owner when it\'s being passed', () => {
it('should mutate in place if owner matches', () => {
const owner = {}
const result = node.set(0x11111, 0x22222, 42, owner) as CollisionNode<number>
const first = new CollisionNode<number>(0, hashCode, keys, values, owner)
const second = first.set(0x11111, 0x22222, 42, owner) as CollisionNode<number>

expect(result).toBeInstanceOf(CollisionNode)
expect(result.owner).toBe(owner)
expect(second).toBeInstanceOf(CollisionNode)
expect(second).toBe(first)
expect(second.owner).toBe(owner)
})

it('should overwrite tuple on CollectionNode when hashCodes and keys match', () => {
Expand Down Expand Up @@ -134,12 +136,13 @@ describe('CollisionNode', () => {
expect(res.get(1)).toBe(undefined)
})

it('should assign owner when it\'s being passed', () => {
const sizeThree = new CollisionNode<number>(0, 1, [ 1, 2, 3 ], [ 1, 2, 3 ])
it('should mutate in place if owner matches', () => {
const owner = {}
const sizeThree = new CollisionNode<number>(0, 1, [ 1, 2, 3 ], [ 1, 2, 3 ], owner)
const res = sizeThree.delete(1, 1, owner) as CollisionNode<number>

expect(res).toBeInstanceOf(CollisionNode)
expect(res).toBe(sizeThree)
expect(res.owner).toBe(owner)
})
})
Expand All @@ -154,11 +157,14 @@ describe('CollisionNode', () => {
expect(res.values[0]).toBe(node.values[0].toString())
})

it('should assign owner when it\'s being passed', () => {
it('should mutate in place if owner matches', () => {
const owner = {}
const res = node.map(x => x.toString(), owner)
const first = new CollisionNode<number>(1, 2, keys, values, owner)
const res = first.map(x => x.toString(), owner)

expect(res.size).toBe(node.size)
expect(res).toBeInstanceOf(CollisionNode)
expect(res.size).toBe(first.size)
expect(res).toBe(first)
expect(res.owner).toBe(owner)
})
})
Expand Down Expand Up @@ -196,7 +202,7 @@ describe('CollisionNode', () => {
const keys = []
const values = []

node.iterate((value, key) => {
node.iterateReverse((value, key) => {
keys.push(key)
values.push(value)
})
Expand All @@ -205,12 +211,14 @@ describe('CollisionNode', () => {
expect(keys.length).toBe(node.keys.length)
expect(values.length).toBe(node.values.length)

for (let i = node.keys.length - 1; i >= 0; i--) {
expect(keys[i]).toBe(node.keys[i])
const length = node.keys.length

for (let i = 0; i < length; i++) {
expect(keys[i]).toBe(node.keys[length - 1 - i])
}

for (let i = node.values.length - 1; i >= 0; i--) {
expect(values[i]).toBe(node.values[i])
for (let i = 0; i < length; i++) {
expect(values[i]).toBe(node.values[length - 1 - i])
}
})
})
Expand Down
2 changes: 1 addition & 1 deletion src/kvHamt/__tests__/ValueNode.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ describe('ValueNode', () => {
it('calls predicate using value and key', () => {
const predicate = jest.fn()
const node = new ValueNode<number>(0, 1, 1, 1)
node.iterate(predicate)
node.iterateReverse(predicate)

expect(predicate).toHaveBeenCalledTimes(1)
expect(predicate).toHaveBeenCalledWith(1, 1)
Expand Down

0 comments on commit abd89da

Please sign in to comment.