forked from mystiq/hydrogen-web
fix and test subscription and initial values for sort
This commit is contained in:
parent
21d93a5893
commit
290886a5eb
2 changed files with 17 additions and 4 deletions
|
@ -13,13 +13,13 @@ export default class BaseObservableCollection {
|
|||
|
||||
subscribe(handler) {
|
||||
this._handlers.add(handler);
|
||||
if (this._handlers.length === 1) {
|
||||
if (this._handlers.size === 1) {
|
||||
this.onSubscribeFirst();
|
||||
}
|
||||
return () => {
|
||||
if (handler) {
|
||||
this._handlers.delete(this._handler);
|
||||
if (this._handlers.length === 0) {
|
||||
if (this._handlers.size === 0) {
|
||||
this.onUnsubscribeLast();
|
||||
}
|
||||
handler = null;
|
||||
|
|
|
@ -118,7 +118,7 @@ export default class SortedMapList extends BaseObservableList {
|
|||
}
|
||||
|
||||
get(index) {
|
||||
return this._sourceMap[index];
|
||||
return this._sortedPairs[index];
|
||||
}
|
||||
|
||||
get length() {
|
||||
|
@ -126,11 +126,13 @@ export default class SortedMapList extends BaseObservableList {
|
|||
}
|
||||
|
||||
[Symbol.iterator]() {
|
||||
return this._sortedPairs;
|
||||
return this._sortedPairs.values();
|
||||
}
|
||||
}
|
||||
|
||||
//#ifdef TESTS
|
||||
import ObservableMap from "../map/ObservableMap.js";
|
||||
|
||||
export function tests() {
|
||||
return {
|
||||
test_sortIndex(assert) {
|
||||
|
@ -154,6 +156,17 @@ export function tests() {
|
|||
assert.deepEqual(a, [1, 2, 5, 8]);
|
||||
let idx = sortedIndex(a, 2, cmp);
|
||||
assert.equal(idx, 1);
|
||||
},
|
||||
|
||||
test_initial_values(assert) {
|
||||
const map = new ObservableMap([
|
||||
["a", 50],
|
||||
["b", 6],
|
||||
["c", -5],
|
||||
]);
|
||||
const list = new SortedMapList(map, (a, b) => a - b);
|
||||
list.subscribe({}); //needed to populate iterator
|
||||
assert.deepEqual(Array.from(list), [-5, 6, 50]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue