public void AreEqual() { var a = SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08"); var b = SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08"); Assert.IsTrue(a.Equals(b)); Assert.AreNotEqual(a, b); // AreEqual does not work, as SerialMessage does not override Object.Equals }
public void ParseTooLong() { SerialMessage message = SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08-09"); Assert.AreEqual("DEADBEEF", message.Identifier); Assert.AreEqual(1, message.Data.Bytes.First()); Assert.AreEqual(8, message.Data.Bytes.Last()); }
public void AddDifferentIdentifier() { var set = new ObservableSet <SerialMessage>(new SerialMessageSameIdentifier()) { SerialMessage.Parse("DEADBEED|01-02-03-04-05-06-07-08"), SerialMessage.Parse("DEADBEEE|00-00-00-00-00-00-00-00"), SerialMessage.Parse("DEADBEEF|FF-FF-FF-FF-FF-FF-FF-FF") }; Assert.AreEqual(3, set.Count); }
public void AddSameIdentifier() { var set = new ObservableSet <SerialMessage>(new SerialMessageSameIdentifier()) { SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08"), SerialMessage.Parse("DEADBEEF|00-00-00-00-00-00-00-00"), SerialMessage.Parse("DEADBEEF|FF-FF-FF-FF-AA-AA-AA-AA") }; Assert.AreEqual(1, set.Count); Assert.AreEqual(set[0].Data.Bytes.First(), 0xFF); Assert.AreEqual(set[0].Data.Bytes.Last(), 0xAA); }
public void AddMultiple() { var set = new ObservableSet <SerialMessage>(new SerialMessageSameIdentifier()) { SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08"), SerialMessage.Parse("DEADBEEC|01-02-03-04-05-06-07-08"), SerialMessage.Parse("DEADBEED|00-00-00-00-00-00-00-00"), SerialMessage.Parse("DEADBEEF|FF-FF-FF-FF-FF-FF-FF-FF") }; Assert.AreEqual(3, set.Count); Assert.IsFalse(set.Any(x => x.Equals(SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08")))); Assert.IsTrue(set.Any(x => x.Equals(SerialMessage.Parse("DEADBEEF|FF-FF-FF-FF-FF-FF-FF-FF")))); }
private void ReadSerial() { try { serialPort.Open(); } catch (Exception e) { MessageBox.Show($"Failed to open port: {e.Message}", "Serial Inspector"); return; } OnPropertyChanged(nameof(IsRunning)); int errorCount = 0; while (keepRunning && serialPort.IsOpen && errorCount < 50) { try { string line = serialPort.ReadLine(); SerialMessage message = SerialMessage.Parse(line, FirstChunkMath, SecondChunkMath); var addItem = new Action(() => messages.Add(message)); Application.Current?.Dispatcher.Invoke(DispatcherPriority.Background, addItem); } catch (IOException e) { MessageBox.Show($"I/O exception occurred: {e.Message}", "Serial Inspector"); break; } catch (Exception e) { Debug.WriteLine($"An exception occurred: {e.Message}"); ++errorCount; continue; } } serialPort?.Close(); OnPropertyChanged(nameof(IsRunning)); }