Пример #1
0
        public void CanCastToNullableLong_WhenNull()
        {
            BNumber bnumber = null;
            var     number  = (long?)bnumber;

            number.Should().BeNull();
        }
Пример #2
0
        public void CanCastToNullableInt_WhenNotNull()
        {
            BNumber bnumber = 12345;
            var     number  = (int?)bnumber;

            number.Should().Be(12345);
        }
Пример #3
0
        public void CanCastToNullableInt_WhenNull()
        {
            BNumber bnumber = null;
            var     number  = (int?)bnumber;

            number.Should().BeNull();
        }
Пример #4
0
        public void CanCastToLong()
        {
            BNumber bnumber = new BNumber(12345);
            long    number  = (long)bnumber;

            number.Should().Be(12345);
        }
Пример #5
0
        public void CanCastToInt()
        {
            BNumber bnumber = new BNumber(12345);
            int     number  = (int)bnumber;

            number.Should().Be(12345);
        }
Пример #6
0
        public void CanCastToNullableLong_WhenNotNull()
        {
            BNumber bnumber = 12345;
            var     number  = (long?)bnumber;

            number.Should().Be(12345);
        }
Пример #7
0
        public void CanEncode_Zero()
        {
            var bnumber = new BNumber(0);
            var bencode = bnumber.EncodeAsString();

            bencode.Should().Be("i0e");
        }
Пример #8
0
        public void CanEncode_Negative(long value)
        {
            var bnumber = new BNumber(value);
            var bencode = bnumber.EncodeAsString();

            bencode.Should().Be($"i{value}e");
        }
Пример #9
0
        public void CastingToBool_Null_ThrowsInvalidCastException()
        {
            BNumber bnumber = null;
            Action  action  = () => { var b = (bool)bnumber; };

            action.ShouldThrow <InvalidCastException>();
        }
Пример #10
0
        public void CanEncode_Int64MaxValue()
        {
            var bnumber = new BNumber(9223372036854775807);
            var bencode = bnumber.EncodeAsString();

            bencode.Should().Be("i9223372036854775807e");
        }
Пример #11
0
        public void Equals_SameNumbersShouldBeEqual(long num1, long num2)
        {
            var bnumber1 = new BNumber(num1);
            var bnumber2 = new BNumber(num2);

            bnumber1.Equals(bnumber2).Should().BeTrue();
        }
Пример #12
0
        public void Equals_DifferentNumbersShouldNotBeEqual(long num1, long num2)
        {
            var bnumber1 = new BNumber(num1);
            var bnumber2 = new BNumber(num2);

            bnumber1.Equals(bnumber2).Should().BeFalse();
        }
Пример #13
0
        public void CanEncode_Int64MinValue()
        {
            var bnumber = new BNumber(-9223372036854775808);
            var bencode = bnumber.EncodeAsString();

            bencode.Should().Be("i-9223372036854775808e");
        }
Пример #14
0
        public void CanCastToDateTime()
        {
            var bnumber  = new BNumber(1451606400);
            var datetime = (DateTime)bnumber;

            datetime.Should().Be(new DateTime(2016, 1, 1));
        }
Пример #15
0
        public byte[] Serialize()
        {
            var dict = new BDictionary
            {
                ["msg_type"] = new BNumber((int)RequestType),
                ["piece"]    = new BNumber(PieceIndex)
            };

            if (RequestType == Type.Data)
            {
                dict["total_size"] = new BNumber(TotalSize);
            }

            using (var ms = new MemoryStream())
            {
                dict.EncodeTo(ms);

                if (RequestType == Type.Data)
                {
                    ms.Write(PieceData, 0, PieceData.Length);
                }

                return(ms.ToArray());
            }
        }
Пример #16
0
        public void ToString_WithFormat_SameAsLong()
        {
            var bnumber = new BNumber(42);

            var str1 = bnumber.ToString("N2");
            var str2 = 42L.ToString("N2");

            str1.Should().Be(str2);
        }
Пример #17
0
        public void CanEncodeAsBytes()
        {
            var bnumber  = new BNumber(42);
            var expected = Encoding.ASCII.GetBytes("i42e");

            var bytes = bnumber.EncodeAsBytes();

            bytes.Should().BeEquivalentTo(expected);
        }
Пример #18
0
        public void GetHashCode_SameAsInt64HashCode(long number)
        {
            var bnumber = new BNumber(number);

            var hash1 = bnumber.GetHashCode();
            var hash2 = number.GetHashCode();

            hash1.Should().Be(hash2);
        }
