undirected_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright ©2014 The gonum Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package simple
  5. import (
  6. "math"
  7. "testing"
  8. "k8s.io/kubernetes/third_party/forked/gonum/graph"
  9. )
  10. var _ graph.Graph = (*UndirectedGraph)(nil)
  11. func TestAssertMutableNotDirected(t *testing.T) {
  12. var g graph.UndirectedBuilder = NewUndirectedGraph(0, math.Inf(1))
  13. if _, ok := g.(graph.Directed); ok {
  14. t.Fatal("Graph is directed, but a MutableGraph cannot safely be directed!")
  15. }
  16. }
  17. func TestMaxID(t *testing.T) {
  18. g := NewUndirectedGraph(0, math.Inf(1))
  19. nodes := make(map[graph.Node]struct{})
  20. for i := Node(0); i < 3; i++ {
  21. g.AddNode(i)
  22. nodes[i] = struct{}{}
  23. }
  24. g.RemoveNode(Node(0))
  25. delete(nodes, Node(0))
  26. g.RemoveNode(Node(2))
  27. delete(nodes, Node(2))
  28. n := Node(g.NewNodeID())
  29. g.AddNode(n)
  30. if !g.Has(n) {
  31. t.Error("added node does not exist in graph")
  32. }
  33. if _, exists := nodes[n]; exists {
  34. t.Errorf("Created already existing node id: %v", n.ID())
  35. }
  36. }
  37. // Test for issue #123 https://github.com/gonum/graph/issues/123
  38. func TestIssue123UndirectedGraph(t *testing.T) {
  39. defer func() {
  40. if r := recover(); r != nil {
  41. t.Errorf("unexpected panic: %v", r)
  42. }
  43. }()
  44. g := NewUndirectedGraph(0, math.Inf(1))
  45. n0 := Node(g.NewNodeID())
  46. g.AddNode(n0)
  47. n1 := Node(g.NewNodeID())
  48. g.AddNode(n1)
  49. g.RemoveNode(n0)
  50. n2 := Node(g.NewNodeID())
  51. g.AddNode(n2)
  52. }