Skip to content
This repository has been archived by the owner on Feb 4, 2021. It is now read-only.

Commit

Permalink
Yank out redundancy from edge subtype tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
sdboyer committed Aug 8, 2014
1 parent 660389d commit 770fc12
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 181 deletions.
70 changes: 12 additions & 58 deletions spec/suite_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ func (s *DataGraphSuite) TestEachEdge(c *C) {
func (s *DataGraphSuite) TestHasDataEdge(c *C) {
g := s.Factory(GraphFixtures["d-2e3v"])

c.Assert(g.HasDataEdge(GraphFixtures["d-2e3v"].(DataArcList)[0].(DataArc)), Equals, true)
c.Assert(g.HasDataEdge(NewDataEdge(1, 2, "foo")), Equals, true)
c.Assert(g.HasDataEdge(NewDataEdge(2, 1, "foo")), Equals, true) // both directions work
c.Assert(g.HasDataEdge(NewDataEdge(1, 2, "qux")), Equals, false) // wrong data
}

Expand All @@ -50,22 +51,22 @@ func (s *DataDigraphSuite) TestArcSubtypeImplementation(c *C) {
g := s.Factory(GraphFixtures["d-2e3v"]).(DataDigraph)

var hit int // just internal safety check to ensure the fixture is good and hits
var da DataArc
var wa DataArc
g.EachArc(func(e Arc) (terminate bool) {
hit++
c.Assert(e, Implements, &da)
c.Assert(e, Implements, &wa)
return
})

g.EachArcFrom(2, func(e Arc) (terminate bool) {
hit++
c.Assert(e, Implements, &da)
c.Assert(e, Implements, &wa)
return
})

g.EachArcFrom(2, func(e Arc) (terminate bool) {
hit++
c.Assert(e, Implements, &da)
c.Assert(e, Implements, &wa)
return
})

Expand Down Expand Up @@ -95,54 +96,31 @@ func (s *DataEdgeSetMutatorSuite) TestGracefulEmptyVariadics(c *C) {
c.Assert(Size(g), Equals, 0)
}

func (s *DataEdgeSetMutatorSuite) TestAddRemoveHasEdge(c *C) {
func (s *DataEdgeSetMutatorSuite) TestAddRemoveEdge(c *C) {
g := s.Factory(NullGraph)
m := g.(DataEdgeSetMutator)
m.AddEdges(NewDataEdge(1, 2, "foo"))

c.Assert(g.HasEdge(NewEdge(1, 2)), Equals, true)
c.Assert(g.HasEdge(NewEdge(2, 1)), Equals, true)

m.AddEdges(NewDataEdge(1, 2, "foo"))
c.Assert(g.HasDataEdge(NewDataEdge(1, 2, "foo")), Equals, true)
c.Assert(g.HasDataEdge(NewDataEdge(1, 2, "baz")), Equals, false)
c.Assert(g.HasDataEdge(NewDataEdge(2, 1, "foo")), Equals, true)
c.Assert(g.HasDataEdge(NewDataEdge(2, 1, "qux")), Equals, false)

// Now test removal
m.RemoveEdges(NewDataEdge(1, 2, "foo"))
c.Assert(g.HasEdge(NewEdge(1, 2)), Equals, false)
c.Assert(g.HasDataEdge(NewDataEdge(1, 2, "foo")), Equals, false)
}

func (s *DataEdgeSetMutatorSuite) TestMultiAddRemoveHasEdge(c *C) {
func (s *DataEdgeSetMutatorSuite) TestMultiAddRemoveEdge(c *C) {
g := s.Factory(NullGraph)
m := g.(DataEdgeSetMutator)
m.AddEdges(NewDataEdge(1, 2, "foo"), NewDataEdge(2, 3, "bar"))

// Basic edge tests first
// We test both Has*Edge() methods to ensure that adding our known edge fixture type results in the expected behavior.
// Thus, this is not just duplicate testing of the Has*Edge() method.
c.Assert(g.HasEdge(NewEdge(1, 2)), Equals, true)
c.Assert(g.HasEdge(NewEdge(2, 3)), Equals, true)
c.Assert(g.HasEdge(NewEdge(2, 1)), Equals, true) // only if undirected
c.Assert(g.HasEdge(NewEdge(3, 2)), Equals, true) // only if undirected

// Now data edge tests
m.AddEdges(NewDataEdge(1, 2, "foo"), NewDataEdge(2, 3, "bar"))
c.Assert(g.HasDataEdge(NewDataEdge(1, 2, "foo")), Equals, true)
c.Assert(g.HasDataEdge(NewDataEdge(1, 2, "baz")), Equals, false) // wrong data
c.Assert(g.HasDataEdge(NewDataEdge(2, 1, "foo")), Equals, true)
c.Assert(g.HasDataEdge(NewDataEdge(2, 1, "baz")), Equals, false) // wrong data
c.Assert(g.HasDataEdge(NewDataEdge(2, 3, "bar")), Equals, true)
c.Assert(g.HasDataEdge(NewDataEdge(2, 3, "qux")), Equals, false) // wrong data
c.Assert(g.HasDataEdge(NewDataEdge(3, 2, "bar")), Equals, true)
c.Assert(g.HasDataEdge(NewDataEdge(3, 2, "qux")), Equals, false) // wrong data

// Now test removal
m.RemoveEdges(NewDataEdge(1, 2, "foo"), NewDataEdge(2, 3, "bar"))
c.Assert(g.HasDataEdge(NewDataEdge(1, 2, "foo")), Equals, false)
c.Assert(g.HasDataEdge(NewDataEdge(2, 3, "bar")), Equals, false)
c.Assert(g.HasEdge(NewEdge(1, 2)), Equals, false)
c.Assert(g.HasEdge(NewEdge(2, 3)), Equals, false)
}

/* DataArcSetMutatorSuite - tests for mutable data graphs */
Expand Down Expand Up @@ -171,49 +149,25 @@ func (s *DataArcSetMutatorSuite) TestGracefulEmptyVariadics(c *C) {
func (s *DataArcSetMutatorSuite) TestAddRemoveHasArc(c *C) {
g := s.Factory(NullGraph).(DataDigraph)
m := g.(DataArcSetMutator)
m.AddArcs(NewDataArc(1, 2, "foo"))

c.Assert(g.HasArc(NewArc(1, 2)), Equals, true)
c.Assert(g.HasArc(NewArc(2, 1)), Equals, false) // wrong direction

m.AddArcs(NewDataArc(1, 2, "foo"))
c.Assert(g.HasDataArc(NewDataArc(1, 2, "foo")), Equals, true)
c.Assert(g.HasDataArc(NewDataArc(1, 2, "bar")), Equals, false) // wrong data
c.Assert(g.HasDataArc(NewDataArc(2, 1, "foo")), Equals, false) // wrong direction
c.Assert(g.HasDataArc(NewDataArc(2, 1, "bar")), Equals, false) // wrong direction & data

// Now test removal
m.RemoveArcs(NewDataArc(1, 2, "foo"))
c.Assert(g.HasArc(NewArc(1, 2)), Equals, false)
c.Assert(g.HasDataArc(NewDataArc(1, 2, "foo")), Equals, false)
}

func (s *DataArcSetMutatorSuite) TestMultiAddRemoveHasArc(c *C) {
g := s.Factory(NullGraph).(DataDigraph)
m := g.(DataArcSetMutator)
m.AddArcs(NewDataArc(1, 2, "foo"), NewDataArc(2, 3, "bar"))

// Basic edge tests first
// We test both Has*Arc() methods to ensure that adding our known edge fixture type results in the expected behavior.
// Thus, this is not just duplicate testing of the Has*Arc() method.
c.Assert(g.HasArc(NewArc(1, 2)), Equals, true)
c.Assert(g.HasArc(NewArc(2, 3)), Equals, true)
c.Assert(g.HasArc(NewArc(2, 1)), Equals, false)
c.Assert(g.HasArc(NewArc(3, 2)), Equals, false)

// Now data edge tests
m.AddArcs(NewDataArc(1, 2, "foo"), NewDataArc(2, 3, "bar"))
c.Assert(g.HasDataArc(NewDataArc(1, 2, "foo")), Equals, true)
c.Assert(g.HasDataArc(NewDataArc(1, 2, "baz")), Equals, false) // wrong data
c.Assert(g.HasDataArc(NewDataArc(2, 1, "foo")), Equals, false) // wrong direction
c.Assert(g.HasDataArc(NewDataArc(2, 1, "baz")), Equals, false) // wrong direction & data
c.Assert(g.HasDataArc(NewDataArc(2, 3, "bar")), Equals, true)
c.Assert(g.HasDataArc(NewDataArc(2, 3, "qux")), Equals, false) // wrong data
c.Assert(g.HasDataArc(NewDataArc(3, 2, "bar")), Equals, false) // wrong direction
c.Assert(g.HasDataArc(NewDataArc(3, 2, "qux")), Equals, false) // wrong direction & data

// Now test removal
m.RemoveArcs(NewDataArc(1, 2, "foo"), NewDataArc(2, 3, "bar"))
c.Assert(g.HasDataArc(NewDataArc(1, 2, "foo")), Equals, false)
c.Assert(g.HasDataArc(NewDataArc(2, 3, "bar")), Equals, false)
c.Assert(g.HasArc(NewArc(1, 2)), Equals, false)
c.Assert(g.HasArc(NewArc(2, 3)), Equals, false)
}
64 changes: 9 additions & 55 deletions spec/suite_label.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ func (s *LabeledGraphSuite) TestEachEdge(c *C) {
func (s *LabeledGraphSuite) TestHasLabeledEdge(c *C) {
g := s.Factory(GraphFixtures["l-2e3v"])

c.Assert(g.HasLabeledEdge(GraphFixtures["l-2e3v"].(LabeledArcList)[0].(LabeledArc)), Equals, true)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(1, 2, "foo")), Equals, true)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(2, 1, "foo")), Equals, true) // both directions work
c.Assert(g.HasLabeledEdge(NewLabeledEdge(1, 2, "qux")), Equals, false) // wrong label
}

Expand Down Expand Up @@ -95,54 +96,31 @@ func (s *LabeledEdgeSetMutatorSuite) TestGracefulEmptyVariadics(c *C) {
c.Assert(Size(g), Equals, 0)
}

func (s *LabeledEdgeSetMutatorSuite) TestAddRemoveHasEdge(c *C) {
func (s *LabeledEdgeSetMutatorSuite) TestAddRemoveEdge(c *C) {
g := s.Factory(NullGraph)
m := g.(LabeledEdgeSetMutator)
m.AddEdges(NewLabeledEdge(1, 2, "foo"))

c.Assert(g.HasEdge(NewEdge(1, 2)), Equals, true)
c.Assert(g.HasEdge(NewEdge(2, 1)), Equals, true)

m.AddEdges(NewLabeledEdge(1, 2, "foo"))
c.Assert(g.HasLabeledEdge(NewLabeledEdge(1, 2, "foo")), Equals, true)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(1, 2, "baz")), Equals, false)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(2, 1, "foo")), Equals, true)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(2, 1, "qux")), Equals, false)

