mirror of
https://github.com/slint-ui/slint.git
synced 2025-09-29 05:14:48 +00:00
Node.js: Fix MapModel rowData() calling map function even if the source model returned undefined
Also fix the function signature, which was wrong.
This commit is contained in:
parent
55a8f202ea
commit
2d6edfbd6c
2 changed files with 31 additions and 2 deletions
|
@ -482,6 +482,31 @@ test("MapModel", (t) => {
|
||||||
t.is(checkModel.rowData(2), "Tisch, Roman");
|
t.is(checkModel.rowData(2), "Tisch, Roman");
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("MapModel undefined rowData sourcemodel", (t) => {
|
||||||
|
const nameModel: ArrayModel<Number> = new ArrayModel([
|
||||||
|
1, 2, 3
|
||||||
|
]);
|
||||||
|
|
||||||
|
let mapFunctionCallCount = 0;
|
||||||
|
const mapModel = new private_api.MapModel<Number, String>(
|
||||||
|
nameModel,
|
||||||
|
(data) => {
|
||||||
|
mapFunctionCallCount++;
|
||||||
|
return data.toString();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
for (let i = 0; i < mapModel.rowCount(); ++i) {
|
||||||
|
mapModel.rowData(i);
|
||||||
|
}
|
||||||
|
t.deepEqual(mapFunctionCallCount, mapModel.rowCount());
|
||||||
|
mapFunctionCallCount = 0;
|
||||||
|
t.is(nameModel.rowData(nameModel.rowCount()), undefined);
|
||||||
|
t.deepEqual(mapFunctionCallCount, 0);
|
||||||
|
t.is(mapModel.rowData(mapModel.rowCount()), undefined);
|
||||||
|
t.deepEqual(mapFunctionCallCount, 0);
|
||||||
|
})
|
||||||
|
|
||||||
test('ArrayModel rowCount', (t) => {
|
test('ArrayModel rowCount', (t) => {
|
||||||
let compiler = new private_api.ComponentCompiler;
|
let compiler = new private_api.ComponentCompiler;
|
||||||
let definition = compiler.buildFromSource(`
|
let definition = compiler.buildFromSource(`
|
||||||
|
|
|
@ -502,8 +502,12 @@ export class MapModel<T, U> extends Model<U> {
|
||||||
* @param row index in range 0..(rowCount() - 1).
|
* @param row index in range 0..(rowCount() - 1).
|
||||||
* @returns undefined if row is out of range otherwise the data.
|
* @returns undefined if row is out of range otherwise the data.
|
||||||
*/
|
*/
|
||||||
rowData(row: number): U {
|
rowData(row: number): U | undefined {
|
||||||
return this.#mapFunction(this.sourceModel.rowData(row));
|
let data = this.sourceModel.rowData(row);
|
||||||
|
if (data === undefined) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
return this.#mapFunction(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue