using Nonemm.Core; namespace Nonemm.Core.Tests; public class BandsTests { [Theory] [InlineData(1830, "160M")] [InlineData(3510.5, "80M")] [InlineData(14025, "20M")] [InlineData(28499, "10M")] [InlineData(50110, "6M")] [InlineData(144200, "2M")] public void FrequencyLandsOnItsBand(double kilohertz, string expected) => Assert.Equal(expected, Bands.ForFrequency(Frequency.FromKilohertz(kilohertz))?.Name); [Fact] public void FrequencyOutsideEveryAllocationHasNoBand() => Assert.Null(Bands.ForFrequency(Frequency.FromKilohertz(12000))); /// N1MM buckets by whole megahertz, so a contact made past the edge keeps /// its band instead of losing it. [Theory] [InlineData(14400, "20M")] [InlineData(7305, "40M")] [InlineData(1999.9, "160M")] [InlineData(4100, "80M")] [InlineData(29800, "10M")] [InlineData(21500, "15M")] public void FrequencyPastTheBandEdgeStillCountsAsThatBand(double kilohertz, string expected) => Assert.Equal(expected, Bands.ForFrequency(Frequency.FromKilohertz(kilohertz))?.Name); /// Below 1 MHz every band shares the same megahertz, so only the real edges /// decide. [Theory] [InlineData(137, "2190M")] [InlineData(475, "630M")] public void TheLowFrequencyBandsGoByTheirEdges(double kilohertz, string expected) => Assert.Equal(expected, Bands.ForFrequency(Frequency.FromKilohertz(kilohertz))?.Name); [Fact] public void BroadcastFrequenciesBelowOneMegahertzHaveNoBand() => Assert.Null(Bands.ForFrequency(Frequency.FromKilohertz(900))); [Fact] public void BandEdgesAreIncluded() { Assert.Equal("20M", Bands.ForFrequency(Frequency.FromKilohertz(14000))?.Name); Assert.Equal("20M", Bands.ForFrequency(Frequency.FromKilohertz(14350))?.Name); } [Theory] [InlineData(1.8, "160M")] [InlineData(5, "60M")] [InlineData(76000, "4MM")] public void N1mmBandLabelFindsTheBand(double label, string expected) => Assert.Equal(expected, Bands.ByLabel(label)?.Name); }