blob: eeb385857db7e85b687c14a166f0836f119b3e95 [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 that assertionss of ReactiveRecorder are thrown.
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class ReactiveRecorderTest {
@Test(expected = AssertionError.class)
public void testFailEndAtStart() {
Controller<Unit> controller = new Controller<>();
ReactiveRecorder recorder = ReactiveRecorder.record(controller);
controller.set(Unit.unit());
recorder.verify().end();
}
@Test(expected = AssertionError.class)
public void testFailEndAtEnd() {
Controller<Unit> controller = new Controller<>();
ReactiveRecorder recorder = ReactiveRecorder.record(controller);
controller.set(Unit.unit());
controller.reset();
controller.set(Unit.unit());
recorder.verify().opened(Unit.unit()).closed(Unit.unit()).end();
}
@Test(expected = AssertionError.class)
public void testFailOpenedWrongValue() {
Controller<String> controller = new Controller<>();
ReactiveRecorder recorder = ReactiveRecorder.record(controller);
controller.set("actual");
recorder.verify().opened("expected");
}
@Test(expected = AssertionError.class)
public void testFailOpenedGotClosed() {
Controller<String> controller = new Controller<>();
controller.set("before");
ReactiveRecorder recorder = ReactiveRecorder.record(controller).reset();
controller.set("after");
recorder.verify().opened("after");
}
@Test(expected = AssertionError.class)
public void testFailClosedGotOpened() {
Controller<Unit> controller = new Controller<>();
ReactiveRecorder recorder = ReactiveRecorder.record(controller);
controller.set(Unit.unit());
recorder.verify().closed(Unit.unit());
}
@Test(expected = AssertionError.class)
public void testFailGetNotificationsAfterUnsubscribe() {
Controller<String> controller = new Controller<>();
ReactiveRecorder recorder = ReactiveRecorder.record(controller);
recorder.unsubscribe();
controller.set("unexpected");
recorder.verify().opened("unexpected");
}
@Test
public void testHappyPath() {
Controller<Unit> controller = new Controller<>();
ReactiveRecorder recorder = ReactiveRecorder.record(controller);
controller.set(Unit.unit());
controller.reset();
controller.set(Unit.unit());
controller.reset();
recorder.verify()
.opened(Unit.unit())
.closed(Unit.unit())
.opened(Unit.unit())
.closed(Unit.unit())
.end();
}
}