mirror of
https://github.com/gonum/gonum.git
synced 2025-10-23 15:13:31 +08:00
graph/path/internal: move grid graphs into testgraphs
This commit is contained in:

committed by
Dan Kortschak

parent
9b6dcf36f0
commit
a63e6adee3
@@ -10,7 +10,6 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gonum.org/v1/gonum/graph"
|
"gonum.org/v1/gonum/graph"
|
||||||
"gonum.org/v1/gonum/graph/path/internal"
|
|
||||||
"gonum.org/v1/gonum/graph/path/internal/testgraphs"
|
"gonum.org/v1/gonum/graph/path/internal/testgraphs"
|
||||||
"gonum.org/v1/gonum/graph/simple"
|
"gonum.org/v1/gonum/graph/simple"
|
||||||
"gonum.org/v1/gonum/graph/topo"
|
"gonum.org/v1/gonum/graph/topo"
|
||||||
@@ -27,7 +26,7 @@ var aStarTests = []struct {
|
|||||||
{
|
{
|
||||||
name: "simple path",
|
name: "simple path",
|
||||||
g: func() graph.Graph {
|
g: func() graph.Graph {
|
||||||
return internal.NewGridFrom(
|
return testgraphs.NewGridFrom(
|
||||||
"*..*",
|
"*..*",
|
||||||
"**.*",
|
"**.*",
|
||||||
"**.*",
|
"**.*",
|
||||||
@@ -40,20 +39,20 @@ var aStarTests = []struct {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "small open graph",
|
name: "small open graph",
|
||||||
g: internal.NewGrid(3, 3, true),
|
g: testgraphs.NewGrid(3, 3, true),
|
||||||
|
|
||||||
s: 0, t: 8,
|
s: 0, t: 8,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "large open graph",
|
name: "large open graph",
|
||||||
g: internal.NewGrid(1000, 1000, true),
|
g: testgraphs.NewGrid(1000, 1000, true),
|
||||||
|
|
||||||
s: 0, t: 999*1000 + 999,
|
s: 0, t: 999*1000 + 999,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no path",
|
name: "no path",
|
||||||
g: func() graph.Graph {
|
g: func() graph.Graph {
|
||||||
tg := internal.NewGrid(5, 5, true)
|
tg := testgraphs.NewGrid(5, 5, true)
|
||||||
|
|
||||||
// Create a complete "wall" across the middle row.
|
// Create a complete "wall" across the middle row.
|
||||||
tg.Set(2, 0, false)
|
tg.Set(2, 0, false)
|
||||||
@@ -70,7 +69,7 @@ var aStarTests = []struct {
|
|||||||
{
|
{
|
||||||
name: "partially obstructed",
|
name: "partially obstructed",
|
||||||
g: func() graph.Graph {
|
g: func() graph.Graph {
|
||||||
tg := internal.NewGrid(10, 10, true)
|
tg := testgraphs.NewGrid(10, 10, true)
|
||||||
|
|
||||||
// Create a partial "wall" across the middle
|
// Create a partial "wall" across the middle
|
||||||
// row with a gap at the left-hand end.
|
// row with a gap at the left-hand end.
|
||||||
@@ -92,7 +91,7 @@ var aStarTests = []struct {
|
|||||||
{
|
{
|
||||||
name: "partially obstructed with heuristic",
|
name: "partially obstructed with heuristic",
|
||||||
g: func() graph.Graph {
|
g: func() graph.Graph {
|
||||||
tg := internal.NewGrid(10, 10, true)
|
tg := testgraphs.NewGrid(10, 10, true)
|
||||||
|
|
||||||
// Create a partial "wall" across the middle
|
// Create a partial "wall" across the middle
|
||||||
// row with a gap at the left-hand end.
|
// row with a gap at the left-hand end.
|
||||||
|
@@ -15,7 +15,6 @@ import (
|
|||||||
|
|
||||||
"gonum.org/v1/gonum/graph"
|
"gonum.org/v1/gonum/graph"
|
||||||
"gonum.org/v1/gonum/graph/path"
|
"gonum.org/v1/gonum/graph/path"
|
||||||
"gonum.org/v1/gonum/graph/path/internal"
|
|
||||||
"gonum.org/v1/gonum/graph/path/internal/testgraphs"
|
"gonum.org/v1/gonum/graph/path/internal/testgraphs"
|
||||||
"gonum.org/v1/gonum/graph/simple"
|
"gonum.org/v1/gonum/graph/simple"
|
||||||
)
|
)
|
||||||
@@ -88,12 +87,12 @@ func TestDStarLiteNullHeuristic(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var dynamicDStarLiteTests = []struct {
|
var dynamicDStarLiteTests = []struct {
|
||||||
g *internal.Grid
|
g *testgraphs.Grid
|
||||||
radius float64
|
radius float64
|
||||||
all bool
|
all bool
|
||||||
diag, unit bool
|
diag, unit bool
|
||||||
remember []bool
|
remember []bool
|
||||||
modify func(*internal.LimitedVisionGrid)
|
modify func(*testgraphs.LimitedVisionGrid)
|
||||||
|
|
||||||
heuristic func(dx, dy float64) float64
|
heuristic func(dx, dy float64) float64
|
||||||
|
|
||||||
@@ -105,7 +104,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
// This is the example shown in figures 6 and 7 of doi:10.1109/tro.2004.838026.
|
// This is the example shown in figures 6 and 7 of doi:10.1109/tro.2004.838026.
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
"...",
|
"...",
|
||||||
".*.",
|
".*.",
|
||||||
".*.",
|
".*.",
|
||||||
@@ -139,7 +138,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
// may be taken incorrectly at 90° or correctly at 45° because the
|
// may be taken incorrectly at 90° or correctly at 45° because the
|
||||||
// calculated rhs values of 12 and 17 are tied when moving from node
|
// calculated rhs values of 12 and 17 are tied when moving from node
|
||||||
// 16, and the grid is small enough to examine by a dump.
|
// 16, and the grid is small enough to examine by a dump.
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
".....",
|
".....",
|
||||||
"...*.",
|
"...*.",
|
||||||
"**.*.",
|
"**.*.",
|
||||||
@@ -176,7 +175,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
// with the exception that diagonal edge weights are calculated with the hypot
|
// with the exception that diagonal edge weights are calculated with the hypot
|
||||||
// function instead of a step count and only allowing information to be known
|
// function instead of a step count and only allowing information to be known
|
||||||
// from exploration.
|
// from exploration.
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
"..................",
|
"..................",
|
||||||
"..................",
|
"..................",
|
||||||
"..................",
|
"..................",
|
||||||
@@ -239,7 +238,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
// with the exception that diagonal edge weights are calculated with the hypot
|
// with the exception that diagonal edge weights are calculated with the hypot
|
||||||
// function instead of a step count, not closing the exit and only allowing
|
// function instead of a step count, not closing the exit and only allowing
|
||||||
// information to be known from exploration.
|
// information to be known from exploration.
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
"..................",
|
"..................",
|
||||||
"..................",
|
"..................",
|
||||||
"..................",
|
"..................",
|
||||||
@@ -299,7 +298,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
// with the exception that diagonal edge weights are calculated with the hypot
|
// with the exception that diagonal edge weights are calculated with the hypot
|
||||||
// function instead of a step count, the exit is closed at a distance and
|
// function instead of a step count, the exit is closed at a distance and
|
||||||
// information is allowed to be known from exploration.
|
// information is allowed to be known from exploration.
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
"..................",
|
"..................",
|
||||||
"..................",
|
"..................",
|
||||||
"..................",
|
"..................",
|
||||||
@@ -363,7 +362,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
// This is the example shown in figure 2 of doi:10.1109/tro.2004.838026
|
// This is the example shown in figure 2 of doi:10.1109/tro.2004.838026
|
||||||
// with the exception that diagonal edge weights are calculated with the hypot
|
// with the exception that diagonal edge weights are calculated with the hypot
|
||||||
// function instead of a step count.
|
// function instead of a step count.
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
"..................",
|
"..................",
|
||||||
"..................",
|
"..................",
|
||||||
"..................",
|
"..................",
|
||||||
@@ -385,7 +384,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
diag: true,
|
diag: true,
|
||||||
remember: []bool{true},
|
remember: []bool{true},
|
||||||
|
|
||||||
modify: func(l *internal.LimitedVisionGrid) {
|
modify: func(l *testgraphs.LimitedVisionGrid) {
|
||||||
all := l.Grid.AllVisible
|
all := l.Grid.AllVisible
|
||||||
l.Grid.AllVisible = false
|
l.Grid.AllVisible = false
|
||||||
for _, n := range l.Nodes() {
|
for _, n := range l.Nodes() {
|
||||||
@@ -459,7 +458,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
weight: 21.242640687119287,
|
weight: 21.242640687119287,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
"*..*",
|
"*..*",
|
||||||
"**.*",
|
"**.*",
|
||||||
"**.*",
|
"**.*",
|
||||||
@@ -487,7 +486,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
weight: 4,
|
weight: 4,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
"*..*",
|
"*..*",
|
||||||
"**.*",
|
"**.*",
|
||||||
"**.*",
|
"**.*",
|
||||||
@@ -514,7 +513,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
weight: math.Sqrt2 + 2,
|
weight: math.Sqrt2 + 2,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
g: internal.NewGridFrom(
|
g: testgraphs.NewGridFrom(
|
||||||
"...",
|
"...",
|
||||||
".*.",
|
".*.",
|
||||||
".*.",
|
".*.",
|
||||||
@@ -555,7 +554,7 @@ var dynamicDStarLiteTests = []struct {
|
|||||||
func TestDStarLiteDynamic(t *testing.T) {
|
func TestDStarLiteDynamic(t *testing.T) {
|
||||||
for i, test := range dynamicDStarLiteTests {
|
for i, test := range dynamicDStarLiteTests {
|
||||||
for _, remember := range test.remember {
|
for _, remember := range test.remember {
|
||||||
l := &internal.LimitedVisionGrid{
|
l := &testgraphs.LimitedVisionGrid{
|
||||||
Grid: test.g,
|
Grid: test.g,
|
||||||
VisionRadius: test.radius,
|
VisionRadius: test.radius,
|
||||||
Location: test.s,
|
Location: test.s,
|
||||||
|
@@ -11,7 +11,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"text/tabwriter"
|
"text/tabwriter"
|
||||||
|
|
||||||
"gonum.org/v1/gonum/graph/path/internal"
|
"gonum.org/v1/gonum/graph/path/internal/testgraphs"
|
||||||
"gonum.org/v1/gonum/graph/simple"
|
"gonum.org/v1/gonum/graph/simple"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ type dumper struct {
|
|||||||
step int
|
step int
|
||||||
|
|
||||||
dStarLite *DStarLite
|
dStarLite *DStarLite
|
||||||
grid *internal.LimitedVisionGrid
|
grid *testgraphs.LimitedVisionGrid
|
||||||
|
|
||||||
w io.Writer
|
w io.Writer
|
||||||
}
|
}
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
package internal
|
package testgraphs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
@@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
package internal
|
package testgraphs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
@@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
package internal
|
package testgraphs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
@@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
package internal
|
package testgraphs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math"
|
"math"
|
Reference in New Issue
Block a user