public void Replace_WithPredicate_OnTimestampedValues_Updates_IfNewer() { IEnumerable <TimestampedInt> originalItems = new[] { new TimestampedInt(1, new DateTime(2017, 09, 08, 18, 56, 00, DateTimeKind.Utc)), new TimestampedInt(2, new DateTime(2016, 01, 01, 10, 00, 00, DateTimeKind.Utc)) }; // A newer replacement TimestampedInt replacement = new TimestampedInt(3, new DateTime(2018, 01, 01, 01, 08, 00, DateTimeKind.Utc)); var loader = new ThreadSafeAsyncLoader <TimestampedInt>(seqFactory: Seq.ListBased, loadDataAsync: _ => Task.FromResult(originalItems)); loader.LoadAsync(); // --- Perform --- loader.Replace(i => i.Value == 1, replacement); loader.Should().BeEquivalentTo(new[] { replacement, originalItems.ElementAt(1) }); }
public void Replace_OnTimestampedValues_DoesNotUpdate_IfOlder() { IEnumerable <TimestampedInt> originalItems = new[] { new TimestampedInt(1, new DateTime(2017, 09, 08, 18, 56, 00, DateTimeKind.Utc)), new TimestampedInt(2, new DateTime(2016, 01, 01, 10, 00, 00, DateTimeKind.Utc)) }; // An older replacement TimestampedInt replacement = new TimestampedInt(3, new DateTime(2017, 01, 01, 01, 08, 00, DateTimeKind.Utc)); var loader = new ThreadSafeAsyncLoader <TimestampedInt>( seqFactory: Seq.ListBased, loadDataAsync: _ => Task.FromResult(originalItems), identityComparer: new TimestampedIntValueComparer()); loader.LoadAsync(); // --- Perform --- loader.Replace(originalItems.ElementAt(0), replacement); loader.Should().BeEquivalentTo(originalItems); }
public override bool Equals(object obj) { TimestampedInt other = obj as TimestampedInt; return(other != null && this.Value == other.Value && this.LastUpdated == other.LastUpdated); }