fix: Bug showing split for flex while in different mode on same band
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package cat
|
||||
|
||||
import "testing"
|
||||
|
||||
// A genuine split is two same-band slices in the SAME split class (both PHONE or
|
||||
// both CW). Two same-band slices in different modes (SSB + FT8), or in a data
|
||||
// mode (FT8/FT4/RTTY = DIGU/DIGL), must NOT read as split.
|
||||
func TestOperatingSplitMode(t *testing.T) {
|
||||
mk := func(hz int64, mode string, active, tx bool) *flexSlice {
|
||||
return &flexSlice{freqHz: hz, mode: mode, active: active, tx: tx, inUse: true}
|
||||
}
|
||||
cases := []struct {
|
||||
name string
|
||||
slices map[int]*flexSlice
|
||||
wantSplit bool
|
||||
}{
|
||||
{"phone split (both USB)", map[int]*flexSlice{
|
||||
0: mk(14_100_000, "USB", true, false),
|
||||
1: mk(14_200_000, "USB", false, true),
|
||||
}, true},
|
||||
{"CW split (both CW)", map[int]*flexSlice{
|
||||
0: mk(7_010_000, "CW", true, false),
|
||||
1: mk(7_025_000, "CW", false, true),
|
||||
}, true},
|
||||
{"SSB + FT8 same band → not split", map[int]*flexSlice{
|
||||
0: mk(14_100_000, "USB", true, false),
|
||||
1: mk(14_074_000, "DIGU", false, true),
|
||||
}, false},
|
||||
{"both FT8 (DIGU) same band → not split", map[int]*flexSlice{
|
||||
0: mk(14_074_000, "DIGU", true, false),
|
||||
1: mk(14_080_000, "DIGU", false, true),
|
||||
}, false},
|
||||
{"different bands → not split", map[int]*flexSlice{
|
||||
0: mk(14_100_000, "USB", true, false),
|
||||
1: mk(7_100_000, "LSB", false, true),
|
||||
}, false},
|
||||
{"simplex (single slice) → not split", map[int]*flexSlice{
|
||||
0: mk(14_100_000, "USB", true, true),
|
||||
}, false},
|
||||
}
|
||||
for _, c := range cases {
|
||||
f := &Flex{slices: c.slices}
|
||||
_, rx, tx := f.operatingLocked()
|
||||
gotSplit := rx != nil && tx != nil
|
||||
if gotSplit != c.wantSplit {
|
||||
t.Errorf("%s: split=%v, want %v", c.name, gotSplit, c.wantSplit)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user