blob: 1ccd3a95a1f30e8fd8431594a7d5eafa0c4ee2c9 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chromecast.base;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
/**
* Tests for Observable#filter().
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class ObservableFilterTest {
@Test
public void testFilter() {
Controller<String> a = new Controller<>();
ReactiveRecorder empty = ReactiveRecorder.record(a.filter(String::isEmpty));
ReactiveRecorder startsWithA = ReactiveRecorder.record(a.filter(s -> s.startsWith("a")));
ReactiveRecorder endsWithA = ReactiveRecorder.record(a.filter(s -> s.endsWith("a")));
a.set("");
empty.verify().opened("").end();
startsWithA.verify().end();
endsWithA.verify().end();
a.reset();
empty.verify().closed("").end();
startsWithA.verify().end();
endsWithA.verify().end();
a.set("a");
empty.verify().end();
startsWithA.verify().opened("a").end();
endsWithA.verify().opened("a").end();
a.set("doa");
empty.verify().end();
startsWithA.verify().closed("a").end();
endsWithA.verify().closed("a").opened("doa").end();
a.set("ada");
empty.verify().end();
startsWithA.verify().opened("ada").end();
endsWithA.verify().closed("doa").opened("ada").end();
}
}