mirror of https://github.com/Squidex/squidex.git
6 changed files with 2 additions and 90 deletions
@ -1,42 +0,0 @@ |
|||||
/* |
|
||||
* Squidex Headless CMS |
|
||||
* |
|
||||
* @license |
|
||||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|
||||
*/ |
|
||||
|
|
||||
import { Lazy } from './lazy'; |
|
||||
|
|
||||
describe('Lazy', () => { |
|
||||
it('should provider value', () => { |
|
||||
const lazy = new Lazy(() => 1); |
|
||||
|
|
||||
expect(lazy.value).toBe(1); |
|
||||
}); |
|
||||
|
|
||||
it('should call delegate once', () => { |
|
||||
let called = 0; |
|
||||
|
|
||||
const lazy = new Lazy(() => { |
|
||||
called++; |
|
||||
return 13; |
|
||||
}); |
|
||||
|
|
||||
expect(lazy.value).toBe(13); |
|
||||
expect(lazy.value).toBe(13); |
|
||||
expect(called).toBe(1); |
|
||||
}); |
|
||||
|
|
||||
it('should call delegate once when returned undefined', () => { |
|
||||
let called = 0; |
|
||||
|
|
||||
const lazy = new Lazy(() => { |
|
||||
called++; |
|
||||
return undefined; |
|
||||
}); |
|
||||
|
|
||||
expect(lazy.value).toBeUndefined(); |
|
||||
expect(lazy.value).toBeUndefined(); |
|
||||
expect(called).toBe(1); |
|
||||
}); |
|
||||
}); |
|
||||
@ -1,24 +0,0 @@ |
|||||
/* |
|
||||
* Squidex Headless CMS |
|
||||
* |
|
||||
* @license |
|
||||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|
||||
*/ |
|
||||
|
|
||||
export class Lazy<T> { |
|
||||
private valueSet = false; |
|
||||
private valueField: T; |
|
||||
|
|
||||
public get value(): T { |
|
||||
if (!this.valueSet) { |
|
||||
this.valueField = this.factory(); |
|
||||
this.valueSet = true; |
|
||||
} |
|
||||
|
|
||||
return this.valueField; |
|
||||
} |
|
||||
constructor( |
|
||||
private readonly factory: () => T |
|
||||
) { |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue