Пример #1
0
        public void TestDateTimeConstructorAtEdgeOfRange(int secondsSinceEpoch)
        {
            var timestamp = MongoId.MongoIdTimer.UnixEpoch.AddSeconds(secondsSinceEpoch);
            var mongoId   = new MongoId(timestamp, 0, 0, 0);

            Assert.Equal(timestamp, mongoId.CreationTime);
        }
Пример #2
0
        public void TestIntIntShortIntConstructorWithInvalidMachine()
        {
            var mongoId = new MongoId(0, 0x00ffffff, 0, 0);

            Assert.Equal(0x00ffffff, mongoId.Machine);
            Assert.Throws <ArgumentOutOfRangeException>(() => new MongoId(0, 0x01000000, 0, 0));
        }
Пример #3
0
        public void TestPackWithInvalidMachine()
        {
            var mongoId = new MongoId(MongoId.Pack(0, 0x00ffffff, 0, 0));

            Assert.Equal(0x00ffffff, mongoId.Machine);
            Assert.Throws <ArgumentOutOfRangeException>(() => new MongoId(MongoId.Pack(0, 0x01000000, 0, 0)));
        }
Пример #4
0
        public void TestConvertMongoIdToMongoId()
        {
            var oid = MongoId.GenerateNewId();

            var oidConverted = Convert.ChangeType(oid, typeof(MongoId));

            Assert.Equal(oid, oidConverted);
        }
Пример #5
0
        public void TestGenerateNewIdWithTimestamp()
        {
            var timestamp = 0x01020304;
            var mongoId   = MongoId.GenerateNewId(timestamp);

            Assert.True(mongoId.Timestamp == timestamp);
            Assert.True(mongoId.Machine != 0);
            Assert.True(mongoId.Pid != 0);
        }
Пример #6
0
        public void TestGenerateNewIdWithDateTime()
        {
            var timestamp = new DateTime(2011, 1, 2, 3, 4, 5, DateTimeKind.Utc);
            var mongoId   = MongoId.GenerateNewId(timestamp);

            Assert.True(mongoId.CreationTime == timestamp);
            Assert.True(mongoId.Machine != 0);
            Assert.True(mongoId.Pid != 0);
        }
Пример #7
0
        public void TestIComparable()
        {
            var mongoId1 = MongoId.GenerateNewId();
            var mongoId2 = MongoId.GenerateNewId();

            Assert.Equal(0, mongoId1.CompareTo(mongoId1));
            Assert.Equal(-1, mongoId1.CompareTo(mongoId2));
            Assert.Equal(1, mongoId2.CompareTo(mongoId1));
            Assert.Equal(0, mongoId2.CompareTo(mongoId2));
        }
Пример #8
0
        public void TestGenerateNewId()
        {
            // compare against two timestamps in case seconds since epoch changes in middle of test
            var timestamp1 = (int)Math.Floor((DateTime.UtcNow - MongoId.MongoIdTimer.UnixEpoch).TotalSeconds);
            var mongoId    = MongoId.GenerateNewId();
            var timestamp2 = (int)Math.Floor((DateTime.UtcNow - MongoId.MongoIdTimer.UnixEpoch).TotalSeconds);

            Assert.True(mongoId.Timestamp == timestamp1 || mongoId.Timestamp == timestamp2);
            Assert.True(mongoId.Machine != 0);
            Assert.True(mongoId.Pid != 0);
        }
Пример #9
0
        public void TestParse()
        {
            var mongoId1 = MongoId.Parse("0102030405060708090a0b0c"); // lower case
            var mongoId2 = MongoId.Parse("0102030405060708090A0B0C"); // upper case

            Assert.True(mongoId1.ToByteArray().SequenceEqual(mongoId2.ToByteArray()));
            Assert.True(mongoId1.ToString() == "0102030405060708090a0b0c");                    // ToString returns lower case
            Assert.True(mongoId1.ToString() == mongoId2.ToString());
            Assert.Throws <FormatException>(() => MongoId.Parse("102030405060708090a0b0c"));   // too short
            Assert.Throws <FormatException>(() => MongoId.Parse("x102030405060708090a0b0c"));  // invalid character
            Assert.Throws <FormatException>(() => MongoId.Parse("00102030405060708090a0b0c")); // too long
        }
