public void IsEquivalentTo_ForBothNull_ReturnsFalse(
     DeviceComparer sut)
 {
     sut.IsEquivalentTo(null,
                        null)
     .Should()
     .BeFalse();
 }
 public void Equals_ForBothNull_ReturnsFalse(
     DeviceComparer sut)
 {
     sut.Equals(null,
                null)
     .Should()
     .BeFalse();
 }
Beispiel #3
0
        public void Initialize()
        {
            var dateTimeOffset = DateTimeOffset.Parse("2/10/2007 1:02:03 PM -7:30");

            _broadcastTime = new DateTimeOffsetWrapper(dateTimeOffset);

            _comparer = new DeviceComparer();
        }
Beispiel #4
0
        public void Initialize( )
        {
            var dateTimeOffset = DateTimeOffset.Parse("2007-10-02T13:02:03.0000000-07:30");

            _broadcastTime = new DateTimeOffsetWrapper(dateTimeOffset);

            _comparer = new DeviceComparer( );
        }
 public void Equals_ForTheSameDevice_ReturnsTrue(
     DeviceComparer sut,
     IDevice deviceA)
 {
     sut.Equals(deviceA,
                deviceA)
     .Should()
     .BeTrue();
 }
 public void IsEquivalentTo_ForSameDevice_ReturnsTrue(
     DeviceComparer sut,
     IDevice device)
 {
     sut.IsEquivalentTo(device,
                        device)
     .Should()
     .BeTrue();
 }
 public void Equals_ForDeviceBIsNull_ReturnsFalse(
     DeviceComparer sut,
     IDevice device)
 {
     sut.Equals(device,
                null)
     .Should()
     .BeFalse();
 }
 public void IsEquivalentTo_ForDeviceBIsNull_ReturnsFalse(
     DeviceComparer sut,
     IDevice device)
 {
     sut.IsEquivalentTo(device,
                        null)
     .Should()
     .BeFalse();
 }
Beispiel #9
0
        public void AddOrUpdateDevice_ForNewDeviceAdded_DeviceAdded(
            Devices sut,
            IDevice device,
            DeviceComparer comparer)
        {
            sut.AddOrUpdateDevice(device);

            sut.DiscoveredDevices
            .Should()
            .ContainSingle(x => comparer.Equals(x, device));
        }
Beispiel #10
0
        public void Remove_ForExistingDevice_RemovesDevice(
            Devices sut,
            IDevice device,
            DeviceComparer comparer)
        {
            sut.AddOrUpdateDevice(device);

            sut.RemoveDevice(device);

            sut.DiscoveredDevices
            .Should()
            .NotContain(x => comparer.Equals(x, device));
        }
        public void IsEquivalentTo_For2DeviceDifferentBroadcastTime_ReturnsTrue(
            DeviceComparer sut,
            IDevice deviceA)
        {
            var deviceB = new Device(new DateTimeOffsetWrapper(),
                                     deviceA.Address,
                                     deviceA.Name,
                                     deviceA.RawSignalStrengthInDBm);

            sut.IsEquivalentTo(deviceA,
                               deviceB)
            .Should()
            .BeTrue();
        }
        public void IsEquivalentTo_For2DeviceDifferentName_ReturnsTrue(
            DeviceComparer sut,
            IDevice deviceA)
        {
            var deviceB = new Device(deviceA.BroadcastTime,
                                     deviceA.Address,
                                     "Other Name",
                                     deviceA.RawSignalStrengthInDBm);

            sut.IsEquivalentTo(deviceA,
                               deviceB)
            .Should()
            .BeTrue();
        }
        public void Equals_For2DeviceDifferentName_ReturnsFalse(
            DeviceComparer sut,
            IDevice deviceA)
        {
            var deviceB = new Device(deviceA.BroadcastTime,
                                     deviceA.Address,
                                     "Other Name",
                                     deviceA.RawSignalStrengthInDBm);

            sut.Equals(deviceA,
                       deviceB)
            .Should()
            .BeFalse();
        }
Beispiel #14
0
        public void TryGetDevice_ForExistingDevice_ReturnsDevice(
            Devices sut,
            IDevice device,
            DeviceComparer comparer)
        {
            sut.AddOrUpdateDevice(device);

            sut.TryGetDevice(device.Address,
                             out var actual);

            comparer.Equals(actual,
                            device)
            .Should( )
            .BeTrue( );
        }
