RxCpp: как сделать UnitTest для горячей наблюдаемой - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть простой класс CFrameParser для обработки потока байтов сокета в кадры.

class CDataLinkFrame {
public:
    CDataLinkFrame();
    void consumeByte(char ch);
    observable<std::string> getFramesObservable();
private:
    subjects::subject<std::string> _framesSubject;
}

Клиенты будут подписываться на кадры следующим образом:

dlf.getFramesObservable().subcribe()

Это горячие наблюдаемые данные сокетапотребляется в отдельном потоке:

dlf.consumeByte(ch)

, а кадры публикуются:

_framesSubject.get_subscriber().on_next(...);

Как сделать UnitTest для проверки моего собственного наблюдаемого RxCpp?

Я хочу подписаться на CDataLinkFrameget.getFramesObservable (), затем передать ему предварительно определенный поток байтов и проверить сообщения об ожидаемых кадрах:

const char testData[] = {(char) 0x1, (char) 0x02, (char) 0xFD, 'H', 'e', 'l', 'l', 'o', '!', (char) 0xFF};
auto observable = dlf.getFramesObservable();
// Subscribe to some kind of test_observer

// Provide some data to fire the frame
dlf.consumeData(buff);

// Test for expected frames. 
// In my case exactly 1 frame of std::string type ('Hello!')

Как я могу это сделать в RxCpp?

...