Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/rx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Rx.NET/Tests.System.Reactive/Tests/ScheduledItemTest.cs')
-rw-r--r--Rx.NET/Tests.System.Reactive/Tests/ScheduledItemTest.cs137
1 files changed, 137 insertions, 0 deletions
diff --git a/Rx.NET/Tests.System.Reactive/Tests/ScheduledItemTest.cs b/Rx.NET/Tests.System.Reactive/Tests/ScheduledItemTest.cs
new file mode 100644
index 0000000..835cd7f
--- /dev/null
+++ b/Rx.NET/Tests.System.Reactive/Tests/ScheduledItemTest.cs
@@ -0,0 +1,137 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+using System;
+using System.Collections.Generic;
+using System.Reactive.Concurrency;
+using System.Reactive.Disposables;
+using Microsoft.Reactive.Testing;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace ReactiveTests
+{
+ [TestClass]
+ public class ScheduledItemTest : ReactiveTest
+ {
+ [TestMethod]
+ public void ArgumentChecking()
+ {
+ ReactiveAssert.Throws<ArgumentNullException>(() => new ScheduledItem<DateTimeOffset, int>(default(IScheduler), 42, (x, y) => Disposable.Empty, DateTimeOffset.Now));
+ ReactiveAssert.Throws<ArgumentNullException>(() => new ScheduledItem<DateTimeOffset, int>(Scheduler.Default, 42, default(Func<IScheduler, int, IDisposable>), DateTimeOffset.Now));
+
+ ReactiveAssert.Throws<ArgumentNullException>(() => new ScheduledItem<DateTimeOffset, int>(default(IScheduler), 42, (x, y) => Disposable.Empty, DateTimeOffset.Now, Comparer<DateTimeOffset>.Default));
+ ReactiveAssert.Throws<ArgumentNullException>(() => new ScheduledItem<DateTimeOffset, int>(Scheduler.Default, 42, default(Func<IScheduler, int, IDisposable>), DateTimeOffset.Now, Comparer<DateTimeOffset>.Default));
+ ReactiveAssert.Throws<ArgumentNullException>(() => new ScheduledItem<DateTimeOffset, int>(Scheduler.Default, 42, (x, y) => Disposable.Empty, DateTimeOffset.Now, default(IComparer<DateTimeOffset>)));
+ }
+
+ [TestMethod]
+ public void Inequalities()
+ {
+ var si1 = new SI(42);
+ var si2 = new SI(43);
+ var si3 = new SI(42);
+
+ Assert.IsTrue(si1 < si2);
+ Assert.IsFalse(si1 < si3);
+ Assert.IsTrue(si1 <= si2);
+ Assert.IsTrue(si1 <= si3);
+ Assert.IsTrue(si2 > si1);
+ Assert.IsFalse(si3 > si1);
+ Assert.IsTrue(si2 >= si1);
+ Assert.IsTrue(si3 >= si1);
+
+ Assert.IsTrue(si1.CompareTo(si2) < 0);
+ Assert.IsTrue(si2.CompareTo(si1) > 0);
+ Assert.IsTrue(si1.CompareTo(si1) == 0);
+ Assert.IsTrue(si1.CompareTo(si3) == 0);
+
+ Assert.IsTrue(si2 > null);
+ Assert.IsTrue(si2 >= null);
+ Assert.IsFalse(si2 < null);
+ Assert.IsFalse(si2 <= null);
+ Assert.IsTrue(null < si1);
+ Assert.IsTrue(null <= si1);
+ Assert.IsFalse(null > si1);
+ Assert.IsFalse(null >= si1);
+
+ Assert.IsTrue(si1.CompareTo(null) > 0);
+
+ var si4 = new SI2(43, -1);
+ var si5 = new SI2(44, -1);
+
+ Assert.IsTrue(si4 > si1);
+ Assert.IsTrue(si4 >= si1);
+ Assert.IsTrue(si1 < si4);
+ Assert.IsTrue(si1 <= si4);
+ Assert.IsFalse(si4 > si2);
+ Assert.IsTrue(si4 >= si2);
+ Assert.IsFalse(si2 < si4);
+ Assert.IsTrue(si2 <= si4);
+
+ Assert.IsTrue(si5 > si4);
+ Assert.IsTrue(si5 >= si4);
+ Assert.IsFalse(si4 > si5);
+ Assert.IsFalse(si4 >= si5);
+ Assert.IsTrue(si4 < si5);
+ Assert.IsTrue(si4 <= si5);
+ Assert.IsFalse(si5 < si4);
+ Assert.IsFalse(si5 <= si4);
+ }
+
+ [TestMethod]
+ public void Equalities()
+ {
+ var si1 = new SI2(42, 123);
+ var si2 = new SI2(42, 123);
+ var si3 = new SI2(42, 321);
+ var si4 = new SI2(43, 123);
+
+#pragma warning disable 1718
+ Assert.IsFalse(si1 != si1);
+ Assert.IsTrue(si1 == si1);
+#pragma warning restore 1718
+ Assert.IsTrue(si1.Equals(si1));
+
+ Assert.IsTrue(si1 != si2);
+ Assert.IsFalse(si1 == si2);
+ Assert.IsFalse(si1.Equals(si2));
+
+ Assert.IsTrue(si1 != null);
+ Assert.IsTrue(null != si1);
+ Assert.IsFalse(si1 == null);
+ Assert.IsFalse(null == si1);
+
+ Assert.AreEqual(si1.GetHashCode(), si1.GetHashCode());
+ Assert.AreNotEqual(si1.GetHashCode(), si2.GetHashCode());
+ Assert.AreNotEqual(si1.GetHashCode(), si3.GetHashCode());
+ }
+
+ class SI : ScheduledItem<int>
+ {
+ public SI(int dueTime)
+ : base(dueTime, Comparer<int>.Default)
+ {
+ }
+
+ protected override IDisposable InvokeCore()
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ class SI2 : ScheduledItem<int>
+ {
+ private readonly int _value;
+
+ public SI2(int dueTime, int value)
+ : base(dueTime, Comparer<int>.Default)
+ {
+ _value = value;
+ }
+
+ protected override IDisposable InvokeCore()
+ {
+ throw new NotImplementedException();
+ }
+ }
+ }
+}