package super_block import ( "testing" ) func TestReplicaPlacementSerialDeserial(t *testing.T) { rp, _ := NewReplicaPlacementFromString("001") newRp, _ := NewReplicaPlacementFromByte(rp.Byte()) if rp.String() != newRp.String() { println("expected:", rp.String(), "actual:", newRp.String()) t.Fail() } } func TestReplicaPlacementHasReplication(t *testing.T) { testCases := []struct { name string replicaPlacement string want bool }{ {"empty replica placement", "", false}, {"no replication", "000", false}, {"same rack replication", "100", true}, {"diff rack replication", "020", true}, {"DC replication", "003", true}, {"full replication", "155", true}, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { rp, err := NewReplicaPlacementFromString(tc.replicaPlacement) if err != nil { t.Errorf("failed to initialize ReplicaPlacement: %v", err) return } if got, want := rp.HasReplication(), tc.want; got != want { t.Errorf("expected %v, got %v", want, got) } }) } }