< Summary

Class:PendingMessage
Assembly:bamlab.micromissiles
File(s):/github/workspace/Assets/Scripts/Communication/PendingMessage.cs
Covered lines:0
Uncovered lines:11
Coverable lines:11
Total lines:27
Line coverage:0% (0 of 11)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:6
Method coverage:0% (0 of 6)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PendingMessage(...)0%30500%
CompareTo(...)0%2100%

File(s)

/github/workspace/Assets/Scripts/Communication/PendingMessage.cs

#LineLine coverage
 1// The pending message is the mailbox's internal queue item. It stores the message object and the
 2// scheduled delivery time in simulation seconds. The mailbox dequeues this item once the simulation
 3// time reaches the deliver at time.
 4
 5using System;
 6
 7public readonly struct PendingMessage : IComparable<PendingMessage> {
 08  public Message Message { get; }
 9
 10  // Absolute simulation time in seconds when the mailbox should deliver this message.
 011  public float DeliverAt { get; }
 12
 013  public IAgent Sender => Message?.Sender;
 014  public IAgent Receiver => Message?.Receiver;
 15
 016  public PendingMessage(Message message, float deliverAt) {
 017    if (float.IsNaN(deliverAt) || float.IsInfinity(deliverAt) || deliverAt < 0f) {
 018      throw new ArgumentOutOfRangeException(nameof(deliverAt), deliverAt,
 19                                            "DeliverAt must be finite and non-negative.");
 20    }
 021    Message = message ?? throw new ArgumentNullException(nameof(message));
 022    DeliverAt = deliverAt;
 023  }
 24
 25  // Pending messages are sorted based on the deliver at time.
 026  public int CompareTo(PendingMessage other) => DeliverAt.CompareTo(other.DeliverAt);
 27}