Beispiel #15
0
        public void AddOrUpdateDevice_ForSameDeviceAddedTwice_UpdatesDevice(
            Devices sut,
            IDevice device1,
            IDevice device2,
            DeviceComparer comparer)
        {
            device2.Address
            .Returns(device1.Address);

            sut.AddOrUpdateDevice(device1);
            sut.AddOrUpdateDevice(device2);

            sut.DiscoveredDevices
            .Should()
            .ContainSingle(x => comparer.Equals(x, device2));
        }
        public void IsEquivalentTo_For2DeviceRawSignalStrengthInDBm_ReturnsTrue(
            DeviceComparer sut,
            IDevice deviceA)
        {
            deviceA.RawSignalStrengthInDBm
            .Returns((short)-1);

            var deviceB = new Device(deviceA.BroadcastTime,
                                     deviceA.Address,
                                     deviceA.Name,
                                     0);

            sut.IsEquivalentTo(deviceA,
                               deviceB)
            .Should()
            .BeTrue();
        }
        public void Equals_For2DevicesDifferentAddress_ReturnsFalse(
            DeviceComparer sut,
            IDevice deviceA)
        {
            deviceA.Address
            .Returns(0ul);

            var deviceB = new Device(deviceA.BroadcastTime,
                                     1ul,
                                     deviceA.Name,
                                     deviceA.RawSignalStrengthInDBm);

            sut.Equals(deviceA,
                       deviceB)
            .Should()
            .BeFalse();
        }
Beispiel #18
0
        public void AddOrUpdateDevice_ForTwoNewDevicesAdded_DevicesAdded(
            Devices sut,
            IDevice device1,
            IDevice device2,
            DeviceComparer comparer)
        {
            sut.AddOrUpdateDevice(device1);
            sut.AddOrUpdateDevice(device2);

            using var scope = new AssertionScope();

            sut.DiscoveredDevices
            .Should()
            .ContainSingle(x => comparer.Equals(x, device1));

            sut.DiscoveredDevices
            .Should()
            .ContainSingle(x => comparer.Equals(x, device2));
        }
Beispiel #19
0
        public void Remove_ForExistingDevice_DoesNotRemovesOtherDevice(
            Devices sut,
            IDevice device1,
            IDevice device2,
            DeviceComparer comparer)
        {
            sut.AddOrUpdateDevice(device1);
            sut.AddOrUpdateDevice(device2);

            sut.RemoveDevice(device1);

            using var scope = new AssertionScope();

            sut.DiscoveredDevices
            .Should()
            .NotContain(x => comparer.Equals(x, device1));

            sut.DiscoveredDevices
            .Should()
            .ContainSingle(x => comparer.Equals(x, device2));
        }
Beispiel #20
0
        public void AddOrUpdateDevice_ForDeviceWithEmptyName_UpdatesDeviceName(
            Devices sut,
            IDevice device1,
            IDevice device2,
            DeviceComparer comparer)
        {
            device1.Name
            .Returns(string.Empty);

            var address = device1.Address;

            device2.Address
            .Returns(address);

            sut.AddOrUpdateDevice(device1);
            sut.AddOrUpdateDevice(device2);

            sut.DiscoveredDevices
            .Should()
            .ContainSingle(x => comparer.Equals(x, device2));
        }