Пример #19
0
        public async Task WriteToStreamAsync()
        {
            var bnumber = new BNumber(1234);

            var ms = new MemoryStream();
            await bnumber.EncodeToAsync(ms);

            var result = Encoding.UTF8.GetString(ms.ToArray());

            result.Should().Be("i1234e");
        }
Пример #20
0
        public void CanEnodeToStream()
        {
            var bnumber = new BNumber(42);

            using (var stream = new MemoryStream())
            {
                bnumber.EncodeTo(stream);

                stream.Length.Should().Be(4);
                stream.AsString().Should().Be("i42e");
            }
        }
Пример #21
0
        public async Task WriteToPipeWriterAsync()
        {
            var bnumber = new BNumber(1234);

            var(reader, writer) = new Pipe();

            await bnumber.EncodeToAsync(writer);

            reader.TryRead(out var readResult);

            var result = Encoding.UTF8.GetString(readResult.Buffer.First.Span.ToArray());

            result.Should().Be("i1234e");
        }
Пример #22
0
        public void GetSizeInBytes()
        {
            var bnumber = new BNumber(42);

            bnumber.GetSizeInBytes().Should().Be(4);
        }
Пример #23
0
 public BitTorrentStatus()
 {
     Downloaded  = new BNumber(0);
     Completed   = new BNumber(0);
     InCompleted = new BNumber(0);
 }
Пример #24
0
        public void EqualsOperator_Integer_SameNumberShouldBeEqual(long num1, long num2)
        {
            var bnumber = new BNumber(num1);

            (bnumber == num2).Should().BeTrue();
        }
Пример #25
0
        public bool SendEventToTracker(NetworkManager networkManager, string eventType, bool stopOnFail)
        {
            IsScrapeUpdated = false;
            string urlEvent = GenerateUrlString(eventType);
            Uri    uriEvent = new Uri(urlEvent);

            try
            {
                Tracker = networkManager.MakeWebRequest(uriEvent, Client.HttpProtocol, Client.Headers);
                if (Tracker != null && Tracker.Dico != null)
                {
                    BDictionary dico    = Tracker.Dico;
                    BString     failure = dico.Get <BString>("failure reason");
                    if (failure != null)
                    {
                        log.Warn($"Tracker Error: {failure}");
                        if (stopOnFail)
                        {
                            log.Info("Stopped because of tracker error!!!");
                            return(false);
                        }
                    }
                    else
                    {
                        foreach (BString key in dico.Keys)
                        {
                            if (key != "peers")
                            {
                                log.Info(key + ": " + dico[key]);
                            }
                        }
                        BNumber interval = dico.Get <BNumber>("interval");
                        if (interval != null)
                        {
                        }
                        BNumber complete   = dico.Get <BNumber>("complete");
                        BNumber incomplete = dico.Get <BNumber>("incomplete");
                        Seeders  = (int)complete.Value;
                        Leechers = (int)incomplete.Value;
                    }

                    if (dico.ContainsKey("peers"))
                    {
                        HasInitialPeers = true;
                        if (dico["peers"] is BString)
                        {
                            Encoding encoding = Encoding.GetEncoding(0x6faf);
                            byte[]   buffer   = encoding.GetBytes(dico["peers"].ToString());
                            using (MemoryStream ms = new MemoryStream(buffer))
                                using (BinaryReader br = new BinaryReader(ms))
                                {
                                    PeerList list = new PeerList();
                                    for (int num1 = 0; num1 < buffer.Length; num1 += 6)
                                    {
                                        list.Add(new Peer(br.ReadBytes(4), br.ReadInt16()));
                                    }
                                    br.Close();
                                    log.Info($"Peers : {list}");
                                }
                        }
                        else if (dico["peers"] is BList)
                        {
                            BList    bList = dico.Get <BList>("peers");
                            PeerList pList = new PeerList();
                            foreach (object objList in bList)
                            {
                                if (objList is BDictionary)
                                {
                                    BDictionary dictionary = (BDictionary)objList;
                                    pList.Add(new Peer(dictionary["ip"].ToString(), dictionary["port"].ToString(), dictionary["peer id"].ToString()));
                                }
                            }
                            log.Info($"Peers : {pList}");
                        }
                        else
                        {
                            log.Info($"Peers(x) : {dico["peers"]}");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
                return(false);
            }
            return(true);
        }
Пример #26
0
        public void Constructor_DateTime_ValueIsUnixFormat()
        {
            var bnumber = new BNumber(new DateTime(2016, 1, 1));

            bnumber.Value.Should().Be(1451606400);
        }
Пример #27
0
        public void Constructor_DateTime_NullParameter_ValueIsZero()
        {
            var bnumber = new BNumber((DateTime?)null);

            bnumber.Value.Should().Be(0);
        }