|
4 | 4 | *--------------------------------------------------------------------------------------------*/
|
5 | 5 |
|
6 | 6 | import * as assert from 'assert';
|
7 |
| -import { Emitter } from 'vs/base/common/event'; |
| 7 | +import { Emitter, Event } from 'vs/base/common/event'; |
8 | 8 | import { ISettableObservable, autorun, derived, ITransaction, observableFromEvent, observableValue, transaction, keepAlive } from 'vs/base/common/observable';
|
9 | 9 | import { BaseObservable, IObservable, IObserver } from 'vs/base/common/observableImpl/base';
|
10 | 10 |
|
@@ -962,6 +962,36 @@ suite('observables', () => {
|
962 | 962 | myObservable2.set(1, tx);
|
963 | 963 | });
|
964 | 964 | });
|
| 965 | + |
| 966 | + test('bug: fromObservableLight doesnt subscribe', () => { |
| 967 | + const log = new Log(); |
| 968 | + const myObservable = new LoggingObservableValue('myObservable', 0, log); |
| 969 | + |
| 970 | + const myDerived = derived('myDerived', reader => { |
| 971 | + const val = myObservable.read(reader); |
| 972 | + log.log(`myDerived.computed(myObservable2: ${val})`); |
| 973 | + return val % 10; |
| 974 | + }); |
| 975 | + |
| 976 | + const e = Event.fromObservableLight(myDerived); |
| 977 | + log.log('event created'); |
| 978 | + e(() => { |
| 979 | + log.log('event fired'); |
| 980 | + }); |
| 981 | + |
| 982 | + myObservable.set(1, undefined); |
| 983 | + |
| 984 | + assert.deepStrictEqual(log.getAndClearEntries(), [ |
| 985 | + 'event created', |
| 986 | + 'myObservable.firstObserverAdded', |
| 987 | + 'myObservable.get', |
| 988 | + 'myDerived.computed(myObservable2: 0)', |
| 989 | + 'myObservable.set (value 1)', |
| 990 | + 'myObservable.get', |
| 991 | + 'myDerived.computed(myObservable2: 1)', |
| 992 | + 'event fired', |
| 993 | + ]); |
| 994 | + }); |
965 | 995 | });
|
966 | 996 |
|
967 | 997 | export class LoggingObserver implements IObserver {
|
|
0 commit comments