// Path: src/main/java/io/reactivex/marble/MapHelper.java
// public static <V> Map<String, V> of(String k, V v) {
//     return Collections.singletonMap(k,v);
// }


import io.reactivex.Observable;
import io.reactivex.functions.Function;
import io.reactivex.observers.TestObserver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import static org.assertj.core.api.Assertions.assertThat;
import static io.reactivex.marble.MapHelper.of;
        ColdObservable<String> source = scheduler.createColdObservable("--a---b--|", of("a", "A", "b", "B"));
        TestObserver<String> observer = new TestObserver<>();
        source.subscribe(observer);
        scheduler.advanceTimeBy(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
        observer.assertValues("A", "B");
    }

    @Test
    public void should_create_a_cold_observable_taking_in_account_frame_time_factor() {
        scheduler = new MarbleScheduler(100);
        ColdObservable<String> source = scheduler.createColdObservable("--a---b--|", of("a", "A", "b", "B"));
        TestObserver<String> observer = new TestObserver<>();
        source.subscribe(observer);
        scheduler.advanceTimeBy(100, TimeUnit.MILLISECONDS);

        observer.assertNoValues();
    }

    @Test
    public void should_create_a_hot_observable() {
        HotObservable<String> source = scheduler.createHotObservable("--a---b--|", of("a", "A", "b", "B"));
        TestObserver<String> observer = new TestObserver<>();
        source.subscribe(observer);
        scheduler.advanceTimeBy(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
        observer.assertValues("A", "B");
    }

    @Test
    public void should_create_a_hot_observable_taking_in_account_frame_time_factor() {
        scheduler = new MarbleScheduler(100);
// Path: src/main/java/io/reactivex/marble/MapHelper.java
// public static <V> Map<String, V> of(String k, V v) {
//     return Collections.singletonMap(k,v);
// }


// Path: src/test/java/io/reactivex/marble/MarbleSchedulerTest.java
import io.reactivex.Observable;
import io.reactivex.functions.Function;
import io.reactivex.observers.TestObserver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import static org.assertj.core.api.Assertions.assertThat;
import static io.reactivex.marble.MapHelper.of;

        ColdObservable<String> source = scheduler.createColdObservable("--a---b--|", of("a", "A", "b", "B"));
        TestObserver<String> observer = new TestObserver<>();
        source.subscribe(observer);
        scheduler.advanceTimeBy(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
        observer.assertValues("A", "B");
    }

    @Test
    public void should_create_a_cold_observable_taking_in_account_frame_time_factor() {
        scheduler = new MarbleScheduler(100);
        ColdObservable<String> source = scheduler.createColdObservable("--a---b--|", of("a", "A", "b", "B"));
        TestObserver<String> observer = new TestObserver<>();
        source.subscribe(observer);
        scheduler.advanceTimeBy(100, TimeUnit.MILLISECONDS);

        observer.assertNoValues();
    }

    @Test
    public void should_create_a_hot_observable() {
        HotObservable<String> source = scheduler.createHotObservable("--a---b--|", of("a", "A", "b", "B"));
        TestObserver<String> observer = new TestObserver<>();
        source.subscribe(observer);
        scheduler.advanceTimeBy(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
        observer.assertValues("A", "B");
    }

    @Test
    public void should_create_a_hot_observable_taking_in_account_frame_time_factor() {
        scheduler = new MarbleScheduler(100);
        HotObservable<String> source = scheduler.createHotObservable("--a---b--|", of("a", "A", "b", "B"));