Пример #10
0
        public void TestCompareLargerGeneratedId()
        {
            var mongoId2 = MongoId.GenerateNewId(); // generate before mongoId2
            var mongoId1 = MongoId.GenerateNewId();

            Assert.False(mongoId1 < mongoId2);
            Assert.False(mongoId1 <= mongoId2);
            Assert.True(mongoId1 != mongoId2);
            Assert.False(mongoId1 == mongoId2);
            Assert.True(mongoId1 > mongoId2);
            Assert.True(mongoId1 >= mongoId2);
        }
Пример #11
0
        public void TestCompareLargerIncrement()
        {
            var mongoId1 = new MongoId("0102030405060708090a0b0d");
            var mongoId2 = new MongoId("0102030405060708090a0b0c");

            Assert.False(mongoId1 < mongoId2);
            Assert.False(mongoId1 <= mongoId2);
            Assert.True(mongoId1 != mongoId2);
            Assert.False(mongoId1 == mongoId2);
            Assert.True(mongoId1 > mongoId2);
            Assert.True(mongoId1 >= mongoId2);
        }
Пример #12
0
        public void TestCompareSmallerPid()
        {
            var mongoId1 = new MongoId("0102030405060708090a0b0c");
            var mongoId2 = new MongoId("01020304050607080a0a0b0c");

            Assert.True(mongoId1 < mongoId2);
            Assert.True(mongoId1 <= mongoId2);
            Assert.True(mongoId1 != mongoId2);
            Assert.False(mongoId1 == mongoId2);
            Assert.False(mongoId1 > mongoId2);
            Assert.False(mongoId1 >= mongoId2);
        }
Пример #13
0
 public override bool Equals(object obj)
 {
     return(obj is RaidenSnapshot state &&
            MongoId.Equals(state.MongoId) &&
            BlockNumber == state.BlockNumber &&
            Timestamp == state.Timestamp &&
            EqualityComparer <Uri> .Default.Equals(Twitter, state.Twitter) &&
            EqualityComparer <List <RaidenDelta> > .Default.Equals(States, state.States) &&
            EqualityComparer <List <TokenNetworkDelta> > .Default.Equals(TokenNetworks, state.TokenNetworks) &&
            EqualityComparer <List <Endpoint> > .Default.Equals(Endpoints, state.Endpoints) &&
            Id == state.Id);
 }
Пример #14
0
        public void TestCompareSmallerGeneratedId()
        {
            var mongoId1 = MongoId.GenerateNewId();
            var mongoId2 = MongoId.GenerateNewId();

            Assert.True(mongoId1 < mongoId2);
            Assert.True(mongoId1 <= mongoId2);
            Assert.True(mongoId1 != mongoId2);
            Assert.False(mongoId1 == mongoId2);
            Assert.False(mongoId1 > mongoId2);
            Assert.False(mongoId1 >= mongoId2);
        }
Пример #15
0
 public override bool Equals(object obj)
 {
     return(obj is RaidenDelta aggregate &&
            MongoId.Equals(aggregate.MongoId) &&
            TokenNetworksCount == aggregate.TokenNetworksCount &&
            UsersCount == aggregate.UsersCount &&
            BlockNumber == aggregate.BlockNumber &&
            BtcValue == aggregate.BtcValue &&
            EthValue == aggregate.EthValue &&
            Id == aggregate.Id &&
            EqualityComparer <List <TokenNetworkDelta> > .Default.Equals(TokenNetworkChanges, aggregate.TokenNetworkChanges));
 }
