| package terraform |
| |
| import ( |
| "strings" |
| "testing" |
| |
| "github.com/hashicorp/terraform/internal/dag" |
| ) |
| |
| func TestVertexTransformer_impl(t *testing.T) { |
| var _ GraphTransformer = new(VertexTransformer) |
| } |
| |
| func TestVertexTransformer(t *testing.T) { |
| var g Graph |
| g.Add(1) |
| g.Add(2) |
| g.Add(3) |
| g.Connect(dag.BasicEdge(1, 2)) |
| g.Connect(dag.BasicEdge(2, 3)) |
| |
| { |
| tf := &VertexTransformer{ |
| Transforms: []GraphVertexTransformer{ |
| &testVertexTransform{Source: 2, Target: 42}, |
| }, |
| } |
| if err := tf.Transform(&g); err != nil { |
| t.Fatalf("err: %s", err) |
| } |
| } |
| |
| actual := strings.TrimSpace(g.String()) |
| expected := strings.TrimSpace(testVertexTransformerStr) |
| if actual != expected { |
| t.Fatalf("bad: %s", actual) |
| } |
| } |
| |
| type testVertexTransform struct { |
| Source, Target dag.Vertex |
| } |
| |
| func (t *testVertexTransform) Transform(v dag.Vertex) (dag.Vertex, error) { |
| if t.Source == v { |
| v = t.Target |
| } |
| |
| return v, nil |
| } |
| |
| const testVertexTransformerStr = ` |
| 1 |
| 42 |
| 3 |
| 42 |
| 3 |
| ` |