func TestMapEdge(t *testing.T) { selector := func(_ report.Report) report.Topology { return report.Topology{ NodeMetadatas: report.NodeMetadatas{ "foo": report.NewNodeMetadata(map[string]string{"id": "foo"}), "bar": report.NewNodeMetadata(map[string]string{"id": "bar"}), }, Adjacency: report.Adjacency{ ">foo": report.MakeIDList("bar"), ">bar": report.MakeIDList("foo"), }, EdgeMetadatas: report.EdgeMetadatas{ "foo|bar": report.EdgeMetadata{WithBytes: true, BytesIngress: 1, BytesEgress: 2}, "bar|foo": report.EdgeMetadata{WithBytes: true, BytesIngress: 3, BytesEgress: 4}, }, } } identity := func(nmd report.NodeMetadata) (render.RenderableNode, bool) { return render.NewRenderableNode(nmd.Metadata["id"], "", "", "", nmd), true } mapper := render.Map{ MapFunc: func(nodes render.RenderableNode) (render.RenderableNode, bool) { return render.RenderableNode{ID: "_" + nodes.ID}, true }, Renderer: render.LeafMap{ Selector: selector, Mapper: identity, Pseudo: nil, }, } want := render.AggregateMetadata{ render.KeyBytesIngress: 1, render.KeyBytesEgress: 2, } have := mapper.AggregateMetadata(report.MakeReport(), "_foo", "_bar") if !reflect.DeepEqual(want, have) { t.Errorf("want %+v, have %+v", want, have) } }