mutant
Version:
Create observables and map them to DOM elements. Massively inspired by hyperscript and observ-*. No virtual dom, just direct observable bindings. Unnecessary garbage collection is avoided by using mutable objects instead of blasting immutable junk all ove
52 lines (41 loc) • 923 B
JavaScript
var test = require('tape')
require('source-map-support').install()
var MutantArray = require('../array')
var MutantDict = require('../dict')
var MutantSet = require('../set')
test(`array - transaction`, t => {
var array = MutantArray()
var changes = []
array(x => changes.push(x))
array.transaction(() => {
array.push(1)
array.push(2)
array.push(3)
})
t.deepEqual(changes, [[1, 2, 3]])
t.end()
})
test(`dict - transaction`, t => {
var dict = MutantDict()
var changes = []
dict(x => changes.push(x))
dict.transaction(() => {
dict.put('a', 1)
dict.put('b', 2)
dict.put('c', 3)
})
t.deepEqual(changes, [{a: 1, b: 2, c: 3}])
t.end()
})
test(`set - transaction`, t => {
var set = MutantSet()
var changes = []
set(x => changes.push(x))
set.transaction(() => {
set.add(1)
set.add(2)
set.add(3)
})
t.deepEqual(changes, [[1, 2, 3]])
t.end()
})