diff --git a/packages/core/test/acceptance/i18n_spec.ts b/packages/core/test/acceptance/i18n_spec.ts
index d430787feb..b0648ad5c2 100644
--- a/packages/core/test/acceptance/i18n_spec.ts
+++ b/packages/core/test/acceptance/i18n_spec.ts
@@ -652,12 +652,15 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
const lViewDebug = lView.debug!;
fixture.detectChanges();
expect((fixture.nativeElement as Element).textContent).toEqual('just now');
- expect(lViewDebug.nodes.map(toTypeContent)).toEqual(['IcuContainer()']);
+ expect(lViewDebug.nodes.map(toTypeContent)).toEqual([
+ `IcuContainer()`
+ ]);
// We want to ensure that the ICU container does not have any content!
// This is because the content is instance dependent and therefore can't be shared
// across `TNode`s.
expect(lViewDebug.nodes[0].children.map(toTypeContent)).toEqual([]);
- expect(fixture.nativeElement.innerHTML).toEqual('just now');
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`just now`);
});
it('should support multiple ICUs', () => {
@@ -674,15 +677,16 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
`);
const lView = getComponentLView(fixture.componentInstance);
expect(lView.debug!.nodes.map(toTypeContent)).toEqual([
- 'IcuContainer()',
- 'IcuContainer()',
+ `IcuContainer()`,
+ `IcuContainer()`,
]);
// We want to ensure that the ICU container does not have any content!
// This is because the content is instance dependent and therefore can't be shared
// across `TNode`s.
expect(lView.debug!.nodes[0].children.map(toTypeContent)).toEqual([]);
expect(fixture.nativeElement.innerHTML)
- .toEqual('just nowMr. Angular');
+ .toEqual(`just nowMr. Angular`);
});
});
});
@@ -778,19 +782,21 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
other {({{name}})}
}`);
expect(fixture.nativeElement.innerHTML)
- .toEqual(`
aucun email! - (Angular)
`);
+ .toEqual(`aucun email! - (Angular)
`);
fixture.componentRef.instance.count = 4;
fixture.detectChanges();
expect(fixture.nativeElement.innerHTML)
- .toEqual(
- `4 emails - (Angular)
`);
+ .toEqual(`4 emails - (Angular)
`);
fixture.componentRef.instance.count = 0;
fixture.componentRef.instance.name = 'John';
fixture.detectChanges();
expect(fixture.nativeElement.innerHTML)
- .toEqual(`aucun email! - (John)
`);
+ .toEqual(`aucun email! - (John)
`);
});
it('with custom interpolation config', () => {
@@ -829,9 +835,9 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
expect(fixture.nativeElement.innerHTML)
.toEqual(
`` +
- `aucun email!` +
+ `aucun email!` +
` - ` +
- `(Angular)` +
+ `(Angular)` +
`
`);
fixture.componentRef.instance.count = 4;
@@ -839,9 +845,10 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
expect(fixture.nativeElement.innerHTML)
.toEqual(
`` +
- `4 emails` +
+ `4 emails` +
` - ` +
- `(Angular)` +
+ `(Angular)` +
`
`);
fixture.componentRef.instance.count = 0;
@@ -850,9 +857,9 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
expect(fixture.nativeElement.innerHTML)
.toEqual(
`` +
- `aucun email!` +
+ `aucun email!` +
` - ` +
- `(John)` +
+ `(John)` +
`
`);
});
@@ -867,7 +874,7 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
other {({{name}})}
}`);
expect(fixture.nativeElement.innerHTML)
- .toEqual(`(Angular)
`);
@@ -887,7 +894,7 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
other {({{name}})}
}`);
expect(fixture.nativeElement.innerHTML)
- .toEqual(`(Angular)`);
+ .toEqual(`(Angular)`);
});
it('inside ', () => {
@@ -922,12 +929,13 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
other {animals}
}!}
}`);
- expect(fixture.nativeElement.innerHTML).toEqual(`zero
`);
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`zero
`);
fixture.componentRef.instance.count = 4;
fixture.detectChanges();
expect(fixture.nativeElement.innerHTML)
- .toEqual(`4 animaux!
`);
+ .toEqual(`4 animaux!
`);
});
it('nested with interpolations in "other" blocks', () => {
@@ -947,16 +955,18 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
}!}
other {other - {{count}}}
}`);
- expect(fixture.nativeElement.innerHTML).toEqual(`zero
`);
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`zero
`);
fixture.componentRef.instance.count = 2;
fixture.detectChanges();
expect(fixture.nativeElement.innerHTML)
- .toEqual(`2 animaux!
`);
+ .toEqual(`2 animaux!
`);
fixture.componentRef.instance.count = 4;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual(`autre - 4
`);
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`autre - 4
`);
});
it('should return the correct plural form for ICU expressions when using "ro" locale', () => {
@@ -989,31 +999,34 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
=other {lots of emails}
}`);
- expect(fixture.nativeElement.innerHTML).toEqual('no email');
+ expect(fixture.nativeElement.innerHTML).toEqual(`no email`);
// Change detection cycle, no model changes
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('no email');
+ expect(fixture.nativeElement.innerHTML).toEqual(`no email`);
fixture.componentInstance.count = 3;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('a few emails');
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`a few emails`);
fixture.componentInstance.count = 1;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('one email');
+ expect(fixture.nativeElement.innerHTML).toEqual(`one email`);
fixture.componentInstance.count = 10;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('a few emails');
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`a few emails`);
fixture.componentInstance.count = 20;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('lots of emails');
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`lots of emails`);
fixture.componentInstance.count = 0;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('no email');
+ expect(fixture.nativeElement.innerHTML).toEqual(`no email`);
});
it(`should return the correct plural form for ICU expressions when using "es" locale`, () => {
@@ -1040,31 +1053,34 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
=other {lots of emails}
}`);
- expect(fixture.nativeElement.innerHTML).toEqual('no email');
+ expect(fixture.nativeElement.innerHTML).toEqual(`no email`);
// Change detection cycle, no model changes
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('no email');
+ expect(fixture.nativeElement.innerHTML).toEqual(`no email`);
fixture.componentInstance.count = 3;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('lots of emails');
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`lots of emails`);
fixture.componentInstance.count = 1;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('one email');
+ expect(fixture.nativeElement.innerHTML).toEqual(`one email`);
fixture.componentInstance.count = 10;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('lots of emails');
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`lots of emails`);
fixture.componentInstance.count = 20;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('lots of emails');
+ expect(fixture.nativeElement.innerHTML)
+ .toEqual(`lots of emails`);
fixture.componentInstance.count = 0;
fixture.detectChanges();
- expect(fixture.nativeElement.innerHTML).toEqual('no email');
+ expect(fixture.nativeElement.innerHTML).toEqual(`no email`);
});
it('projection', () => {
@@ -1159,12 +1175,14 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
const fixture = TestBed.createComponent(App);
fixture.detectChanges();
expect(fixture.debugElement.nativeElement.innerHTML)
- .toContain('ONE
');
+ .toContain(
+ `ONE
`);
fixture.componentRef.instance.count = 2;
fixture.detectChanges();
expect(fixture.debugElement.nativeElement.innerHTML)
- .toContain('OTHER
');
+ .toContain(
+ `OTHER
`);
// destroy component
fixture.componentInstance.condition = false;
@@ -1176,7 +1194,8 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
fixture.componentInstance.count = 1;
fixture.detectChanges();
expect(fixture.debugElement.nativeElement.innerHTML)
- .toContain('ONE
');
+ .toContain(
+ `ONE
`);
});
it('with nested ICU expression and inside a container when creating a view via vcr.createEmbeddedView',
@@ -1247,13 +1266,14 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
dir!.attachEmbeddedView();
fixture.detectChanges();
expect(fixture.debugElement.nativeElement.innerHTML)
- .toBe(
- '2 animals!
');
+ .toBe(`2 animals!
`);
fixture.componentRef.instance.count = 1;
fixture.detectChanges();
expect(fixture.debugElement.nativeElement.innerHTML)
- .toBe('ONE
');
+ .toBe(`ONE
`);
});
it('with nested containers', () => {
@@ -2356,14 +2376,14 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => {
const fixture = TestBed.createComponent(Parent);
fixture.detectChanges();
expect(fixture.nativeElement.innerHTML)
- .toEqual(
- `Contenu enfant et projection depuis Parent
`);
+ .toEqual(`Contenu enfant et projection depuis Parent
`);
fixture.componentRef.instance.name = 'angular';
fixture.detectChanges();
expect(fixture.nativeElement.innerHTML)
- .toEqual(
- `Contenu enfant et projection depuis Angular
`);
+ .toEqual(`Contenu enfant et projection depuis Angular
`);
});
it(`shouldn't project deleted projections in i18n blocks`, () => {
diff --git a/packages/core/test/render3/i18n/i18n_insert_before_index_spec.ts b/packages/core/test/render3/i18n/i18n_insert_before_index_spec.ts
index e0b4b4f582..7817f24003 100644
--- a/packages/core/test/render3/i18n/i18n_insert_before_index_spec.ts
+++ b/packages/core/test/render3/i18n/i18n_insert_before_index_spec.ts
@@ -9,6 +9,7 @@
import {addTNodeAndUpdateInsertBeforeIndex} from '@angular/core/src/render3/i18n/i18n_insert_before_index';
import {createTNode} from '@angular/core/src/render3/instructions/shared';
import {TNode, TNodeType} from '@angular/core/src/render3/interfaces/node';
+import {HEADER_OFFSET} from '@angular/core/src/render3/interfaces/view';
import {matchTNode} from '../matchers';
@@ -29,9 +30,9 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => {
it('should add first node', () => {
const previousTNodes: TNode[] = [];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(21));
+ addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 0));
expect(previousTNodes).toEqual([
- matchTNode({index: 21, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}),
]);
});
@@ -39,14 +40,15 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => {
describe('whose index is greater than those already there', () => {
it('should not update the `insertBeforeIndex` values', () => {
const previousTNodes: TNode[] = [
- tPlaceholderElementNode(21),
- tPlaceholderElementNode(22),
+ tPlaceholderElementNode(HEADER_OFFSET + 0),
+ tPlaceholderElementNode(HEADER_OFFSET + 1),
];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(23));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 2));
expect(previousTNodes).toEqual([
- matchTNode({index: 21, insertBeforeIndex: null}),
- matchTNode({index: 22, insertBeforeIndex: null}),
- matchTNode({index: 23, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: null}),
]);
});
});
@@ -54,44 +56,47 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => {
describe('whose index is smaller than current nodes', () => {
it('should update the previous insertBeforeIndex', () => {
const previousTNodes: TNode[] = [
- tPlaceholderElementNode(22),
- tPlaceholderElementNode(23),
+ tPlaceholderElementNode(HEADER_OFFSET + 1),
+ tPlaceholderElementNode(HEADER_OFFSET + 2),
];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(21));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 0));
expect(previousTNodes).toEqual([
- matchTNode({index: 22, insertBeforeIndex: 21}),
- matchTNode({index: 23, insertBeforeIndex: 21}),
- matchTNode({index: 21, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}),
]);
});
it('should not update the previous insertBeforeIndex if it is already set', () => {
const previousTNodes: TNode[] = [
- tPlaceholderElementNode(23, 22),
- tPlaceholderElementNode(24, 22),
- tPlaceholderElementNode(22),
+ tPlaceholderElementNode(HEADER_OFFSET + 2, HEADER_OFFSET + 1),
+ tPlaceholderElementNode(HEADER_OFFSET + 3, HEADER_OFFSET + 1),
+ tPlaceholderElementNode(HEADER_OFFSET + 1),
];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(21));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 0));
expect(previousTNodes).toEqual([
- matchTNode({index: 23, insertBeforeIndex: 22}),
- matchTNode({index: 24, insertBeforeIndex: 22}),
- matchTNode({index: 22, insertBeforeIndex: 21}),
- matchTNode({index: 21, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 1}),
+ matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: HEADER_OFFSET + 1}),
+ matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}),
]);
});
it('should not update the previous insertBeforeIndex if it is created after', () => {
const previousTNodes: TNode[] = [
- tPlaceholderElementNode(26, 21),
- tPlaceholderElementNode(27, 21),
- tPlaceholderElementNode(21),
+ tPlaceholderElementNode(HEADER_OFFSET + 5, HEADER_OFFSET + 0),
+ tPlaceholderElementNode(HEADER_OFFSET + 6, HEADER_OFFSET + 0),
+ tPlaceholderElementNode(HEADER_OFFSET + 0),
];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(24));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 3));
expect(previousTNodes).toEqual([
- matchTNode({index: 26, insertBeforeIndex: 21}),
- matchTNode({index: 27, insertBeforeIndex: 21}),
- matchTNode({index: 21, insertBeforeIndex: null}),
- matchTNode({index: 24, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 5, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 6, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: null}),
]);
});
});
@@ -101,14 +106,14 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => {
describe('whose index is greater than those already there', () => {
it('should not update the `insertBeforeIndex` values', () => {
const previousTNodes: TNode[] = [
- tPlaceholderElementNode(21),
- tPlaceholderElementNode(22),
+ tPlaceholderElementNode(HEADER_OFFSET + 0),
+ tPlaceholderElementNode(HEADER_OFFSET + 1),
];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(23));
+ addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 2));
expect(previousTNodes).toEqual([
- matchTNode({index: 21, insertBeforeIndex: 23}),
- matchTNode({index: 22, insertBeforeIndex: 23}),
- matchTNode({index: 23, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: HEADER_OFFSET + 2}),
+ matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 2}),
+ matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: null}),
]);
});
});
@@ -116,44 +121,44 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => {
describe('whose index is smaller than current nodes', () => {
it('should update the previous insertBeforeIndex', () => {
const previousTNodes: TNode[] = [
- tPlaceholderElementNode(22),
- tPlaceholderElementNode(23),
+ tPlaceholderElementNode(HEADER_OFFSET + 1),
+ tPlaceholderElementNode(HEADER_OFFSET + 2),
];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(21));
+ addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 0));
expect(previousTNodes).toEqual([
- matchTNode({index: 22, insertBeforeIndex: 21}),
- matchTNode({index: 23, insertBeforeIndex: 21}),
- matchTNode({index: 21, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}),
]);
});
it('should not update the previous insertBeforeIndex if it is already set', () => {
const previousTNodes: TNode[] = [
- tPlaceholderElementNode(23, 22),
- tPlaceholderElementNode(24, 22),
- tPlaceholderElementNode(22),
+ tPlaceholderElementNode(HEADER_OFFSET + 2, HEADER_OFFSET + 1),
+ tPlaceholderElementNode(HEADER_OFFSET + 3, HEADER_OFFSET + 1),
+ tPlaceholderElementNode(HEADER_OFFSET + 1),
];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(21));
+ addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 0));
expect(previousTNodes).toEqual([
- matchTNode({index: 23, insertBeforeIndex: 22}),
- matchTNode({index: 24, insertBeforeIndex: 22}),
- matchTNode({index: 22, insertBeforeIndex: 21}),
- matchTNode({index: 21, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 1}),
+ matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: HEADER_OFFSET + 1}),
+ matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}),
]);
});
it('should not update the previous insertBeforeIndex if it is created after', () => {
const previousTNodes: TNode[] = [
- tPlaceholderElementNode(26, 21),
- tPlaceholderElementNode(27, 21),
- tPlaceholderElementNode(21),
+ tPlaceholderElementNode(HEADER_OFFSET + 5, HEADER_OFFSET + 0),
+ tPlaceholderElementNode(HEADER_OFFSET + 6, HEADER_OFFSET + 0),
+ tPlaceholderElementNode(HEADER_OFFSET + 0),
];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(24));
+ addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 3));
expect(previousTNodes).toEqual([
- matchTNode({index: 26, insertBeforeIndex: 21}),
- matchTNode({index: 27, insertBeforeIndex: 21}),
- matchTNode({index: 21, insertBeforeIndex: 24}),
- matchTNode({index: 24, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 5, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 6, insertBeforeIndex: HEADER_OFFSET + 0}),
+ matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: HEADER_OFFSET + 3}),
+ matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: null}),
]);
});
});
@@ -162,21 +167,27 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => {
describe('scenario', () => {
it('should rearrange the nodes', () => {
const previousTNodes: TNode[] = [];
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(23));
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(29));
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(25));
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(26));
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(30));
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(24));
- addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(28));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 2));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 8));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 4));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 5));
+ addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 9));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 3));
+ addTNodeAndUpdateInsertBeforeIndex(
+ previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 7));
expect(previousTNodes).toEqual([
- matchTNode({index: 23, insertBeforeIndex: 30}),
- matchTNode({index: 29, insertBeforeIndex: 25}),
- matchTNode({index: 25, insertBeforeIndex: 30}),
- matchTNode({index: 26, insertBeforeIndex: 30}),
- matchTNode({index: 30, insertBeforeIndex: null}),
- matchTNode({index: 24, insertBeforeIndex: null}),
- matchTNode({index: 28, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 9}),
+ matchTNode({index: HEADER_OFFSET + 8, insertBeforeIndex: HEADER_OFFSET + 4}),
+ matchTNode({index: HEADER_OFFSET + 4, insertBeforeIndex: HEADER_OFFSET + 9}),
+ matchTNode({index: HEADER_OFFSET + 5, insertBeforeIndex: HEADER_OFFSET + 9}),
+ matchTNode({index: HEADER_OFFSET + 9, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: null}),
+ matchTNode({index: HEADER_OFFSET + 7, insertBeforeIndex: null}),
]);
});
});
diff --git a/packages/core/test/render3/i18n/i18n_parse_spec.ts b/packages/core/test/render3/i18n/i18n_parse_spec.ts
index 41826fbc5e..6408a30495 100644
--- a/packages/core/test/render3/i18n/i18n_parse_spec.ts
+++ b/packages/core/test/render3/i18n/i18n_parse_spec.ts
@@ -11,7 +11,7 @@ import {applyCreateOpCodes} from '@angular/core/src/render3/i18n/i18n_apply';
import {i18nStartFirstCreatePass} from '@angular/core/src/render3/i18n/i18n_parse';
import {getTIcu} from '@angular/core/src/render3/i18n/i18n_util';
import {I18nUpdateOpCodes, IcuType, TI18n} from '@angular/core/src/render3/interfaces/i18n';
-import {HEADER_OFFSET} from '@angular/core/src/render3/interfaces/view';
+import {HEADER_OFFSET, HOST} from '@angular/core/src/render3/interfaces/view';
import {expect} from '@angular/core/testing/src/testing_internal';
import {matchTI18n, matchTIcu} from '../matchers';
import {matchDebug} from '../utils';
@@ -26,8 +26,8 @@ describe('i18n_parse', () => {
const tI18n = toT18n('some text');
expect(tI18n).toEqual(matchTI18n({
create: matchDebug([
- 'lView[23] = document.createText("some text");',
- 'parent.appendChild(lView[23]);',
+ `lView[${HEADER_OFFSET + 2}] = document.createText("some text");`,
+ `parent.appendChild(lView[${HEADER_OFFSET + 2}]);`,
]),
update: [] as unknown as I18nUpdateOpCodes,
}));
@@ -57,30 +57,30 @@ describe('i18n_parse', () => {
}|after`);
expect(tI18n).toEqual(matchTI18n({
create: matchDebug([
- 'lView[23] = document.createText("before|");',
- 'parent.appendChild(lView[23]);',
- 'lView[24] = document.createComment("ICU 21:0");',
- 'parent.appendChild(lView[24]);',
- 'lView[28] = document.createText("|after");',
- 'parent.appendChild(lView[28]);',
+ `lView[${HEADER_OFFSET + 2}] = document.createText("before|");`,
+ `parent.appendChild(lView[${HEADER_OFFSET + 2}]);`,
+ `lView[${HEADER_OFFSET + 3}] = document.createComment("ICU ${HEADER_OFFSET + 0}:0");`,
+ `parent.appendChild(lView[${HEADER_OFFSET + 3}]);`,
+ `lView[${HEADER_OFFSET + 7}] = document.createText("|after");`,
+ `parent.appendChild(lView[${HEADER_OFFSET + 7}]);`,
]),
update: matchDebug([
- 'if (mask & 0b1) { icuSwitchCase(24, `${lView[i-1]}`); }',
+ `if (mask & 0b1) { icuSwitchCase(${HEADER_OFFSET + 3}, \`\${lView[i-1]}\`); }`,
])
}));
- expect(getTIcu(fixture.tView, 24)).toEqual(matchTIcu({
+ expect(getTIcu(fixture.tView, HEADER_OFFSET + 3)).toEqual(matchTIcu({
type: IcuType.select,
- anchorIdx: 24,
- currentCaseLViewIndex: 25,
+ anchorIdx: HEADER_OFFSET + 3,
+ currentCaseLViewIndex: HEADER_OFFSET + 4,
cases: ['A', 'other'],
create: [
matchDebug([
- 'lView[26] = document.createTextNode("caseA")',
- '(lView[0] as Element).appendChild(lView[26])'
+ `lView[${HEADER_OFFSET + 5}] = document.createTextNode("caseA")`,
+ `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 5}])`
]),
matchDebug([
- 'lView[27] = document.createTextNode("otherCase")',
- '(lView[0] as Element).appendChild(lView[27])',
+ `lView[${HEADER_OFFSET + 6}] = document.createTextNode("otherCase")`,
+ `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 6}])`,
])
],
update: [
@@ -88,29 +88,32 @@ describe('i18n_parse', () => {
matchDebug([]),
],
remove: [
- matchDebug(['remove(lView[26])']),
- matchDebug(['remove(lView[27])']),
+ matchDebug([`remove(lView[${HEADER_OFFSET + 5}])`]),
+ matchDebug([`remove(lView[${HEADER_OFFSET + 6}])`]),
],
}));
fixture.apply(() => {
applyCreateOpCodes(fixture.lView, tI18n.create, fixture.host, null);
- expect(fixture.host.innerHTML).toEqual('before||after');
+ expect(fixture.host.innerHTML).toEqual(`before||after`);
});
fixture.apply(() => {
ɵɵi18nExp('A');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
- expect(fixture.host.innerHTML).toEqual('before|caseA|after');
+ ɵɵi18nApply(0);
+ expect(fixture.host.innerHTML)
+ .toEqual(`before|caseA|after`);
});
fixture.apply(() => {
ɵɵi18nExp('x');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
- expect(fixture.host.innerHTML).toEqual('before|otherCase|after');
+ ɵɵi18nApply(0);
+ expect(fixture.host.innerHTML)
+ .toEqual(`before|otherCase|after`);
});
fixture.apply(() => {
ɵɵi18nExp('A');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
- expect(fixture.host.innerHTML).toEqual('before|caseA|after');
+ ɵɵi18nApply(0);
+ expect(fixture.host.innerHTML)
+ .toEqual(`before|caseA|after`);
});
});
@@ -122,23 +125,25 @@ describe('i18n_parse', () => {
}`);
fixture.apply(() => {
applyCreateOpCodes(fixture.lView, tI18n.create, fixture.host, null);
- expect(fixture.host.innerHTML).toEqual('');
+ expect(fixture.host.innerHTML).toEqual(``);
});
fixture.apply(() => {
ɵɵi18nExp('A');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
- expect(fixture.host.innerHTML).toEqual('Hello world!');
+ ɵɵi18nApply(0);
+ expect(fixture.host.innerHTML)
+ .toEqual(`Hello world!`);
});
fixture.apply(() => {
ɵɵi18nExp('x');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
+ ɵɵi18nApply(0);
expect(fixture.host.innerHTML)
- .toEqual('nestedOther
');
+ .toEqual(`nestedOther
`);
});
fixture.apply(() => {
ɵɵi18nExp('A');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
- expect(fixture.host.innerHTML).toEqual('Hello world!');
+ ɵɵi18nApply(0);
+ expect(fixture.host.innerHTML)
+ .toEqual(`Hello world!`);
});
});
@@ -170,32 +175,32 @@ describe('i18n_parse', () => {
}`);
expect(tI18n).toEqual(matchTI18n({
create: matchDebug([
- 'lView[25] = document.createComment("ICU 21:0");',
- 'parent.appendChild(lView[25]);',
+ `lView[${HEADER_OFFSET + 4}] = document.createComment("ICU ${HEADER_OFFSET + 0}:0");`,
+ `parent.appendChild(lView[${HEADER_OFFSET + 4}]);`,
]),
update: matchDebug([
- 'if (mask & 0b1) { icuSwitchCase(25, `${lView[i-1]}`); }',
- 'if (mask & 0b10) { icuSwitchCase(28, `${lView[i-2]}`); }',
- 'if (mask & 0b100) { icuUpdateCase(28); }',
+ `if (mask & 0b1) { icuSwitchCase(${HEADER_OFFSET + 4}, \`\${lView[i-1]}\`); }`,
+ `if (mask & 0b10) { icuSwitchCase(${HEADER_OFFSET + 7}, \`\${lView[i-2]}\`); }`,
+ `if (mask & 0b100) { icuUpdateCase(${HEADER_OFFSET + 7}); }`,
]),
}));
- expect(getTIcu(fixture.tView, 25)).toEqual(matchTIcu({
+ expect(getTIcu(fixture.tView, HEADER_OFFSET + 4)).toEqual(matchTIcu({
type: IcuType.select,
- anchorIdx: 25,
- currentCaseLViewIndex: 26,
+ anchorIdx: HEADER_OFFSET + 4,
+ currentCaseLViewIndex: HEADER_OFFSET + 5,
cases: ['A', 'other'],
create: [
matchDebug([
- 'lView[27] = document.createTextNode("parentA ")',
- '(lView[0] as Element).appendChild(lView[27])',
- 'lView[28] = document.createComment("nested ICU 0")',
- '(lView[0] as Element).appendChild(lView[28])',
- 'lView[32] = document.createTextNode("!")',
- '(lView[0] as Element).appendChild(lView[32])',
+ `lView[${HEADER_OFFSET + 6}] = document.createTextNode("parentA ")`,
+ `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 6}])`,
+ `lView[${HEADER_OFFSET + 7}] = document.createComment("nested ICU 0")`,
+ `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 7}])`,
+ `lView[${HEADER_OFFSET + 11}] = document.createTextNode("!")`,
+ `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 11}])`,
]),
matchDebug([
- 'lView[33] = document.createTextNode("parentOther")',
- '(lView[0] as Element).appendChild(lView[33])',
+ `lView[${HEADER_OFFSET + 12}] = document.createTextNode("parentOther")`,
+ `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 12}])`,
])
],
update: [
@@ -204,76 +209,79 @@ describe('i18n_parse', () => {
],
remove: [
matchDebug([
- 'remove(lView[27])',
- 'removeNestedICU(28)',
- 'remove(lView[28])',
- 'remove(lView[32])',
+ `remove(lView[${HEADER_OFFSET + 6}])`,
+ `removeNestedICU(${HEADER_OFFSET + 7})`,
+ `remove(lView[${HEADER_OFFSET + 7}])`,
+ `remove(lView[${HEADER_OFFSET + 11}])`,
]),
matchDebug([
- 'remove(lView[33])',
+ `remove(lView[${HEADER_OFFSET + 12}])`,
])
],
}));
- expect(getTIcu(fixture.tView, 28)).toEqual(matchTIcu({
+ expect(getTIcu(fixture.tView, HEADER_OFFSET + 7)).toEqual(matchTIcu({
type: IcuType.select,
- anchorIdx: 28,
- currentCaseLViewIndex: 29,
+ anchorIdx: HEADER_OFFSET + 7,
+ currentCaseLViewIndex: HEADER_OFFSET + 8,
cases: ['0', 'other'],
create: [
matchDebug([
- 'lView[30] = document.createTextNode("nested0")',
- '(lView[0] as Element).appendChild(lView[30])'
+ `lView[${HEADER_OFFSET + 9}] = document.createTextNode("nested0")`,
+ `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 9}])`
]),
matchDebug([
- 'lView[31] = document.createTextNode("")',
- '(lView[0] as Element).appendChild(lView[31])',
+ `lView[${HEADER_OFFSET + 10}] = document.createTextNode("")`,
+ `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 10}])`,
])
],
update: [
matchDebug([]),
matchDebug([
- 'if (mask & 0b100) { (lView[31] as Text).textContent = `${lView[i-3]}`; }',
+ `if (mask & 0b100) { (lView[${
+ HEADER_OFFSET + 10}] as Text).textContent = \`\${lView[i-3]}\`; }`,
]),
],
remove: [
- matchDebug(['remove(lView[30])']),
- matchDebug(['remove(lView[31])']),
+ matchDebug([`remove(lView[${HEADER_OFFSET + 9}])`]),
+ matchDebug([`remove(lView[${HEADER_OFFSET + 10}])`]),
],
}));
fixture.apply(() => {
applyCreateOpCodes(fixture.lView, tI18n.create, fixture.host, null);
- expect(fixture.host.innerHTML).toEqual('');
+ expect(fixture.host.innerHTML).toEqual(``);
});
fixture.apply(() => {
ɵɵi18nExp('A');
ɵɵi18nExp('0');
ɵɵi18nExp('value1');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
+ ɵɵi18nApply(0);
expect(fixture.host.innerHTML)
- .toEqual('parentA nested0!');
+ .toEqual(`parentA nested0!`);
});
fixture.apply(() => {
ɵɵi18nExp('A');
ɵɵi18nExp('x');
ɵɵi18nExp('value1');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
- expect(fixture.host.innerHTML).toEqual('parentA value1!');
+ ɵɵi18nApply(0);
+ expect(fixture.host.innerHTML)
+ .toEqual(`parentA value1!`);
});
fixture.apply(() => {
ɵɵi18nExp('x');
ɵɵi18nExp('x');
ɵɵi18nExp('value2');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
- expect(fixture.host.innerHTML).toEqual('parentOther');
+ ɵɵi18nApply(0);
+ expect(fixture.host.innerHTML).toEqual(`parentOther`);
});
fixture.apply(() => {
ɵɵi18nExp('A');
ɵɵi18nExp('A');
ɵɵi18nExp('value2');
- ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20;
- expect(fixture.host.innerHTML).toEqual('parentA value2!');
+ ɵɵi18nApply(0);
+ expect(fixture.host.innerHTML)
+ .toEqual(`parentA value2!`);
});
});
});
diff --git a/packages/core/test/render3/i18n/i18n_spec.ts b/packages/core/test/render3/i18n/i18n_spec.ts
index 70666f4257..2577ffa288 100644
--- a/packages/core/test/render3/i18n/i18n_spec.ts
+++ b/packages/core/test/render3/i18n/i18n_spec.ts
@@ -127,9 +127,8 @@ describe('Runtime i18n', () => {
ɵɵelementEnd();
}, undefined, nbConsts, HEADER_OFFSET + index);
- expect((opCodes as any).update.debug).toEqual([
- 'if (mask & 0b1) { (lView[23] as Text).textContent = `Hello ${lView[i-1]}!`; }'
- ]);
+ expect((opCodes as any).update.debug).toEqual([`if (mask & 0b1) { (lView[${
+ HEADER_OFFSET + 2}] as Text).textContent = \`Hello \${lView[i-1]}!\`; }`]);
expect(opCodes).toEqual({
create: matchDebug([
@@ -137,7 +136,8 @@ describe('Runtime i18n', () => {
`parent.appendChild(lView[${HEADER_OFFSET + 2}]);`,
]),
update: matchDebug([
- 'if (mask & 0b1) { (lView[23] as Text).textContent = `Hello ${lView[i-1]}!`; }',
+ `if (mask & 0b1) { (lView[${
+ HEADER_OFFSET + 2}] as Text).textContent = \`Hello \${lView[i-1]}!\`; }`,
]),
});
});
@@ -158,7 +158,9 @@ describe('Runtime i18n', () => {
`parent.appendChild(lView[${HEADER_OFFSET + 2}]);`,
]),
update: matchDebug([
- 'if (mask & 0b11) { (lView[23] as Text).textContent = `Hello ${lView[i-1]} and ${lView[i-2]}, again ${lView[i-1]}!`; }',
+ `if (mask & 0b11) { (lView[${
+ HEADER_OFFSET +
+ 2}] as Text).textContent = \`Hello \${lView[i-1]} and \${lView[i-2]}, again \${lView[i-1]}!\`; }`,
]),
});
});
@@ -193,7 +195,8 @@ describe('Runtime i18n', () => {
`parent.appendChild(lView[${HEADER_OFFSET + 4}]);`,
]),
update: matchDebug([
- 'if (mask & 0b1) { (lView[24] as Text).textContent = `${lView[i-1]} is rendered as: `; }',
+ `if (mask & 0b1) { (lView[${
+ HEADER_OFFSET + 3}] as Text).textContent = \`\${lView[i-1]} is rendered as: \`; }`,
]),
});
@@ -249,26 +252,26 @@ describe('Runtime i18n', () => {
expect(opCodes).toEqual({
create: matchDebug([
- `lView[${HEADER_OFFSET + 2}] = document.createComment("ICU 22:0");`,
+ `lView[${HEADER_OFFSET + 2}] = document.createComment("ICU ${HEADER_OFFSET + 1}:0");`,
`parent.appendChild(lView[${HEADER_OFFSET + 2}]);`,
]),
update: matchDebug([
- 'if (mask & 0b1) { icuSwitchCase(23, `${lView[i-1]}`); }',
- 'if (mask & 0b1) { icuUpdateCase(23); }',
+ `if (mask & 0b1) { icuSwitchCase(${HEADER_OFFSET + 2}, \`\${lView[i-1]}\`); }`,
+ `if (mask & 0b1) { icuUpdateCase(${HEADER_OFFSET + 2}); }`,
]),
});
- expect(getTIcu(tView, 23)).toEqual({
+ expect(getTIcu(tView, HEADER_OFFSET + 2)).toEqual({
type: 1,
- currentCaseLViewIndex: 24,
- anchorIdx: 23,
+ currentCaseLViewIndex: HEADER_OFFSET + 3,
+ anchorIdx: HEADER_OFFSET + 2,
cases: ['0', '1', 'other'],
create: [
matchDebug([
`lView[${HEADER_OFFSET + 4}] = document.createTextNode("no ")`,
`(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 4}])`,
- 'lView[26] = document.createElement("b")',
+ `lView[${HEADER_OFFSET + 5}] = document.createElement("b")`,
`(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 5}])`,
- '(lView[26] as Element).setAttribute("title", "none")',
+ `(lView[${HEADER_OFFSET + 5}] as Element).setAttribute("title", "none")`,
`lView[${HEADER_OFFSET + 6}] = document.createTextNode("emails")`,
`(lView[${HEADER_OFFSET + 5}] as Element).appendChild(lView[${HEADER_OFFSET + 6}])`,
`lView[${HEADER_OFFSET + 7}] = document.createTextNode("!")`,
@@ -277,41 +280,43 @@ describe('Runtime i18n', () => {
matchDebug([
`lView[${HEADER_OFFSET + 8}] = document.createTextNode("one ")`,
`(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 8}])`,
- 'lView[30] = document.createElement("i")',
+ `lView[${HEADER_OFFSET + 9}] = document.createElement("i")`,
`(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 9}])`,
- 'lView[31] = document.createTextNode("email")',
- '(lView[30] as Element).appendChild(lView[31])',
+ `lView[${HEADER_OFFSET + 10}] = document.createTextNode("email")`,
+ `(lView[${HEADER_OFFSET + 9}] as Element).appendChild(lView[${HEADER_OFFSET + 10}])`,
]),
matchDebug([
- 'lView[32] = document.createTextNode("")',
- '(lView[21] as Element).appendChild(lView[32])',
- 'lView[33] = document.createElement("span")',
- '(lView[21] as Element).appendChild(lView[33])',
- 'lView[34] = document.createTextNode("emails")',
- '(lView[33] as Element).appendChild(lView[34])',
+ `lView[${HEADER_OFFSET + 11}] = document.createTextNode("")`,
+ `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 11}])`,
+ `lView[${HEADER_OFFSET + 12}] = document.createElement("span")`,
+ `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 12}])`,
+ `lView[${HEADER_OFFSET + 13}] = document.createTextNode("emails")`,
+ `(lView[${HEADER_OFFSET + 12}] as Element).appendChild(lView[${HEADER_OFFSET + 13}])`,
]),
],
remove: [
matchDebug([
- 'remove(lView[25])',
- 'remove(lView[26])',
- 'remove(lView[28])',
+ `remove(lView[${HEADER_OFFSET + 4}])`,
+ `remove(lView[${HEADER_OFFSET + 5}])`,
+ `remove(lView[${HEADER_OFFSET + 7}])`,
]),
matchDebug([
- 'remove(lView[29])',
- 'remove(lView[30])',
+ `remove(lView[${HEADER_OFFSET + 8}])`,
+ `remove(lView[${HEADER_OFFSET + 9}])`,
]),
matchDebug([
- 'remove(lView[32])',
- 'remove(lView[33])',
+ `remove(lView[${HEADER_OFFSET + 11}])`,
+ `remove(lView[${HEADER_OFFSET + 12}])`,
]),
],
update: [
matchDebug([]),
matchDebug([]),
matchDebug([
- 'if (mask & 0b1) { (lView[32] as Text).textContent = `${lView[i-1]} `; }',
- 'if (mask & 0b10) { (lView[33] as Element).setAttribute(\'title\', `${lView[i-2]}`); }',
+ `if (mask & 0b1) { (lView[${
+ HEADER_OFFSET + 11}] as Text).textContent = \`\${lView[i-1]} \`; }`,
+ `if (mask & 0b10) { (lView[${
+ HEADER_OFFSET + 12}] as Element).setAttribute('title', \`\${lView[i-2]}\`); }`,
]),
]
});
@@ -336,19 +341,19 @@ describe('Runtime i18n', () => {
expect(opCodes).toEqual({
create: matchDebug([
- `lView[${HEADER_OFFSET + 2}] = document.createComment("ICU 22:0");`,
+ `lView[${HEADER_OFFSET + 2}] = document.createComment("ICU ${HEADER_OFFSET + 1}:0");`,
`parent.appendChild(lView[${HEADER_OFFSET + 2}]);`,
]),
update: matchDebug([
- 'if (mask & 0b1) { icuSwitchCase(23, `${lView[i-1]}`); }',
- 'if (mask & 0b10) { icuSwitchCase(27, `${lView[i-2]}`); }',
- 'if (mask & 0b1) { icuUpdateCase(23); }',
+ `if (mask & 0b1) { icuSwitchCase(${HEADER_OFFSET + 2}, \`\${lView[i-1]}\`); }`,
+ `if (mask & 0b10) { icuSwitchCase(${HEADER_OFFSET + 6}, \`\${lView[i-2]}\`); }`,
+ `if (mask & 0b1) { icuUpdateCase(${HEADER_OFFSET + 2}); }`,
]),
});
- expect(getTIcu(tView, 23)).toEqual({
+ expect(getTIcu(tView, HEADER_OFFSET + 2)).toEqual({
type: 1,
- anchorIdx: 23,
- currentCaseLViewIndex: 24,
+ anchorIdx: HEADER_OFFSET + 2,
+ currentCaseLViewIndex: HEADER_OFFSET + 3,
cases: ['0', 'other'],
create: [
matchDebug([
@@ -358,34 +363,35 @@ describe('Runtime i18n', () => {
matchDebug([
`lView[${HEADER_OFFSET + 5}] = document.createTextNode("")`,
`(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 5}])`,
- 'lView[27] = document.createComment("nested ICU 0")',
+ `lView[${HEADER_OFFSET + 6}] = document.createComment("nested ICU 0")`,
`(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 6}])`,
- 'lView[32] = document.createTextNode("!")',
- '(lView[21] as Element).appendChild(lView[32])',
+ `lView[${HEADER_OFFSET + 11}] = document.createTextNode("!")`,
+ `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 11}])`,
]),
],
update: [
matchDebug([]),
matchDebug([
- 'if (mask & 0b1) { (lView[26] as Text).textContent = `${lView[i-1]} `; }',
+ `if (mask & 0b1) { (lView[${
+ HEADER_OFFSET + 5}] as Text).textContent = \`\${lView[i-1]} \`; }`,
]),
],
remove: [
matchDebug([
- 'remove(lView[25])',
+ `remove(lView[${HEADER_OFFSET + 4}])`,
]),
matchDebug([
- 'remove(lView[26])',
- 'removeNestedICU(27)',
- 'remove(lView[27])',
- 'remove(lView[32])',
+ `remove(lView[${HEADER_OFFSET + 5}])`,
+ `removeNestedICU(${HEADER_OFFSET + 6})`,
+ `remove(lView[${HEADER_OFFSET + 6}])`,
+ `remove(lView[${HEADER_OFFSET + 11}])`,
]),
],
});
- expect(tView.data[27]).toEqual({
+ expect(tView.data[HEADER_OFFSET + 6]).toEqual({
type: 0,
- anchorIdx: 27,
- currentCaseLViewIndex: 28,
+ anchorIdx: HEADER_OFFSET + 6,
+ currentCaseLViewIndex: HEADER_OFFSET + 7,
cases: ['cat', 'dog', 'other'],
create: [
matchDebug([
@@ -397,8 +403,8 @@ describe('Runtime i18n', () => {
`(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 9}])`,
]),
matchDebug([
- 'lView[31] = document.createTextNode("animals")',
- '(lView[21] as Element).appendChild(lView[31])',
+ `lView[${HEADER_OFFSET + 10}] = document.createTextNode("animals")`,
+ `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 10}])`,
]),
],
update: [
@@ -407,9 +413,9 @@ describe('Runtime i18n', () => {
matchDebug([]),
],
remove: [
- matchDebug(['remove(lView[29])']),
- matchDebug(['remove(lView[30])']),
- matchDebug(['remove(lView[31])']),
+ matchDebug([`remove(lView[${HEADER_OFFSET + 8}])`]),
+ matchDebug([`remove(lView[${HEADER_OFFSET + 9}])`]),
+ matchDebug([`remove(lView[${HEADER_OFFSET + 10}])`]),
],
});
});
@@ -428,7 +434,8 @@ describe('Runtime i18n', () => {
}, undefined, nbConsts, HEADER_OFFSET + index);
expect(opCodes).toEqual(matchDebug([
- 'if (mask & 0b1) { (lView[21] as Element).setAttribute(\'title\', `Hello ${lView[i-1]}!`); }',
+ `if (mask & 0b1) { (lView[${
+ HEADER_OFFSET + 0}] as Element).setAttribute('title', \`Hello \$\{lView[i-1]}!\`); }`,
]));
});
@@ -444,7 +451,9 @@ describe('Runtime i18n', () => {
}, undefined, nbConsts, HEADER_OFFSET + index);
expect(opCodes).toEqual(matchDebug([
- 'if (mask & 0b11) { (lView[21] as Element).setAttribute(\'title\', `Hello ${lView[i-1]} and ${lView[i-2]}, again ${lView[i-1]}!`); }',
+ `if (mask & 0b11) { (lView[${
+ HEADER_OFFSET +
+ 0}] as Element).setAttribute('title', \`Hello \$\{lView[i-1]} and \$\{lView[i-2]}, again \$\{lView[i-1]}!\`); }`,
]));
});
@@ -460,8 +469,11 @@ describe('Runtime i18n', () => {
}, undefined, nbConsts, HEADER_OFFSET + index);
expect(opCodes).toEqual(matchDebug([
- 'if (mask & 0b1) { (lView[21] as Element).setAttribute(\'title\', `Hello ${lView[i-1]}!`); }',
- 'if (mask & 0b1) { (lView[21] as Element).setAttribute(\'aria-label\', `Hello ${lView[i-1]}!`); }',
+ `if (mask & 0b1) { (lView[${
+ HEADER_OFFSET + 0}] as Element).setAttribute('title', \`Hello \$\{lView[i-1]}!\`); }`,
+ `if (mask & 0b1) { (lView[${
+ HEADER_OFFSET +
+ 0}] as Element).setAttribute('aria-label', \`Hello \$\{lView[i-1]}!\`); }`,
]));
});
});
@@ -702,8 +714,10 @@ describe('Runtime i18n', () => {
],
}));
expect(ti18n.update).toEqual(matchDebug([
- 'if (mask & 0b1) { (lView[51] as Text).textContent = `${lView[i-1]} `; }',
- 'if (mask & 0b10) { (lView[52] as Text).textContent = `${lView[i-2]}`; }'
+ `if (mask & 0b1) { (lView[${
+ HEADER_OFFSET + 30}] as Text).textContent = \`\${lView[i-1]} \`; }`,
+ `if (mask & 0b10) { (lView[${
+ HEADER_OFFSET + 31}] as Text).textContent = \`\${lView[i-2]}\`; }`
]));
const lViewDebug = fixture.lView.debug!;
expect(lViewDebug.template).toEqual('');
@@ -714,16 +728,16 @@ describe('Runtime i18n', () => {
fixture.tView, 0, fixture.lView, HEADER_OFFSET + 1, 'Hello �*2:1�World�/*2:1�!', -1);
const ti18n = fixture.tView.data[HEADER_OFFSET + 1] as TI18n;
expect(ti18n.create.debug).toEqual([
- 'lView[51] = document.createText("Hello ");',
- 'parent.appendChild(lView[51]);',
- 'lView[52] = document.createText("!");',
- 'parent.appendChild(lView[52]);',
+ `lView[${HEADER_OFFSET + 30}] = document.createText("Hello ");`,
+ `parent.appendChild(lView[${HEADER_OFFSET + 30}]);`,
+ `lView[${HEADER_OFFSET + 31}] = document.createText("!");`,
+ `parent.appendChild(lView[${HEADER_OFFSET + 31}]);`,
]);
// Leave behind `Placeholder` to be picked up by `TNode` creation.
// It should insert itself in front of "!"
expect(fixture.tView.data[HEADER_OFFSET + 2]).toEqual(matchTNode({
type: TNodeType.Placeholder,
- insertBeforeIndex: 52,
+ insertBeforeIndex: HEADER_OFFSET + 31,
}));
});
});
diff --git a/packages/core/test/render3/instructions/lview_debug_spec.ts b/packages/core/test/render3/instructions/lview_debug_spec.ts
index 99b7a06c79..e055c3ec80 100644
--- a/packages/core/test/render3/instructions/lview_debug_spec.ts
+++ b/packages/core/test/render3/instructions/lview_debug_spec.ts
@@ -13,7 +13,7 @@ import {ɵɵelement, ɵɵelementEnd, ɵɵelementStart} from '@angular/core/src/r
import {TNodeDebug} from '@angular/core/src/render3/instructions/lview_debug';
import {createTNode, createTView} from '@angular/core/src/render3/instructions/shared';
import {TNodeType} from '@angular/core/src/render3/interfaces/node';
-import {LView, LViewDebug, TView, TViewType} from '@angular/core/src/render3/interfaces/view';
+import {HEADER_OFFSET, LView, LViewDebug, TView, TViewType} from '@angular/core/src/render3/interfaces/view';
import {enterView, leaveView} from '@angular/core/src/render3/state';
import {insertTStylingBinding} from '@angular/core/src/render3/styling/style_binding_list';
import {getComponentLView} from '@angular/core/src/render3/util/discovery_utils';
@@ -242,7 +242,7 @@ describe('lView_debug', () => {
cumulativeBloom: jasmine.anything(),
providers: [MyChild.ɵdir],
viewProviders: [],
- parentInjectorIndex: 23,
+ parentInjectorIndex: HEADER_OFFSET + 2,
});
});
});