using Nonemm.Core; namespace Nonemm.Core.Tests; public class BandPlanTests { [Fact] public void TwentyMetresSplitsAtTheCwEdge() { BandSegments segments = Assert.IsType(BandPlan.Default.For(Bands.Band20M)); Assert.Equal(Bands.Band20M.Low, segments.CwLow); Assert.Equal(Frequency.FromKilohertz(14_150), segments.CwHigh); Assert.Equal(Frequency.FromKilohertz(14_150), segments.PhoneLow); Assert.Equal(Bands.Band20M.High, segments.PhoneHigh); Assert.True(segments.HasPhone); Assert.False(segments.HasDigital); } [Fact] public void ThirtyMetresIsAllCw() { BandSegments segments = Assert.IsType(BandPlan.Default.For(Bands.Band30M)); Assert.Equal(Bands.Band30M.High, segments.CwHigh); Assert.False(segments.HasPhone); } /// Nothing is painted for a band with no boundary. [Theory] [InlineData("60M")] [InlineData("70CM")] [InlineData("630M")] public void ABandWithNoBoundaryHasNoSegments(string name) => Assert.Null(BandPlan.Default.For(Bands.Named(name)!)); [Fact] public void ChangingOneBandLeavesTheOthersAlone() { BandPlan changed = BandPlan.Default.With( new BandSegments(Bands.Band20M, Frequency.FromKilohertz(14_100))); Assert.Equal(Frequency.FromKilohertz(14_100), changed.For(Bands.Band20M)!.CwHigh); Assert.Equal( BandPlan.Default.For(Bands.Band40M)!.CwHigh, changed.For(Bands.Band40M)!.CwHigh); Assert.Equal(BandPlan.Default.All.Count, changed.All.Count); } [Fact] public void ADigitalBlockIsThereOnceItHasWidth() { BandSegments segments = new( Bands.Band20M, Frequency.FromKilohertz(14_150), Frequency.FromKilohertz(14_070), Frequency.FromKilohertz(14_099)); Assert.True(segments.HasDigital); } }