70 lines
2.2 KiB
TypeScript
70 lines
2.2 KiB
TypeScript
|
/**
|
|||
|
* @license
|
|||
|
* Copyright Google Inc. All Rights Reserved.
|
|||
|
*
|
|||
|
* Use of this source code is governed by an MIT-style license that can be
|
|||
|
* found in the LICENSE file at https://angular.io/license
|
|||
|
*/
|
|||
|
|
|||
|
import * as o from '../../../src/output/output_ast';
|
|||
|
import {I18nContext} from '../../../src/render3/view/i18n';
|
|||
|
|
|||
|
describe('I18nContext', () => {
|
|||
|
it('should support i18n content collection', () => {
|
|||
|
const ctx = new I18nContext(5, null, 'myRef');
|
|||
|
|
|||
|
// basic checks
|
|||
|
expect(ctx.isRoot()).toBe(true);
|
|||
|
expect(ctx.isResolved()).toBe(true);
|
|||
|
expect(ctx.getId()).toBe(0);
|
|||
|
expect(ctx.getIndex()).toBe(5);
|
|||
|
expect(ctx.getTemplateIndex()).toBeNull();
|
|||
|
expect(ctx.getRef()).toBe('myRef');
|
|||
|
|
|||
|
// data collection checks
|
|||
|
expect(ctx.getContent()).toBe('');
|
|||
|
ctx.appendText('Foo');
|
|||
|
ctx.appendElement(1);
|
|||
|
ctx.appendText('Bar');
|
|||
|
ctx.appendElement(1, true);
|
|||
|
expect(ctx.getContent()).toBe('Foo<6F>#1<>Bar<61>/#1<>');
|
|||
|
|
|||
|
// binding collection checks
|
|||
|
expect(ctx.getBindings().size).toBe(0);
|
|||
|
ctx.appendBinding(o.literal(1));
|
|||
|
ctx.appendBinding(o.literal(2));
|
|||
|
expect(ctx.getBindings().size).toBe(2);
|
|||
|
});
|
|||
|
|
|||
|
it('should support nested contexts', () => {
|
|||
|
const ctx = new I18nContext(5, null, 'myRef');
|
|||
|
const templateIndex = 1;
|
|||
|
|
|||
|
// set some data for root ctx
|
|||
|
ctx.appendText('Foo');
|
|||
|
ctx.appendBinding(o.literal(1));
|
|||
|
ctx.appendTemplate(templateIndex);
|
|||
|
expect(ctx.isResolved()).toBe(false);
|
|||
|
|
|||
|
// create child context
|
|||
|
const childCtx = ctx.forkChildContext(6, templateIndex);
|
|||
|
expect(childCtx.getContent()).toBe('');
|
|||
|
expect(childCtx.getBindings().size).toBe(0);
|
|||
|
expect(childCtx.getRef()).toBe(ctx.getRef()); // ref should be passed into child ctx
|
|||
|
expect(childCtx.isRoot()).toBe(false);
|
|||
|
|
|||
|
childCtx.appendText('Bar');
|
|||
|
childCtx.appendElement(2);
|
|||
|
childCtx.appendText('Baz');
|
|||
|
childCtx.appendElement(2, true);
|
|||
|
childCtx.appendBinding(o.literal(2));
|
|||
|
childCtx.appendBinding(o.literal(3));
|
|||
|
|
|||
|
expect(childCtx.getContent()).toBe('Bar<61>#2:1<>Baz<61>/#2:1<>');
|
|||
|
expect(childCtx.getBindings().size).toBe(2);
|
|||
|
|
|||
|
// reconcile
|
|||
|
ctx.reconcileChildContext(childCtx);
|
|||
|
expect(ctx.getContent()).toBe('Foo<6F>*1:1<>Bar<61>#2:1<>Baz<61>/#2:1<><31>/*1:1<>');
|
|||
|
});
|
|||
|
});
|