Merge: doc: fixed some typos and other misc. corrections
[nit.git] / src / test_model_visitor.nit
index 3569400..9596132 100644 (file)
@@ -26,11 +26,25 @@ class TestModelVisitor
 
        redef fun visit(e) do
                cpt.inc(e.class_name)
+
+               if not e isa Model then
+                       var name = e.full_name
+                       var old = names.get_or_null(name)
+                       if old != null then
+                               names[name + "!CONFLICT!" + old.class_name] = old
+                               name = name + "!CONFLICT!" + e.class_name
+                       end
+                       names[name] = e
+               end
+
                e.visit_all(self)
        end
 
        # Counter of visited entities (by classnames)
        var cpt = new Counter[String]
+
+       # Dictionary of full_names
+       var names = new Map[String, MEntity]
 end
 
 # The body of the specific work.
@@ -41,42 +55,65 @@ do
        var model = modelbuilder.model
 
        print "All entities, including fictive ones:"
-       var v = new TestModelVisitor
-       v.min_visibility = private_visibility
-       v.include_fictive = true
+       var filters = new ModelFilter(private_visibility, accept_fictive = true)
+       var v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
+       var names = v.names
 
        print "All entities:"
-       v = new TestModelVisitor
-       v.min_visibility = private_visibility
+       filters = new ModelFilter(private_visibility)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
        print "\nAll non-private entities:"
-       v = new TestModelVisitor
-       v.min_visibility = protected_visibility
+       filters = new ModelFilter(protected_visibility)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
        print "\nAll documented non-private entities:"
-       v = new TestModelVisitor
-       v.min_visibility = protected_visibility
-       v.include_empty_doc = false
+       filters = new ModelFilter(protected_visibility, accept_empty_doc = false)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
        print "\nAll public entities:"
-       v = new TestModelVisitor
-       v.min_visibility = public_visibility
+       filters = new ModelFilter(public_visibility)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
        print "\nAll documented public entities:"
-       v = new TestModelVisitor
-       v.min_visibility = public_visibility
-       v.include_empty_doc = false
+       filters = new ModelFilter(public_visibility, accept_empty_doc = false)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
+       print "\nNames:"
+       print "\n# Classes of entities"
+       var cpt
+       cpt = new Counter[String]
+       for n, e in names do
+               cpt.inc(e.class_name)
+       end
+       cpt.print_summary
+       cpt.print_elements(10)
+
+       print "\n# Name length of entities"
+       cpt = new Counter[String]
+       for n, e in names do
+               cpt[n] = n.length
+       end
+       cpt.print_summary
+       cpt.print_elements(10)
+
+       print "\n# All entities"
+       for n, e in names do
+               var c = ""
+               var d = e.mdoc_or_fallback
+               if d != null and d.content.not_empty then c = d.content.first
+               print "{n}\t{e.class_name}\t{e.location}\t{c}"
+       end
 end