Index: utils/dartdoc/test/dartdoc_tests.dart |
diff --git a/utils/dartdoc/test/dartdoc_tests.dart b/utils/dartdoc/test/dartdoc_tests.dart |
index 2a4103c04272fd23b1af8f96979bda620c543e2b..46d98f5b4826fc4d0c702aa255f91f8b1174e7e5 100644 |
--- a/utils/dartdoc/test/dartdoc_tests.dart |
+++ b/utils/dartdoc/test/dartdoc_tests.dart |
@@ -6,11 +6,18 @@ |
#library('dartdoc_tests'); |
#import('../dartdoc.dart'); |
+#import('../markdown.dart', prefix: 'md'); |
// TODO(rnystrom): Better path to unittest. |
#import('../../../client/testing/unittest/unittest_node.dart'); |
+#import('../../../frog/lang.dart'); |
+#import('../../../frog/file_system_node.dart'); |
main() { |
+ var files = new NodeFileSystem(); |
+ parseOptions('../../frog', [], files); |
+ initializeWorld(files); |
+ |
group('countOccurrences', () { |
test('empty text returns 0', () { |
expect(countOccurrences('', 'needle')).equals(0); |
@@ -109,4 +116,65 @@ main() { |
'../../other/file.html'); |
}); |
}); |
+ |
+ group('name reference', () { |
+ var doc = new Dartdoc(); |
+ doc.document('test/dummy.dart'); |
+ var dummy = world.libraries['test/dummy.dart']; |
+ var klass = dummy.findTypeByName('Class'); |
+ var method = klass.getMember('method'); |
+ |
+ String render(md.Node node) => md.renderToHtml([node]); |
+ |
+ test('to a parameter of the current method', () { |
+ expect(render(doc.resolveNameReference('param', currentMember: method))). |
+ equals('<span class="param">param</span>'); |
+ }); |
+ |
+ test('to a member of the current type', () { |
+ expect(render(doc.resolveNameReference('method', currentType: klass))). |
+ equals('<a href="../../dummy/Class.html#method" class="crossref">' + |
+ 'method</a>'); |
+ }); |
+ |
+ test('to a property with only a getter links to the getter', () { |
+ expect(render(doc.resolveNameReference('getterOnly', |
+ currentType: klass))). |
+ equals('<a href="../../dummy/Class.html#get:getterOnly" ' + |
+ 'class="crossref">getterOnly</a>'); |
+ }); |
+ |
+ test('to a property with only a setter links to the setter', () { |
+ expect(render(doc.resolveNameReference('setterOnly', |
+ currentType: klass))). |
+ equals('<a href="../../dummy/Class.html#set:setterOnly" ' + |
+ 'class="crossref">setterOnly</a>'); |
+ }); |
+ |
+ test('to a property with a getter and setter links to the getter', () { |
+ expect(render(doc.resolveNameReference('getterAndSetter', |
+ currentType: klass))). |
+ equals('<a href="../../dummy/Class.html#get:getterAndSetter" ' + |
+ 'class="crossref">getterAndSetter</a>'); |
+ }); |
+ |
+ test('to a type in the current library', () { |
+ expect(render(doc.resolveNameReference('Class', currentLibrary: dummy))). |
+ equals('<a href="../../dummy/Class.html" class="crossref">Class</a>'); |
+ }); |
+ |
+ test('to a top-level member in the current library', () { |
+ expect(render(doc.resolveNameReference('topLevelMethod', |
+ currentLibrary: dummy))). |
+ equals('<a href="../../dummy.html#topLevelMethod" class="crossref">' + |
+ 'topLevelMethod</a>'); |
+ }); |
+ |
+ test('to an unknown name', () { |
+ expect(render(doc.resolveNameReference('unknownName', |
+ currentLibrary: dummy, currentType: klass, |
+ currentMember: method))). |
+ equals('<code>unknownName</code>'); |
+ }); |
+ }); |
} |