...

Source file src/oss.terrastruct.com/d2/d2renderers/d2svg/d2svg_test.go

Documentation: oss.terrastruct.com/d2/d2renderers/d2svg

     1  package d2svg
     2  
     3  import (
     4  	"testing"
     5  
     6  	"oss.terrastruct.com/d2/d2target"
     7  )
     8  
     9  func TestSortObjects(t *testing.T) {
    10  	allObjects := []DiagramObject{
    11  		// same zIndex and level, should keep in this order
    12  		d2target.Shape{
    13  			ID:     "0",
    14  			ZIndex: 0,
    15  			Level:  0,
    16  		},
    17  		d2target.Shape{
    18  			ID:     "1",
    19  			ZIndex: 0,
    20  			Level:  0,
    21  		},
    22  		// same zIndex, different level, should be swapped
    23  		d2target.Shape{
    24  			ID:     "2",
    25  			ZIndex: 0,
    26  			Level:  1,
    27  		},
    28  		d2target.Shape{
    29  			ID:     "3",
    30  			ZIndex: 0,
    31  			Level:  0,
    32  		},
    33  		// different zIndex, should come after connections
    34  		d2target.Shape{
    35  			ID:     "4",
    36  			ZIndex: 1,
    37  			Level:  0,
    38  		},
    39  		// connections come after shapes
    40  		d2target.Connection{
    41  			ID:     "5",
    42  			ZIndex: 0,
    43  		},
    44  		d2target.Connection{
    45  			ID:     "6",
    46  			ZIndex: 0,
    47  		},
    48  		// this should be last object
    49  		d2target.Connection{
    50  			ID:     "7",
    51  			ZIndex: 2,
    52  		},
    53  		// this should be the first object
    54  		d2target.Connection{
    55  			ID:     "8",
    56  			ZIndex: -1,
    57  		},
    58  	}
    59  
    60  	expectedOrder := []DiagramObject{
    61  		allObjects[8],
    62  		allObjects[0],
    63  		allObjects[1],
    64  		allObjects[3],
    65  		allObjects[2],
    66  		allObjects[5],
    67  		allObjects[6],
    68  		allObjects[4],
    69  		allObjects[7],
    70  	}
    71  
    72  	sortObjects(allObjects)
    73  
    74  	if len(allObjects) != len(expectedOrder) {
    75  		t.Fatal("number of objects changed while sorting")
    76  	}
    77  
    78  	for i := 0; i < len(allObjects); i++ {
    79  		if allObjects[i].GetID() != expectedOrder[i].GetID() {
    80  			t.Fatalf("object order differs at index %d, got '%s' expected '%s'", i, allObjects[i].GetID(), expectedOrder[i].GetID())
    81  		}
    82  	}
    83  }
    84  

View as plain text