Skip to content

Commit 16f67d2

Browse files
committed
update test
1 parent 9adffce commit 16f67d2

File tree

2 files changed

+188
-47
lines changed

2 files changed

+188
-47
lines changed

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 163 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12084,14 +12084,7 @@ class _Renderer_InheritingContainer extends RendererBase<InheritingContainer> {
1208412084
StringSink sink,
1208512085
) {
1208612086
return c.tags.map(
12087-
(e) => renderSimple(
12088-
e,
12089-
ast,
12090-
r.template,
12091-
sink,
12092-
parent: r,
12093-
getters: _invisibleGetters['Tag']!,
12094-
),
12087+
(e) => _render_Tag(e, ast, r.template, sink, parent: r),
1209512088
);
1209612089
},
1209712090
),
@@ -17196,14 +17189,7 @@ class _Renderer_ModelElement extends RendererBase<ModelElement> {
1719617189
StringSink sink,
1719717190
) {
1719817191
return c.tags.map(
17199-
(e) => renderSimple(
17200-
e,
17201-
ast,
17202-
r.template,
17203-
sink,
17204-
parent: r,
17205-
getters: _invisibleGetters['Tag']!,
17206-
),
17192+
(e) => _render_Tag(e, ast, r.template, sink, parent: r),
1720717193
);
1720817194
},
1720917195
),
@@ -21209,6 +21195,167 @@ class _Renderer_String extends RendererBase<String> {
2120921195
}
2121021196
}
2121121197