// Now test removal
m.RemoveEdges(NewLabeledEdge(1, 2, "foo"))
c.Assert(g.HasEdge(NewEdge(1, 2)), Equals, false)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(1, 2, "foo")), Equals, false)
}

func (s *LabeledEdgeSetMutatorSuite) TestMultiAddRemoveHasEdge(c *C) {
func (s *LabeledEdgeSetMutatorSuite) TestMultiAddRemoveEdge(c *C) {
g := s.Factory(NullGraph)
m := g.(LabeledEdgeSetMutator)
m.AddEdges(NewLabeledEdge(1, 2, "foo"), NewLabeledEdge(2, 3, "bar"))

// Basic edge tests first
// We test both Has*Edge() methods to ensure that adding our known edge fixture type results in the expected behavior.
// Thus, this is not just duplicate testing of the Has*Edge() method.
c.Assert(g.HasEdge(NewEdge(1, 2)), Equals, true)
c.Assert(g.HasEdge(NewEdge(2, 3)), Equals, true)
c.Assert(g.HasEdge(NewEdge(2, 1)), Equals, true) // only if undirected
c.Assert(g.HasEdge(NewEdge(3, 2)), Equals, true) // only if undirected

// Now labeled edge tests
m.AddEdges(NewLabeledEdge(1, 2, "foo"), NewLabeledEdge(2, 3, "bar"))
c.Assert(g.HasLabeledEdge(NewLabeledEdge(1, 2, "foo")), Equals, true)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(1, 2, "baz")), Equals, false) // wrong label
c.Assert(g.HasLabeledEdge(NewLabeledEdge(2, 1, "foo")), Equals, true)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(2, 1, "baz")), Equals, false) // wrong label
c.Assert(g.HasLabeledEdge(NewLabeledEdge(2, 3, "bar")), Equals, true)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(2, 3, "qux")), Equals, false) // wrong label
c.Assert(g.HasLabeledEdge(NewLabeledEdge(3, 2, "bar")), Equals, true)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(3, 2, "qux")), Equals, false) // wrong label

