Table of Contents

Namespace RxSharp.Testing

Classes

Recorded

Factory helpers for Recorded<T>. A non-generic sibling avoids CA1000 (static members on generic types).

TestScheduler

A VirtualTimeScheduler that additionally understands rxjs-style ASCII marble diagrams, so time-based operator tests can build deterministic cold/hot sources and assert exactly when values, errors, and completion happen — no real timers, no flakiness. See MarbleParser for the (deliberately simplified) diagram grammar this supports.

VirtualTimeScheduler

An IScheduler that tracks a virtual clock instead of real time. Schedule(Action, TimeSpan) never runs anything itself — it queues (dueTime, action) pairs. Nothing executes until AdvanceTo(TimeSpan) or AdvanceBy(TimeSpan) moves the clock forward past their due time, at which point every action whose due time has now been reached runs synchronously, in due-time order (ties broken by scheduling order). That determinism is the entire point: it lets time-based operators (Delay, DebounceTime, Timer, Retry's backoff, ...) be tested without real Thread.Sleep/ManualResetEventSlim waits. Mirrors rxjs's VirtualTimeScheduler.

Structs

Recorded<T>

A single timestamped notification (next/error/complete), stamped with a VirtualTimeScheduler's clock value at the moment it happened. The core assertion unit of marble testing: a test records a sequence of these from a live subscription (see Record<T>(Observable<T>)), advances the scheduler, then compares the recorded sequence against an expected one built from these same factory methods (or parsed from a marble diagram, whose messages are also Recorded<T> values).

Enums

RecordedKind

The kind of notification captured by a Recorded<T>. Mirrors rxjs's NotificationKind.