public void WhenPositiveNumberIsPassed_It_Gives_Sequence_Of_Numbers()
        {
            var expectedSequenceNumbers = new SequenceNumbers()
            {
                AllNumbersUptoGivenNumber = new List <string> {
                    "1", "2", "3", "4", "5"
                },
                EvenNumbersUptoGivenNumber = new List <string> {
                    "2", "4"
                },
                OddNumbersUptoGivenNumber = new List <string> {
                    "1", "3", "5"
                },
                FizzBuzzSequenceNumbersUptoGivenNumber = new List <string> {
                    "1", "2", "C", "4", "E"
                }
            };

            sequenceCalculatorService.CalculateSequence(5).Returns(expectedSequenceNumbers);

            sequenceCalculatorController = new SequenceCalculatorController(sequenceCalculatorService);
            var result = sequenceCalculatorController.CalculateSequence(5) as OkNegotiatedContentResult <SequenceNumbers>;

            result?.Content.Should().BeEquivalentTo(expectedSequenceNumbers);
        }
示例#2
0
        public SequenceNumbers CalculateSequence(int number)
        {
            var sequenceNumbers = new SequenceNumbers
            {
                AllNumbersUptoGivenNumber              = _sequenceGenerator.GenerateSequenceFor(number, SequenceType.AllNumbers),
                EvenNumbersUptoGivenNumber             = _sequenceGenerator.GenerateSequenceFor(number, SequenceType.EvenNumbers),
                OddNumbersUptoGivenNumber              = _sequenceGenerator.GenerateSequenceFor(number, SequenceType.OddNumbers),
                FizzBuzzSequenceNumbersUptoGivenNumber = _sequenceGenerator.GenerateSequenceFor(number, SequenceType.FizzBuzzNumbers)
            };

            return(sequenceNumbers);
        }
        public void SequenceCalculatorServiceReturns_SequenceOf_Odd_Even_AllNumbers_And_FizzBuzzSequence()
        {
            var expectedSequenceNumbers = new SequenceNumbers()
            {
                AllNumbersUptoGivenNumber = new List <string> {
                    "1", "2", "3", "4", "5"
                },
                EvenNumbersUptoGivenNumber = new List <string> {
                    "2", "4"
                },
                OddNumbersUptoGivenNumber = new List <string> {
                    "1", "3", "5"
                },
                FizzBuzzSequenceNumbersUptoGivenNumber = new List <string> {
                    "1", "2", "C", "4", "E"
                }
            };

            _sequenceGenerator.GenerateSequenceFor(5, SequenceType.EvenNumbers).
            Returns(new List <string> {
                "2", "4"
            });
            _sequenceGenerator.GenerateSequenceFor(5, SequenceType.OddNumbers).
            Returns(new List <string> {
                "1", "3", "5"
            });
            _sequenceGenerator.GenerateSequenceFor(5, SequenceType.FizzBuzzNumbers).
            Returns(new List <string> {
                "1", "2", "C", "4", "E"
            });
            _sequenceGenerator.GenerateSequenceFor(5, SequenceType.AllNumbers).
            Returns(new List <string> {
                "1", "2", "3", "4", "5"
            });

            var result = _sequenceCalculatorService.CalculateSequence(5);

            result.Should().BeEquivalentTo(expectedSequenceNumbers);
        }
示例#4
0
        public string GetProdusenCode()
        {
            string          code = string.Empty;
            SequenceNumbers o    = new SequenceNumbers();

            try
            {
                var seq = (from a in _db.SequenceNumbers
                           where a.FormatKode.Contains("PRO")
                           select a).AsNoTracking().First();
                string[] namesArray = seq.FormatKode.Split('-');
                code    = namesArray[0] + (seq.Nilai + 1).ToString("D4");
                o       = seq;
                o.Nilai = o.Nilai + 1;
                o.Date  = DateTime.Now.Date;
                _db.Update(o);
            }
            catch
            {
                code = string.Empty;
            }
            return(code);
        }
