public void ShouldEnqueueNormally() { var uut = new FixedSizeQueue <int>(1); uut.Enqueue(0); Assert.AreEqual(0, uut.Dequeue()); }
public void ShouldDequeueWhenLimitIsReached() { var uut = new FixedSizeQueue <int>(1); uut.Enqueue(0); uut.Enqueue(1); Assert.AreEqual(1, uut.Dequeue()); }
public void FixedSizeQueue_CanDequeue() { FixedSizeQueue<int> queue = new FixedSizeQueue<int>(1); queue.Enqueue(1); Assert.AreEqual(1, queue.Count); int dequeued = queue.Dequeue(); Assert.AreEqual(1, dequeued); Assert.AreEqual(0, queue.Count); }
public void FixedSizeQueue_DequeueThrowsWhenEmpty() { FixedSizeQueue<int> queue = new FixedSizeQueue<int>(1); try { queue.Dequeue(); Assert.Fail("Dequeueing did not throw an exception when the queue was empty."); } catch (InvalidOperationException) { // expected } }
// Uses a fixed size queue in order to keep track of history // m = number of nodes in tree // Best case (balanced tree): O(log(m + n)) time, O(n) space // Worst case (inbalanced tree): O(m) time, O(n) space (stack) public static BinaryTreeNode FindQueue(BinaryTreeNode root, int n) { if (root == null) { throw new ArgumentNullException(); } int counter = n; FixedSizeQueue <BinaryTreeNode> visited = new FixedSizeQueue <BinaryTreeNode>(n); BinaryTreeNode current = root; bool visitedRight = false; while (true) { while (current.Right != null && !visitedRight) { visited.Enqueue(current); current = current.Right; } if (counter == 1) { return(current); } else { counter--; // backstep if (current.Left != null) { current = current.Left; visitedRight = false; } else { // ran out of nodes - not enough nodes in tree if (visited.Count <= 0) { return(null); } current = visited.Dequeue(); visitedRight = true; } } } }
private void SendThread() { Thread.CurrentThread.IsBackground = true; var interval = new TimeSpan(0, 0, 5); while (true) { try { if (queue.Count > 0) { var logEntries = new List <string>(); RequestLog requestLog; lock (Locker) { requestLog = queue.Dequeue(); if (requestLog.Messages.Count > 0) { logEntries.Add(requestLog.Time.ToString("yyyy-MM-ddTHH:mm:ss")); } logEntries.AddRange(requestLog.Messages.Select(msg => msg.Text)); logEntries.AddRange(requestLog.Tags.Select(tag => tag.Name + "=" + tag.Value)); } if (logEntries.Any()) { var sb = new StringBuilder(); foreach (var logEntry in logEntries) { sb.Append(logEntry + "\n"); } var request = new RestRequest(_requestUrl, Method.POST); request.AddParameter("application/json", sb.ToString(), ParameterType.RequestBody); request.AddHeader("content-type", "application/json"); _restClient.ExecuteAsync(request, response => { if (response.ErrorMessage == null) { return; } Console.WriteLine("Splunk error: " + response.ErrorMessage + ", for: " + logEntries.First()); if (response.ErrorMessage.Contains("SendFailure") || response.ErrorMessage.Contains("ReceiveFailure")) { Enqueue(requestLog); } }); } } } catch (ThreadAbortException) { // Ignore } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("Splunk exception: " + ex); Console.WriteLine("Splunk exception: " + ex); } Thread.Sleep(interval); } }
private void TrySpawnOnBreadboard() { if (_holes.Count == _activeSpawnablePrefabHolesNeeded) { // Breadboard holes Transform H_1_place = _holes.Dequeue(); Transform H_2_place = _holes.Dequeue(); GameEvents.current.FireEvent_UnmarkHoleAsWiring(H_1_place); GameEvents.current.FireEvent_UnmarkHoleAsWiring(H_2_place); Breadboard breadboard = _breadboard.GetComponent <Breadboard>(); if (breadboard.HolesOccupied(H_1_place, H_2_place, out string errorText)) { GameEvents.current.FireEvent_HUDMessage(errorText, Controllers.HUDMessageType.Error); return; } if (breadboard.HolesNearbyInline(H_1_place, H_2_place)) { // Init prefab GameObject prefab = Instantiate(_activeSpawnablePrefab); PlaceComponentOnBreadboard(prefab, H_1_place, H_2_place); ComponentType type = ComponentType.Unknown; foreach (Tag tag in prefab.GetComponent <BaseComponent>().Tags) { switch (tag) { case Tag.LED: { type = ComponentType.LED; prefab.GetComponent <LED>().CathodeCoord = // Breadboard first click is always Cathode (-) H_1_place.name.Replace("H_", ""); // Name is like H_G1, etc., we only need postfix prefab.GetComponent <LED>().AnodeCoord = // Second click is always Anode (+) H_2_place.name.Replace("H_", ""); // Name is like H_J2, etc., we only need postfix break; } case Tag.Resistor: { type = ComponentType.Resistor; prefab.GetComponent <Resistor>().SetResistance(_resistorOhmConfigured); prefab.GetComponent <Resistor>().Coord1 = // No polarity component, coord1 might be coord2, // It doesn't matter H_1_place.name.Replace("H_", ""); // Name is like H_G1, etc., we only need postfix prefab.GetComponent <Resistor>().Coord2 = // No polarity component, coord1 might be coord2, // It doesn't matter H_2_place.name.Replace("H_", ""); // Name is like H_G1, etc., we only need postfix break; } } } // Inform about occupied breaboard holes GameEvents.current.FireEvent_ComponentSpawnBreadboard(H_1_place, H_2_place, type, prefab); //GameEvents.current.FireEvent_HUDMessage("Component spawned!", Controllers.HUDMessageType.Info); } else { GameEvents.current.FireEvent_HUDMessage("Draudžiamos mazgų pozicijos!", Controllers.HUDMessageType.Error); } } }