스트림의 필터 목록을 구성해야합니다.스트림의 사용자 정의 필터링
스트림에는 처음에는 필터가 없지만 시간이 지나면 활성 필터 목록이 있습니다.
각 필터에는 엄격한 유효 기간이 있습니다.
테스트 케이스는 다음과 같습니다
var scheduler = new TestScheduler();
var input = scheduler.CreateColdObservable<char>(
ReactiveTest.OnNext(0100.Ms(), '1'),
ReactiveTest.OnNext(0200.Ms(), 'A'),
ReactiveTest.OnNext(0300.Ms(), '2'),
ReactiveTest.OnNext(0400.Ms(), 'B'),
ReactiveTest.OnNext(0500.Ms(), 'A'),
ReactiveTest.OnNext(0600.Ms(), 'B'),
ReactiveTest.OnNext(0700.Ms(), '5'),
ReactiveTest.OnNext(0800.Ms(), 'A'),
ReactiveTest.OnNext(0900.Ms(), 'C'));
// filters
// A between 70ms -> 550ms
// B between 330ms -> 400ms
// modeled as a string observable where:
// first word is the char to filter
// second word are the msecs duration of the filter
var filters = scheduler.CreateColdObservable<string>(
ReactiveTest.OnNext(0070.Ms(), "A 480"),
ReactiveTest.OnNext(0330.Ms(), "B 70")
);
var expected = scheduler.CreateColdObservable<char>(
ReactiveTest.OnNext(0100.Ms(), '1'),
ReactiveTest.OnNext(0300.Ms(), '2'),
ReactiveTest.OnNext(0600.Ms(), 'B'),
ReactiveTest.OnNext(0700.Ms(), '5'),
ReactiveTest.OnNext(0800.Ms(), 'A'),
ReactiveTest.OnNext(0900.Ms(), 'C'));
은 당신이 할 수있는 최선의 RX-솔루션 인 저를 제안 할 수 있습니까?
PS : 나는
public static class TickExtensions
{
public static long Ms(this int ms)
{
return TimeSpan.FromMilliseconds(ms).Ticks;
}
}
코드가 컴파일되지 않습니다. 나는'Ms()'가 길게 돌아올 것이라고 생각합니다. 'filters'는'CreateColdObservable'이어야합니다. –
@LeeCampbell 맞아, 이걸 고쳤어. – zpul