// Now test removal
m.RemoveEdges(NewLabeledEdge(1, 2, "foo"), NewLabeledEdge(2, 3, "bar"))
c.Assert(g.HasLabeledEdge(NewLabeledEdge(1, 2, "foo")), Equals, false)
c.Assert(g.HasLabeledEdge(NewLabeledEdge(2, 3, "bar")), Equals, false)
c.Assert(g.HasEdge(NewEdge(1, 2)), Equals, false)
c.Assert(g.HasEdge(NewEdge(2, 3)), Equals, false)
}

/* LabeledArcSetMutatorSuite - tests for mutable labeled graphs */
Expand Down Expand Up @@ -171,49 +149,25 @@ func (s *LabeledArcSetMutatorSuite) TestGracefulEmptyVariadics(c *C) {
func (s *LabeledArcSetMutatorSuite) TestAddRemoveHasArc(c *C) {
g := s.Factory(NullGraph).(LabeledDigraph)
m := g.(LabeledArcSetMutator)
m.AddArcs(NewLabeledArc(1, 2, "foo"))

c.Assert(g.HasArc(NewArc(1, 2)), Equals, true)
c.Assert(g.HasArc(NewArc(2, 1)), Equals, false) // wrong direction

m.AddArcs(NewLabeledArc(1, 2, "foo"))
c.Assert(g.HasLabeledArc(NewLabeledArc(1, 2, "foo")), Equals, true)
c.Assert(g.HasLabeledArc(NewLabeledArc(1, 2, "bar")), Equals, false) // wrong label
c.Assert(g.HasLabeledArc(NewLabeledArc(2, 1, "foo")), Equals, false) // wrong direction
c.Assert(g.HasLabeledArc(NewLabeledArc(2, 1, "bar")), Equals, false) // wrong direction & label
c.Assert(g.HasLabeledArc(NewLabeledArc(1, 2, "qux")), Equals, false) // wrong label

// Now test removal
m.RemoveArcs(NewLabeledArc(1, 2, "foo"))
c.Assert(g.HasArc(NewArc(1, 2)), Equals, false)
c.Assert(g.HasLabeledArc(NewLabeledArc(1, 2, "foo")), Equals, false)
}

func (s *LabeledArcSetMutatorSuite) TestMultiAddRemoveHasArc(c *C) {
g := s.Factory(NullGraph).(LabeledDigraph)
m := g.(LabeledArcSetMutator)
m.AddArcs(NewLabeledArc(1, 2, "foo"), NewLabeledArc(2, 3, "bar"))

// Basic edge tests first
// We test both Has*Arc() methods to ensure that adding our known edge fixture type results in the expected behavior.
// Thus, this is not just duplicate testing of the Has*Arc() method.
c.Assert(g.HasArc(NewArc(1, 2)), Equals, true)
c.Assert(g.HasArc(NewArc(2, 3)), Equals, true)
c.Assert(g.HasArc(NewArc(2, 1)), Equals, false)
c.Assert(g.HasArc(NewArc(3, 2)), Equals, false)

// Now labeled edge tests
m.AddArcs(NewLabeledArc(1, 2, "foo"), NewLabeledArc(2, 3, "bar"))
c.Assert(g.HasLabeledArc(NewLabeledArc(1, 2, "foo")), Equals, true)
c.Assert(g.HasLabeledArc(NewLabeledArc(1, 2, "baz")), Equals, false) // wrong label
c.Assert(g.HasLabeledArc(NewLabeledArc(2, 1, "foo")), Equals, false) // wrong direction
c.Assert(g.HasLabeledArc(NewLabeledArc(2, 1, "baz")), Equals, false) // wrong direction & label
c.Assert(g.HasLabeledArc(NewLabeledArc(2, 3, "bar")), Equals, true)
c.Assert(g.HasLabeledArc(NewLabeledArc(2, 3, "qux")), Equals, false) // wrong label
c.Assert(g.HasLabeledArc(NewLabeledArc(3, 2, "bar")), Equals, false) // wrong direction
c.Assert(g.HasLabeledArc(NewLabeledArc(3, 2, "qux")), Equals, false) // wrong direction & label

// Now test removal
m.RemoveArcs(NewLabeledArc(1, 2, "foo"), NewLabeledArc(2, 3, "bar"))
c.Assert(g.HasLabeledArc(NewLabeledArc(1, 2, "foo")), Equals, false)
c.Assert(g.HasLabeledArc(NewLabeledArc(2, 3, "bar")), Equals, false)
c.Assert(g.HasArc(NewArc(1, 2)), Equals, false)
c.Assert(g.HasArc(NewArc(2, 3)), Equals, false)
}

0 comments on commit 770fc12

Please sign in to comment.