diff --git a/testdata/dot-ref/Inference.dot b/testdata/dot-ref/Inference.dot new file mode 100644 index 0000000..ed3c012 --- /dev/null +++ b/testdata/dot-ref/Inference.dot @@ -0,0 +1,49 @@ +#!/usr/local/bin/dot +# +# Class diagram +# Generated by UmlGraph version 4.1 (http://www.spinellis.gr/sw/umlgraph) +# + +digraph G { + edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10]; + node [fontname="Helvetica",fontsize=10,shape=record]; + // A + c65 [label="{A\n|first : B\lsecond : B\lthird : C\l|}", fontname="Helvetica", fontcolor="black", fontsize=10.0]; + // B + c66 [label="{B\n||doSomething(b : B, c : C) : A\l}", fontname="Helvetica", fontcolor="black", fontsize=10.0]; + // C + c67 [label="{C\n|collectionOfA : List\\lcollectionOfB : ArrayList\\lmapOfD : Map\\lchilds : C[]\lanOpaqueList : List\<\>\l|}", fontname="Helvetica", fontcolor="black", fontsize=10.0]; + // MyFunnyList + c68 [label="{MyFunnyList\\n|myField : V\l|}", fontname="Helvetica", fontcolor="black", fontsize=10.0]; + // MyList + c69 [label="MyList", fontname="Helvetica", fontcolor="black", fontsize=10.0]; + // D + c70 [label="{D\n|anotherListOfA : MyList\l|}", fontname="Helvetica", fontcolor="black", fontsize=10.0]; + //MyFunnyList extends java.util.ArrayList + c71 -> c68 [dir=back,arrowtail=empty]; + //MyList extends MyFunnyList + c68 -> c69 [dir=back,arrowtail=empty]; + // A depend B + c65 -> c66 [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed]; + // A depend C + c65 -> c67 [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed]; + // B depend A + c66 -> c65 [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed]; + // B depend C + c66 -> c67 [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed]; + // C depend java.util.Map + c67 -> c72 [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed]; + // C depend java.util.ArrayList + c67 -> c71 [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed]; + // C depend java.util.List + c67 -> c73 [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed]; + // D depend MyList + c70 -> c69 [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed]; + // java.util.Map + c72 [label="{Ğinterfaceğ \nMap\\n||size() : int\lisEmpty() : boolean\lcontainsKey(arg0 : Object) : boolean\lcontainsValue(arg0 : Object) : boolean\lget(arg0 : Object) : V\lput(arg0 : K, arg1 : V) : V\lremove(arg0 : Object) : V\lputAll(arg0 : Map\)\lclear()\lkeySet() : Set\\lvalues() : Collection\\lentrySet() : Set\\>\lequals(arg0 : Object) : boolean\lhashCode() : int\l}", fontname="Helvetica-Oblique", fontcolor="black", fontsize=10.0]; + // java.util.ArrayList + c71 [label="{ArrayList\\n|serialVersionUID : long\lelementData : E[]\lsize : int\l|trimToSize()\lensureCapacity(arg0 : int)\lsize() : int\lisEmpty() : boolean\lcontains(arg0 : Object) : boolean\lindexOf(arg0 : Object) : int\llastIndexOf(arg0 : Object) : int\lclone() : Object\ltoArray() : Object[]\ltoArray(arg0 : T[]) : T[]\lget(arg0 : int) : E\lset(arg0 : int, arg1 : E) : E\ladd(arg0 : E) : boolean\ladd(arg0 : int, arg1 : E)\lremove(arg0 : int) : E\lremove(arg0 : Object) : boolean\lfastRemove(arg0 : int)\lclear()\laddAll(arg0 : Collection\) : boolean\laddAll(arg0 : int, arg1 : Collection\) : boolean\lremoveRange(arg0 : int, arg1 : int)\lRangeCheck(arg0 : int)\lwriteObject(arg0 : ObjectOutputStream)\lreadObject(arg0 : ObjectInputStream)\l}", fontname="Helvetica", fontcolor="black", fontsize=10.0]; + // java.util.List + c73 [label="{Ğinterfaceğ \nList\\n||size() : int\lisEmpty() : boolean\lcontains(arg0 : Object) : boolean\literator() : Iterator\\ltoArray() : Object[]\ltoArray(arg0 : T[]) : T[]\ladd(arg0 : E) : boolean\lremove(arg0 : Object) : boolean\lcontainsAll(arg0 : Collection\) : boolean\laddAll(arg0 : Collection\) : boolean\laddAll(arg0 : int, arg1 : Collection\) : boolean\lremoveAll(arg0 : Collection\) : boolean\lretainAll(arg0 : Collection\) : boolean\lclear()\lequals(arg0 : Object) : boolean\lhashCode() : int\lget(arg0 : int) : E\lset(arg0 : int, arg1 : E) : E\ladd(arg0 : int, arg1 : E)\lremove(arg0 : int) : E\lindexOf(arg0 : Object) : int\llastIndexOf(arg0 : Object) : int\llistIterator() : ListIterator\\llistIterator(arg0 : int) : ListIterator\\lsubList(arg0 : int, arg1 : int) : List\\l}", fontname="Helvetica-Oblique", fontcolor="black", fontsize=10.0]; +} + diff --git a/testdata/java/Inference.java b/testdata/java/Inference.java index fa3b21a..1eaf7cd 100644 --- a/testdata/java/Inference.java +++ b/testdata/java/Inference.java @@ -10,10 +10,14 @@ import java.util.Map; * @opt attributes * @opt operations * @opt types + * @opt collpackages java.util.* * @hidden */ class UMLOptions {} +/** + * @opt inferassoctype has + */ class A { B first; B second; @@ -27,7 +31,7 @@ class B { class C { List collectionOfA; ArrayList collectionOfB; - Map mapOfB; + Map mapOfD; C[] childs; List anOpaqueList; } @@ -38,6 +42,9 @@ class MyFunnyList extends ArrayList { class MyList extends MyFunnyList {} +/** + * @opt inferassoctype composed + */ class D { MyList anotherListOfA; } \ No newline at end of file