This class is designed in a way that guarantees that an instance of the class is a valid fan motif.
TestConstructor() { IVertex oHeadVertex = new Vertex(); IVertex oLeafVertex1 = new Vertex(); IVertex oLeafVertex2 = new Vertex(); FanMotif oFanMotif = new FanMotif( oHeadVertex, new IVertex[] {oLeafVertex1, oLeafVertex2} ); Assert.AreEqual(oHeadVertex, oFanMotif.HeadVertex); Assert.AreEqual(2, oFanMotif.LeafVertices.Length); Assert.AreEqual( oLeafVertex1, oFanMotif.LeafVertices[0] ); Assert.AreEqual( oLeafVertex2, oFanMotif.LeafVertices[1] ); Assert.AreEqual(1.0, oFanMotif.ArcScale); }
TestCollapsedAttributes() { // With head vertex name. IVertex oHeadVertex = new Vertex(); oHeadVertex.Name = "Head"; IVertex oLeafVertex1 = new Vertex(); IVertex oLeafVertex2 = new Vertex(); FanMotif oFanMotif = new FanMotif( oHeadVertex, new IVertex[] {oLeafVertex1, oLeafVertex2} ); String sCollapsedAttributes = oFanMotif.CollapsedAttributes; CollapsedGroupAttributes oCollapsedGroupAttributes = CollapsedGroupAttributes.FromString(sCollapsedAttributes); Assert.AreEqual( CollapsedGroupAttributeValues.FanMotifType, oCollapsedGroupAttributes[CollapsedGroupAttributeKeys.Type] ); Assert.IsTrue( oCollapsedGroupAttributes.ContainsKey( CollapsedGroupAttributeKeys.HeadVertexName) ); Assert.AreEqual( "Head", oCollapsedGroupAttributes[ CollapsedGroupAttributeKeys.HeadVertexName] ); Assert.AreEqual( "2", oCollapsedGroupAttributes[ CollapsedGroupAttributeKeys.LeafVertices] ); Assert.IsTrue( oCollapsedGroupAttributes.ContainsKey( CollapsedGroupAttributeKeys.ArcScale) ); Assert.AreEqual( "1", oCollapsedGroupAttributes[CollapsedGroupAttributeKeys.ArcScale] ); }
TestCollapsedAttributes2() { // Without head vertex name, and with ArcScale set to a non-default // value. IVertex oHeadVertex = new Vertex(); IVertex oLeafVertex1 = new Vertex(); IVertex oLeafVertex2 = new Vertex(); FanMotif oFanMotif = new FanMotif( oHeadVertex, new IVertex[] {oLeafVertex1, oLeafVertex2} ); oFanMotif.ArcScale = 0.5; String sCollapsedAttributes = oFanMotif.CollapsedAttributes; CollapsedGroupAttributes oCollapsedGroupAttributes = CollapsedGroupAttributes.FromString(sCollapsedAttributes); Assert.AreEqual( CollapsedGroupAttributeValues.FanMotifType, oCollapsedGroupAttributes[CollapsedGroupAttributeKeys.Type] ); Assert.IsFalse( oCollapsedGroupAttributes.ContainsKey( CollapsedGroupAttributeKeys.HeadVertexName) ); Assert.AreEqual( "2", oCollapsedGroupAttributes[ CollapsedGroupAttributeKeys.LeafVertices] ); Assert.IsTrue( oCollapsedGroupAttributes.ContainsKey( CollapsedGroupAttributeKeys.ArcScale) ); Assert.AreEqual( "0.5", oCollapsedGroupAttributes[CollapsedGroupAttributeKeys.ArcScale] ); }
TestAllVertices() { IVertex oHeadVertex = new Vertex(); IVertex oLeafVertex1 = new Vertex(); IVertex oLeafVertex2 = new Vertex(); FanMotif oFanMotif = new FanMotif( oHeadVertex, new IVertex[] {oLeafVertex1, oLeafVertex2} ); IVertex[] aoVerticesInMotif = oFanMotif.VerticesInMotif; Assert.AreEqual(2, aoVerticesInMotif.Length); Assert.AreEqual( oHeadVertex, oFanMotif.HeadVertex); Assert.AreEqual( oLeafVertex1, aoVerticesInMotif.Single( oVertex => oVertex == oLeafVertex1) ); Assert.AreEqual( oLeafVertex2, aoVerticesInMotif.Single( oVertex => oVertex == oLeafVertex2) ); }