Пример #16
0
        public void TestTryParse()
        {
            MongoId mongoId1, mongoId2;

            Assert.True(MongoId.TryParse("0102030405060708090a0b0c", out mongoId1));   // lower case
            Assert.True(MongoId.TryParse("0102030405060708090A0B0C", out mongoId2));   // upper case
            Assert.True(mongoId1.ToByteArray().SequenceEqual(mongoId2.ToByteArray()));
            Assert.True(mongoId1.ToString() == "0102030405060708090a0b0c");            // ToString returns lower case
            Assert.True(mongoId1.ToString() == mongoId2.ToString());
            Assert.False(MongoId.TryParse("102030405060708090a0b0c", out mongoId1));   // too short
            Assert.False(MongoId.TryParse("x102030405060708090a0b0c", out mongoId1));  // invalid character
            Assert.False(MongoId.TryParse("00102030405060708090a0b0c", out mongoId1)); // too long
            Assert.False(MongoId.TryParse(null, out mongoId1));                        // should return false not throw ArgumentNullException
        }
 public override bool Equals(object obj)
 {
     return(obj is TokenNetworkSnapshot state &&
            MongoId.Equals(state.MongoId) &&
            TokenNetworkAddress == state.TokenNetworkAddress &&
            EqualityComparer <List <TokenNetworkDelta> > .Default.Equals(TokenNetworkDeltas, state.TokenNetworkDeltas) &&
            CreationBlockNumber == state.CreationBlockNumber &&
            CreationTimestamp == state.CreationTimestamp &&
            StateBlockNumber == state.StateBlockNumber &&
            StateTimestamp == state.StateTimestamp &&
            EqualityComparer <Token> .Default.Equals(Token, state.Token) &&
            EqualityComparer <List <Channel> > .Default.Equals(Channels, state.Channels) &&
            EqualityComparer <List <Endpoint> > .Default.Equals(Endpoints, state.Endpoints) &&
            Twitter == state.Twitter &&
            Id == state.Id);
 }
Пример #18
0
        public void TestByteArrayConstructor()
        {
            byte[] bytes   = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
            var    mongoId = new MongoId(bytes);

            Assert.Equal(0x01020304, mongoId.Timestamp);
            Assert.Equal(0x050607, mongoId.Machine);
            Assert.Equal(0x0809, mongoId.Pid);
            Assert.Equal(0x0a0b0c, mongoId.Increment);
            Assert.Equal(0x050607, mongoId.Machine);
            Assert.Equal(0x0809, mongoId.Pid);
            Assert.Equal(0x0a0b0c, mongoId.Increment);
            Assert.Equal(MongoId.MongoIdTimer.UnixEpoch.AddSeconds(0x01020304), mongoId.CreationTime);
            Assert.Equal("0102030405060708090a0b0c", mongoId.ToString());
            Assert.True(bytes.SequenceEqual(mongoId.ToByteArray()));
        }
Пример #19
0
        private dynamic DecodeId(dynamic parameters)
        {
            if (!this.Request.Query.id.HasValue)
            {
                return(HttpStatusCode.BadRequest);
            }

            MongoId id;

            if (!MongoId.TryParse(this.Request.Query.id.ToString(), out id))
            {
                return(HttpStatusCode.BadRequest);
            }

            return(this.Response.AsJson(id));
        }
Пример #20
0
        private dynamic GenerateId(dynamic parameters)
        {
            int timestamp = 0;

            if (this.Request.Query.timestamp.HasValue)
            {
                if (!int.TryParse(this.Request.Query.timestamp.Value.ToString(), out timestamp) ||
                    timestamp < 0)
                {
                    return(HttpStatusCode.BadRequest);
                }
            }

            return(timestamp > 0 ?
                   MongoId.GenerateNewId(timestamp).ToString() : MongoId.GenerateNewId().ToString());
        }