Beispiel #21
0
        private void updateDeviceList()
        {
            string search = searchTextBox.Text.ToLower();

            devicesPanel.SuspendLayout();

            // Untag all devices
            foreach (Control c in devicesPanel.Controls)
            {
                if (c.GetType() == typeof(DeviceUserControl))
                {
                    ((DeviceUserControl)c).present = false;
                }
            }

            /*
             * lock (meshcentral.nodes)
             * {
             *  // Add any missing devices
             *  ArrayList controlsToAdd = new ArrayList();
             *  foreach (MeshClass mesh in meshcentral.meshes.Values)
             *  {
             *      if (mesh.type == 2)
             *      {
             *          foreach (NodeClass node in meshcentral.nodes.Values)
             *          {
             *              if ((node.control == null) && (node.meshid == mesh.meshid))
             *              {
             *                  // Add a new device
             *                  DeviceUserControl device = new DeviceUserControl();
             *                  device.mesh = mesh;
             *                  device.node = node;
             *                  device.parent = this;
             *                  device.Dock = DockStyle.Top;
             *                  device.present = true;
             *                  node.control = device;
             *                  device.UpdateInfo();
             *                  device.Visible = (search == "") || (node.name.ToLower().IndexOf(search) >= 0);
             *                  controlsToAdd.Add(device);
             *              }
             *              else
             *              {
             *                  // Tag the device as present
             *                  if (node.control != null)
             *                  {
             *                      node.control.present = true;
             *                      node.control.UpdateInfo();
             *                  }
             *              }
             *          }
             *      }
             *  }
             *
             *  // Add all controls at once to make it fast.
             *  if (controlsToAdd.Count > 0) { devicesPanel.Controls.AddRange((DeviceUserControl[])controlsToAdd.ToArray(typeof(DeviceUserControl))); }
             * }
             */

            ArrayList controlsToAdd = new ArrayList();

            if (meshcentral.nodes != null)
            {
                foreach (NodeClass node in meshcentral.nodes.Values)
                {
                    if (node.agentid == -1)
                    {
                        continue;
                    }
                    if (node.control == null)
                    {
                        // Add a new device
                        DeviceUserControl device = new DeviceUserControl();
                        if ((node.meshid != null) && meshcentral.meshes.ContainsKey(node.meshid))
                        {
                            device.mesh = (MeshClass)meshcentral.meshes[node.meshid];
                        }
                        device.node    = node;
                        device.parent  = this;
                        device.Dock    = DockStyle.Top;
                        device.present = true;
                        node.control   = device;
                        device.UpdateInfo();
                        device.Visible = (search == "") || (node.name.ToLower().IndexOf(search) >= 0);
                        controlsToAdd.Add(device);
                    }
                    else
                    {
                        // Tag the device as present
                        if (node.control != null)
                        {
                            node.control.present = true;
                            node.control.UpdateInfo();
                        }
                    }
                }
            }
            // Add all controls at once to make it fast.
            if (controlsToAdd.Count > 0)
            {
                devicesPanel.Controls.AddRange((DeviceUserControl[])controlsToAdd.ToArray(typeof(DeviceUserControl)));
            }

            // Clear all untagged devices
            bool removed;

            do
            {
                removed = false;
                foreach (Control c in devicesPanel.Controls)
                {
                    if ((c.GetType() == typeof(DeviceUserControl)) && ((DeviceUserControl)c).present == false)
                    {
                        devicesPanel.Controls.Remove(c); c.Dispose(); removed = true;
                    }
                }
            } while (removed == true);

            // Filter devices
            int visibleDevices = 0;

            foreach (Control c in devicesPanel.Controls)
            {
                if (c.GetType() == typeof(DeviceUserControl))
                {
                    NodeClass n           = ((DeviceUserControl)c).node;
                    bool      connVisible = ((showOfflineDevicesToolStripMenuItem.Checked) || ((n.conn & 1) != 0));
                    if ((search == "") || (n.name.ToLower().IndexOf(search) >= 0) || (showGroupNamesToolStripMenuItem.Checked && (((DeviceUserControl)c).mesh.name.ToLower().IndexOf(search) >= 0)))
                    {
                        c.Visible = connVisible;
                        visibleDevices++;
                    }
                    else
                    {
                        c.Visible = false;
                    }
                }
            }

            // Sort devices
            ArrayList sortlist = new ArrayList();

            foreach (Control c in devicesPanel.Controls)
            {
                if (c.GetType() == typeof(DeviceUserControl))
                {
                    sortlist.Add(c);
                }
            }
            if (sortByNameToolStripMenuItem.Checked)
            {
                DeviceComparer comp = new DeviceComparer();
                sortlist.Sort(comp);
            }
            else
            {
                DeviceGroupComparer comp = new DeviceGroupComparer();
                sortlist.Sort(comp);
            }
            remoteAllDeviceControls();
            devicesPanel.Controls.AddRange((DeviceUserControl[])sortlist.ToArray(typeof(DeviceUserControl)));

            devicesPanel.ResumeLayout();
            noDevicesLabel.Visible       = (sortlist.Count == 0);
            noSearchResultsLabel.Visible = ((sortlist.Count > 0) && (visibleDevices == 0));
        }