package relationship_test import ( "testing" r "xyj-figures/pkg/relationship" "github.com/stretchr/testify/assert" ) func TestRelationship_IsSame(t *testing.T) { tests := []struct { name string r r.Relationship other r.Relationship expected bool }{ { name: "Bidirectional relationships with same source and destination", r: r.Relationship{ Src: "A", Dst: "B", Description: "friend", Bidirection: true, }, other: r.Relationship{ Src: "A", Dst: "B", Description: "friend", Bidirection: true, }, expected: true, }, { name: "Bidirectional relationships with swapped source and destination", r: r.Relationship{ Src: "A", Dst: "B", Description: "friend", Bidirection: true, }, other: r.Relationship{ Src: "B", Dst: "A", Description: "friend", Bidirection: true, }, expected: true, }, { name: "Bidirectional relationships with different descriptions", r: r.Relationship{ Src: "A", Dst: "B", Description: "friend", Bidirection: true, }, other: r.Relationship{ Src: "A", Dst: "B", Description: "enemy", Bidirection: true, }, expected: false, }, { name: "Unidirectional relationships with same source and destination", r: r.Relationship{ Src: "A", Dst: "B", Description: "friend", Bidirection: false, }, other: r.Relationship{ Src: "A", Dst: "B", Description: "friend", Bidirection: false, }, expected: true, }, { name: "Unidirectional relationships with swapped source and destination", r: r.Relationship{ Src: "A", Dst: "B", Description: "friend", Bidirection: false, }, other: r.Relationship{ Src: "B", Dst: "A", Description: "friend", Bidirection: false, }, expected: false, }, { name: "Unidirectional relationships with different descriptions", r: r.Relationship{ Src: "A", Dst: "B", Description: "friend", Bidirection: false, }, other: r.Relationship{ Src: "A", Dst: "B", Description: "enemy", Bidirection: false, }, expected: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { assert.Equal(t, tt.expected, tt.r.IsSame(tt.other)) }) } }