github.com/opentofu/opentofu@v1.7.1/internal/tofu/transform_vertex_test.go (about) 1 // Copyright (c) The OpenTofu Authors 2 // SPDX-License-Identifier: MPL-2.0 3 // Copyright (c) 2023 HashiCorp, Inc. 4 // SPDX-License-Identifier: MPL-2.0 5 6 package tofu 7 8 import ( 9 "strings" 10 "testing" 11 12 "github.com/opentofu/opentofu/internal/dag" 13 ) 14 15 func TestVertexTransformer_impl(t *testing.T) { 16 var _ GraphTransformer = new(VertexTransformer) 17 } 18 19 func TestVertexTransformer(t *testing.T) { 20 var g Graph 21 g.Add(1) 22 g.Add(2) 23 g.Add(3) 24 g.Connect(dag.BasicEdge(1, 2)) 25 g.Connect(dag.BasicEdge(2, 3)) 26 27 { 28 tf := &VertexTransformer{ 29 Transforms: []GraphVertexTransformer{ 30 &testVertexTransform{Source: 2, Target: 42}, 31 }, 32 } 33 if err := tf.Transform(&g); err != nil { 34 t.Fatalf("err: %s", err) 35 } 36 } 37 38 actual := strings.TrimSpace(g.String()) 39 expected := strings.TrimSpace(testVertexTransformerStr) 40 if actual != expected { 41 t.Fatalf("bad: %s", actual) 42 } 43 } 44 45 type testVertexTransform struct { 46 Source, Target dag.Vertex 47 } 48 49 func (t *testVertexTransform) Transform(v dag.Vertex) (dag.Vertex, error) { 50 if t.Source == v { 51 v = t.Target 52 } 53 54 return v, nil 55 } 56 57 const testVertexTransformerStr = ` 58 1 59 42 60 3 61 42 62 3 63 `