21198+
void _render_Tag(
21199+
Tag context,
21200+
List<MustachioNode> ast,
21201+
Template template,
21202+
StringSink sink, {
21203+
RendererBase<Object>? parent,
21204+
}) {
21205+
var renderer = _Renderer_Tag(context, parent, template, sink);
21206+
renderer.renderBlock(ast);
21207+
}
21208+
21209+
class _Renderer_Tag extends RendererBase<Tag> {
21210+
static final Map<Type, Object> _propertyMapCache = {};
21211+
static Map<String, Property<CT_>> propertyMap<CT_ extends Tag>() =>
21212+
_propertyMapCache.putIfAbsent(
21213+
CT_,
21214+
() => {
21215+
..._Renderer_Object.propertyMap<CT_>(),
21216+
'description': Property(
21217+
getValue: (CT_ c) => c.description,
21218+
renderVariable:
21219+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
21220+
if (remainingNames.isEmpty) {
21221+
return self.getValue(c).toString();
21222+
}
21223+
var name = remainingNames.first;
21224+
var nextProperty = _Renderer_String.propertyMap()
21225+
.getValue(name);
21226+
return nextProperty.renderVariable(
21227+
self.getValue(c) as String,
21228+
nextProperty,
21229+
[...remainingNames.skip(1)],
21230+
);
21231+
},
21232+
21233+
isNullValue: (CT_ c) => c.description == null,
21234+
21235+
renderValue:
21236+
(
21237+
CT_ c,
21238+
RendererBase<CT_> r,
21239+
List<MustachioNode> ast,
21240+
StringSink sink,
21241+
) {
21242+
_render_String(
21243+
c.description!,
21244+
ast,
21245+
r.template,
21246+
sink,
21247+
parent: r,
21248+
);
21249+
},
21250+
),
21251+
'label': Property(
21252+
getValue: (CT_ c) => c.label,
21253+
renderVariable:
21254+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
21255+
if (remainingNames.isEmpty) {
21256+
return self.getValue(c).toString();
21257+
}
21258+
var name = remainingNames.first;
21259+
var nextProperty = _Renderer_String.propertyMap()
21260+
.getValue(name);
21261+
return nextProperty.renderVariable(
21262+
self.getValue(c) as String,
21263+
nextProperty,
21264+
[...remainingNames.skip(1)],
21265+
);
21266+
},
21267+
21268+
isNullValue: (CT_ c) => false,
21269+
21270+
renderValue:
21271+
(
21272+
CT_ c,
21273+
RendererBase<CT_> r,
21274+
List<MustachioNode> ast,
21275+
StringSink sink,
21276+
) {
21277+
_render_String(c.label, ast, r.template, sink, parent: r);
21278+
},
21279+
),
21280+
'name': Property(
21281+
getValue: (CT_ c) => c.name,
21282+
renderVariable:
21283+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
21284+
if (remainingNames.isEmpty) {
21285+
return self.getValue(c).toString();
21286+
}
21287+
var name = remainingNames.first;
21288+
var nextProperty = _Renderer_String.propertyMap()
21289+
.getValue(name);
21290+
return nextProperty.renderVariable(
21291+
self.getValue(c) as String,
21292+
nextProperty,
21293+
[...remainingNames.skip(1)],
21294+
);
21295+
},
21296+
21297+
isNullValue: (CT_ c) => false,
21298+
21299+
renderValue:
21300+
(
21301+
CT_ c,
21302+
RendererBase<CT_> r,
21303+
List<MustachioNode> ast,
21304+
StringSink sink,
21305+
) {
21306+
_render_String(c.name, ast, r.template, sink, parent: r);
21307+
},
21308+
),
21309+
'url': Property(
21310+
getValue: (CT_ c) => c.url,
21311+
renderVariable:
21312+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
21313+
if (remainingNames.isEmpty) {
21314+
return self.getValue(c).toString();
21315+
}
21316+
var name = remainingNames.first;
21317+
var nextProperty = _Renderer_String.propertyMap()
21318+
.getValue(name);
21319+
return nextProperty.renderVariable(
21320+
self.getValue(c) as String,
21321+
nextProperty,
21322+
[...remainingNames.skip(1)],
21323+
);
21324+
},
21325+
21326+
isNullValue: (CT_ c) => c.url == null,
21327+
21328+
renderValue:
21329+
(
21330+
CT_ c,
21331+
RendererBase<CT_> r,
21332+
List<MustachioNode> ast,
21333+
StringSink sink,
21334+
) {
21335+
_render_String(c.url!, ast, r.template, sink, parent: r);
21336+
},
21337+
),
21338+
},
21339+
)
21340+
as Map<String, Property<CT_>>;
21341+
21342+
_Renderer_Tag(
21343+
Tag context,
21344+
RendererBase<Object>? parent,
21345+
Template template,
21346+
StringSink sink,
21347+
) : super(context, parent, template, sink);
21348+
21349+
@override
21350+
Property<Tag>? getProperty(String key) {
21351+
if (propertyMap<Tag>().containsKey(key)) {
21352+
return propertyMap<Tag>()[key];
21353+
} else {
21354+
return null;
21355+
}
21356+
}
21357+
}
21358+
2121221359
class _Renderer_TemplateData<T extends Documentable>
2121321360
extends RendererBase<TemplateData<T>> {
2121421361
static final Map<Type, Object> _propertyMapCache = {};
@@ -25687,7 +25834,6 @@ const _invisibleGetters = {
2568725834
'variable3',
2568825835
},
2568925836
'Scope': {'hashCode', 'runtimeType'},
25690-
'Tag': {'description', 'hashCode', 'label', 'name', 'runtimeType', 'url'},
2569125837
'TemplateOptions': {
2569225838
'customFooterContent',
2569325839
'customHeaderContent',

test/class_modifiers_test.dart

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,13 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:dartdoc/src/model/model.dart';
5+
import 'package:dartdoc/src/model/tag.dart';
66
import 'package:test/test.dart';
77
import 'package:test_reflective_loader/test_reflective_loader.dart';
88

99
import 'dartdoc_test_base.dart';
1010
import 'src/utils.dart';
1111

12-
extension on InheritingContainer {
13-
String classModifierChips() => tags.map((l) => l.name).join(' ');
14-
}
15-
1612
void main() {
1713
defineReflectiveSuite(() {
1814
if (classModifiersAllowed) {
@@ -62,21 +58,21 @@ base mixin O {}
6258
var Mclass = library.classes.named('M');
6359
var Nmixin = library.mixins.named('N');
6460
var Omixin = library.mixins.named('O');
65-
expect(Aclass.classModifierChips(), equals(''));
66-
expect(Bclass.classModifierChips(), equals('base'));
67-
expect(Cclass.classModifierChips(), equals('interface'));
68-
expect(Dclass.classModifierChips(), equals('final'));
69-
expect(Eclass.classModifierChips(), equals('sealed'));
70-
expect(Fclass.classModifierChips(), equals('abstract'));
71-
expect(Gclass.classModifierChips(), equals('abstract base'));
72-
expect(Hclass.classModifierChips(), equals('abstract interface'));
73-
expect(Iclass.classModifierChips(), equals('abstract final'));
74-
expect(Jclass.classModifierChips(), equals('mixin'));
75-
expect(Kclass.classModifierChips(), equals('base mixin'));
76-
expect(Lclass.classModifierChips(), equals('abstract mixin'));
77-
expect(Mclass.classModifierChips(), equals('abstract base mixin'));
78-
expect(Nmixin.classModifierChips(), equals(''));
79-
expect(Omixin.classModifierChips(), equals('base'));
61+
expect(Aclass.tags, <Tag>[]);
62+
expect(Bclass.tags.map((m) => m.name), ['base']);
63+
expect(Cclass.tags.map((m) => m.name), ['interface']);
64+
expect(Dclass.tags.map((m) => m.name), ['final']);
65+
expect(Eclass.tags.map((m) => m.name), ['sealed']);
66+
expect(Fclass.tags.map((m) => m.name), ['abstract']);
67+
expect(Gclass.tags.map((m) => m.name), ['abstract', 'base']);
68+
expect(Hclass.tags.map((m) => m.name), ['abstract', 'interface']);
69+
expect(Iclass.tags.map((m) => m.name), ['abstract', 'final']);
70+
expect(Jclass.tags.map((m) => m.name), ['mixin']);
71+
expect(Kclass.tags.map((m) => m.name), ['base', 'mixin']);
72+
expect(Lclass.tags.map((m) => m.name), ['abstract', 'mixin']);
73+
expect(Mclass.tags.map((m) => m.name), ['abstract', 'base', 'mixin']);
74+
expect(Nmixin.tags.map((m) => m.name), <Tag>[]);
75+
expect(Omixin.tags.map((m) => m.name), ['base']);
8076
}
8177

8278
void test_abstractSealed() async {
@@ -85,8 +81,7 @@ abstract class A {}
8581
sealed class B extends A {}
8682
''');
8783
var Bclass = library.classes.named('B');
88-
expect(
89-
Bclass.classModifierChips(), equals('sealed')); // *not* sealed abstract
84+
expect(Bclass.tags.map((m) => m.name), ['sealed']); // *not* sealed abstract
9085
}
9186

9287
void test_inferredModifiers() async {
@@ -116,13 +111,13 @@ base class M extends L {}
116111
var Iclass = library.classes.named('I');
117112
var Lclass = library.classes.named('L');
118113
var Mclass = library.classes.named('M');
119-
expect(Bclass.classModifierChips(), equals('sealed')); // *not* sealed base
120-
expect(Cclass.classModifierChips(), equals('base'));
121-
expect(Eclass.classModifierChips(), equals('sealed'));
122-
expect(Fclass.classModifierChips(), equals('interface'));
123-
expect(Hclass.classModifierChips(), equals('sealed'));
124-
expect(Iclass.classModifierChips(), equals('final'));
125-
expect(Lclass.classModifierChips(), equals('sealed'));
126-
expect(Mclass.classModifierChips(), equals('base'));
114+
expect(Bclass.tags.map((m) => m.name), ['sealed']); // *not* sealed base
115+
expect(Cclass.tags.map((m) => m.name), ['base']);
116+
expect(Eclass.tags.map((m) => m.name), ['sealed']);
117+
expect(Fclass.tags.map((m) => m.name), ['interface']);
118+
expect(Hclass.tags.map((m) => m.name), ['sealed']);
119+
expect(Iclass.tags.map((m) => m.name), ['final']);
120+
expect(Lclass.tags.map((m) => m.name), ['sealed']);
121+
expect(Mclass.tags.map((m) => m.name), ['base']);
127122
}
128123
}

0 commit comments

Comments
 (0)