示例#5
0
        private void Wc_OnPacketArrival(object sender, CaptureEventArgs e)
        {
            if (Disposing || IsDisposed || !IsHandleCreated)
            {
                return;
            }
            if (e.Packet == null || e.Packet.Data == null || e.Packet.Data.Length == 0)
            {
                return;
            }
            if (e.Packet.LinkLayerType != LinkLayers.Ethernet)
            {
                return;
            }
            Packet packet = null;

            try
            {
                packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);
            }
            catch (Exception)
            {
                return;
            }
            var ep = packet as EthernetPacket;

            if (ep == null)
            {
                return;
            }
            if (ep.Type != EthernetPacketType.IpV4 && ep.Type != EthernetPacketType.IpV6)
            {
                return;
            }
            var ip = ep.PayloadPacket as IpPacket;

            if (ip == null)
            {
                return;
            }
            var tp = ip.PayloadPacket as TcpPacket;

            if (tp == null)
            {
                return;
            }
            if (tp.PayloadData.Length == 0)
            {
                return;
            }
            IPAddress srcIp   = ip.SourceAddress;
            IPAddress dstIp   = ip.DestinationAddress;
            int       srcPort = tp.SourcePort;
            int       dstPort = tp.DestinationPort;

            BeginInvoke((Action)(() =>
            {
                lock (PacketsStateStatusLabelLock)
                {
                    if (ep.Type == EthernetPacketType.IpV6)
                    {
                        Ip6PacketsCount++;
                    }
                    else
                    {
                        Ip4PacketsCount++;
                    }

                    PacketsStatusLabel.Text = string.Format("Packets: {0} IPv4, {1} IPv6", Ip4PacketsCount, Ip6PacketsCount);
                }
            }));
            uint sequenceNumber = tp.SequenceNumber;
            // ---------------------------------------------------------------------------
            var sourceIsLocal      = IpAddresses.Contains(ip.SourceAddress);
            var destinationIsLocal = IpAddresses.Contains(ip.DestinationAddress);
            var direction          = TrafficDirection.Local;

            if (sourceIsLocal && !destinationIsLocal)
            {
                direction = TrafficDirection.Out;
            }
            else if (!sourceIsLocal && destinationIsLocal)
            {
                direction = TrafficDirection.In;
            }
            // IPHeader.Data stores the data being carried by the IP datagram.
            if (SettingsManager.Options.LogEnable)
            {
                var index = -1;
                if (OptionsPanel.SearchPattern != null && OptionsPanel.SearchPattern.Length > 0)
                {
                    index = ClassLibrary.Text.Helper.IndexOf(tp.PayloadData, OptionsPanel.SearchPattern, 0);
                }
                if (index > -1)
                {
                    // Play "Radio2" sound if "LogEnabled" and "LogSound" check-boxes are checked.
                    if (SettingsManager.Options.LogSound)
                    {
                        var stream = GetIntroSound("Radio2");
                        if (stream != null)
                        {
                            var player = new AudioPlayer(Handle);
                            player.ChangeAudioDevice(SettingsManager.Options.PlaybackDevice);
                            player.Load(stream);
                            player.Play();
                        }
                    }
                    // ---------------------------------------------
                    var writer = OptionsPanel.Writer;
                    if (writer != null)
                    {
                        writer.WriteLine("{0:HH:mm:ss.fff}: {1} {2}: {3}:{4} -> {5}:{6} Data[{7}]",
                                         DateTime.Now,
                                         ep.Type.ToString().ToUpper(),
                                         destinationIsLocal ? "In" : "Out",
                                         ip.SourceAddress,
                                         tp.SourcePort,
                                         ip.DestinationAddress,
                                         tp.DestinationPort,
                                         tp.PayloadData.Length
                                         );
                        var block = JocysCom.ClassLibrary.Text.Helper.BytesToStringBlock(
                            ep.PayloadData, false, true, true);
                        block = JocysCom.ClassLibrary.Text.Helper.IdentText(4, block, ' ');
                        writer.WriteLine(block);
                        writer.WriteLine("");
                    }
                }
            }
            // ------------------------------------------------------------
            // If direction specified, but wrong type then return.
            if (MonitorItem.FilterDirection != TrafficDirection.None && direction != MonitorItem.FilterDirection)
            {
                return;
            }
            // If port is specified but wrong number then return.
            if (MonitorItem.FilterDestinationPort > 0 && tp.DestinationPort != MonitorItem.FilterDestinationPort)
            {
                return;
            }
            // If process name specified.
            if (!string.IsNullOrEmpty(MonitorItem.FilterProcessName))
            {
                //var ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
                //var tcpListenters = ipGlobalProperties.GetActiveTcpListeners();
                //var udpListenters = ipGlobalProperties.GetActiveUdpListeners();
                //var tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections();
                //var myEnum = tcpConnInfoArray.GetEnumerator();
                //while (myEnum.MoveNext())
                //{
                //	var tcpInfo = (TcpConnectionInformation)myEnum.Current;
                //	Console.WriteLine("Port {0} {1} {2} ", tcpInfo.LocalEndPoint, tcpInfo.RemoteEndPoint, tcpInfo.State);
                //	//usedPort.Add(TCPInfo.LocalEndPoint.Port);
                //}
            }
            var pluginType = MonitorItem.GetType();
            var voiceItem  = (VoiceListItem)Activator.CreateInstance(pluginType);

            voiceItem.Load(ip, tp);
            // If data do not contain XML message then return.
            if (!voiceItem.IsVoiceItem)
            {
                return;
            }
            var allowToAdd = true;

            // If message contains sequence number...
            if (sequenceNumber > 0)
            {
                lock (SequenceNumbersLock)
                {
                    // Cleanup sequence list by removing oldest numbers..
                    while (SequenceNumbers.Count > 10)
                    {
                        SequenceNumbers.RemoveAt(0);
                    }
                    // If number is not unique then...
                    if (SequenceNumbers.Contains(sequenceNumber))
                    {
                        // Don't allow to add the message.
                        allowToAdd = false;
                    }
                    else
                    {
                        // Store sequence number for the future checks.
                        SequenceNumbers.Add(sequenceNumber);
                    }
                }
            }
            if (allowToAdd)
            {
                // If default capture filter.
                if (!IsDetailFilter)
                {
                    // Restrict filter to improve speed.
                    SetFilter(voiceItem, true);
                }
                // Add wow item to the list. Use Invoke to make it Thread safe.
                this.Invoke((Action <VoiceListItem>)addVoiceListItem, new object[] { voiceItem });
            }
        }