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); }
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)); }
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))); }
public void TestConvertMongoIdToMongoId() { var oid = MongoId.GenerateNewId(); var oidConverted = Convert.ChangeType(oid, typeof(MongoId)); Assert.Equal(oid, oidConverted); }
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); }
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); }
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)); }
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); }
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 }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }
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())); }
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)); }
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()); }