Esempio n. 1
0
        public void CurrentInformation_Cache()
        {
            var stream = new TestStream();

            using var device = new CyberCard(stream);

            // we have data
            stream.SetupRead(Encoding.ASCII.GetBytes("#I121.0O121.0L042B088F060.1R073S\x80\x84\x90\x80\x80\r"));
            Assert.Equal(121, device.GetInputVoltage());
            Assert.Equal(121, device.GetOutputVoltage());
            Assert.Equal(60.1, device.GetFrequency());
            Assert.Equal(0.42, device.GetLoadPercentage());
            Assert.Equal(0.88, device.GetBatteryPercentage());
            Assert.Equal(73, device.GetBatteryRuntime());
            Assert.Equal("D\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // check we tried only once

            // subsequent read goes from cache
            Assert.Equal(121, device.GetInputVoltage());
            Assert.Equal(121, device.GetOutputVoltage());
            Assert.Equal(60.1, device.GetFrequency());
            Assert.Equal(0.42, device.GetLoadPercentage());
            Assert.Equal(0.88, device.GetBatteryPercentage());
            Assert.Equal(73, device.GetBatteryRuntime());
            Assert.Equal("D\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // no new reads

            // expire cache
            Thread.Sleep(1000);
            Assert.Null(device.GetInputVoltage());
            Assert.Null(device.GetOutputVoltage());
            Assert.Null(device.GetFrequency());
            Assert.Null(device.GetLoadPercentage());
            Assert.Null(device.GetBatteryPercentage());
            Assert.Null(device.GetBatteryRuntime());
            Assert.Equal("D\rD\rD\rD\rD\rD\rD\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // cache failure causes a new read every time

            // new data
            stream.SetupRead(Encoding.ASCII.GetBytes("#I121.4O122L41B087F060.4R033S\x80\x84\x90\x80\x80\r"));
            Assert.Equal(121.4, device.GetInputVoltage());
            Assert.Equal(122, device.GetOutputVoltage());
            Assert.Equal(60.4, device.GetFrequency());
            Assert.Equal(0.41, device.GetLoadPercentage());
            Assert.Equal(0.87, device.GetBatteryPercentage());
            Assert.Equal(33, device.GetBatteryRuntime());
            Assert.Equal("D\rD\rD\rD\rD\rD\rD\rD\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // only one new read once we have data

            // subsequent read goes from cache
            Assert.Equal(121.4, device.GetInputVoltage());
            Assert.Equal(122, device.GetOutputVoltage());
            Assert.Equal(60.4, device.GetFrequency());
            Assert.Equal(0.41, device.GetLoadPercentage());
            Assert.Equal(0.87, device.GetBatteryPercentage());
            Assert.Equal(33, device.GetBatteryRuntime());
            Assert.Equal("D\rD\rD\rD\rD\rD\rD\rD\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // no new reads
        }
Esempio n. 2
0
        public void Alarm()
        {
            var stream = new TestStream();

            using var device = new CyberCard(stream);

            // enable
            device.AlarmDisable();
            Assert.Equal("C7:0\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));

            // enable
            device.AlarmEnable();
            Assert.Equal("C7:0\rC7:1\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));
        }
Esempio n. 3
0
        public void CurrentInformation_Flags()
        {
            var stream = new TestStream();

            using var device = new CyberCard(stream);

            // survive without data
            Assert.Null(device.IsPendingPowerOn());
            Assert.Null(device.IsPendingPowerOff());
            Assert.Null(device.IsTestInProgress());
            Assert.Null(device.IsAlarmActive());
            Assert.Null(device.IsUsingBattery());
            Assert.Null(device.IsBatteryLow());
            Assert.Null(device.IsBatteryCharging());
            Assert.Null(device.IsBatteryFull());
            Assert.Null(device.IsPoweredOff());
            Assert.Null(device.IsPoweredOn());
            Assert.Equal("D\rD\rD\rD\rD\rD\rD\rD\rD\rD\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // check we tried for each

            // now we have data
            stream.SetupRead(Encoding.Latin1.GetBytes("#I121.0O121.0L042B088F060.1R073S\x80\x84\x90\x80\x80\r"));
            Assert.False(device.IsPendingPowerOn());
            Assert.False(device.IsPendingPowerOff());
            Assert.False(device.IsTestInProgress());
            Assert.False(device.IsAlarmActive());
            Assert.False(device.IsUsingBattery());
            Assert.False(device.IsBatteryLow());
            Assert.True(device.IsBatteryCharging());
            Assert.False(device.IsBatteryFull());
            Assert.False(device.IsPoweredOff());
            Assert.True(device.IsPoweredOn());
            Assert.Equal("D\rD\rD\rD\rD\rD\rD\rD\rD\rD\rD\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // check we tried only once more

            // subsequent read goes from cache
            Assert.False(device.IsPendingPowerOn());
            Assert.False(device.IsPendingPowerOff());
            Assert.False(device.IsTestInProgress());
            Assert.False(device.IsAlarmActive());
            Assert.False(device.IsUsingBattery());
            Assert.False(device.IsBatteryLow());
            Assert.True(device.IsBatteryCharging());
            Assert.False(device.IsBatteryFull());
            Assert.False(device.IsPoweredOff());
            Assert.True(device.IsPoweredOn());
            Assert.Equal("D\rD\rD\rD\rD\rD\rD\rD\rD\rD\rD\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // no new reads

            // wait for cache to expire
            Thread.Sleep(1000);
            stream.SetupRead(Encoding.Latin1.GetBytes("#I000.0O120.0L000B100F060.1R084S\xc0\x81\x88\x80\x80\r"));
            Assert.False(device.IsPendingPowerOn());
            Assert.False(device.IsPendingPowerOff());
            Assert.False(device.IsTestInProgress());
            Assert.False(device.IsAlarmActive());
            Assert.True(device.IsUsingBattery());
            Assert.False(device.IsBatteryLow());
            Assert.False(device.IsBatteryCharging());
            Assert.False(device.IsBatteryFull());
            Assert.False(device.IsPoweredOff());
            Assert.True(device.IsPoweredOn());
            Assert.Equal("D\rD\rD\rD\rD\rD\rD\rD\rD\rD\rD\rD\r", Encoding.ASCII.GetString(stream.ToWrittenArray()));  // check we tried only once more
        }