Skip to content
This repository was archived by the owner on Mar 17, 2025. It is now read-only.

Commit a7bf160

Browse files
committed
Enabling and fix stream unit test for modem code
1 parent 4c5a98c commit a7bf160

File tree

5 files changed

+31
-30
lines changed

5 files changed

+31
-30
lines changed

contrib/src/modem/db/stream-command.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@ bool StreamCommand::execute(const String& command,
2121
out->println(fbase().error().c_str());
2222
return false;
2323
}
24-
2524
bool running = true;
2625
DynamicJsonBuffer buffer;
2726
while(running) {
2827
if (fbase().available()) {
2928
FirebaseObject event = fbase().readEvent();
3029
out->print("+");
31-
out->print(event.getString("event").c_str());
30+
out->print(event.getString("type").c_str());
3231
out->print(" ");
3332
String data = event.getString("data");
3433
out->println(event.getString("path"));

contrib/test/mock-firebase.h

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class MockFirebase : public FirebaseArduino {
1818
MOCK_METHOD0(available, bool ());
1919
MOCK_METHOD0(readEvent, FirebaseObject ());
2020
MOCK_METHOD2(begin, void (const String& host, const String& auth));
21+
MOCK_METHOD1(stream, void (const String& path));
2122
};
2223

2324
} // modem

contrib/test/modem/Makefile

+9-10
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ CXXFLAGS += -g -Wall -Wextra -pthread -std=c++11
5656
# created to the list.
5757
TESTS = get-command_test set-command_test remove-command_test \
5858
push-command_test begin-command_test \
59-
serial-transceiver_test
60-
# stream-command_test
59+
serial-transceiver_test stream-command_test
6160

6261
# All Google Test headers. Usually you shouldn't change this
6362
# definition.
@@ -200,15 +199,15 @@ begin-command_test : begin-command.o begin-command_test.o FirebaseArduino.o Fire
200199
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
201200

202201

203-
#stream-command.o : $(SRC_ROOT)/modem/db/stream-command.cpp
204-
# $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/db/stream-command.cpp
205-
#
206-
#stream-command_test.o : $(TEST_DIR)/stream-command_test.cpp $(GMOCK_HEADERS)
207-
# $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/stream-command_test.cpp
208-
#
209-
#stream-command_test : stream-command.o stream-command_test.o FirebaseArduino.o Firebase.o FirebaseObject.o FirebaseHttpClient_dummy.o gmock_main.a \
202+
stream-command.o : $(SRC_ROOT)/modem/db/stream-command.cpp
203+
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SRC_ROOT)/modem/db/stream-command.cpp
204+
205+
stream-command_test.o : $(TEST_DIR)/stream-command_test.cpp $(GMOCK_HEADERS)
206+
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_DIR)/stream-command_test.cpp
207+
208+
stream-command_test : stream-command.o stream-command_test.o FirebaseArduino.o Firebase.o FirebaseObject.o FirebaseHttpClient_dummy.o gmock_main.a \
210209
arduino_mock_all.a
211-
# $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
210+
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
212211

213212

214213
SerialTransceiver.o : $(SRC_ROOT)/modem/SerialTransceiver.cpp

contrib/test/modem/stream-command_test.cpp

+19-17
Original file line numberDiff line numberDiff line change
@@ -17,41 +17,41 @@ using ::testing::_;
1717
class StreamCommandTest : public ::testing::Test {
1818
protected:
1919
void SetUp() override {
20-
stream_.reset(new FirebaseStream());
2120
}
2221

23-
bool RunCommand(const FirebaseError& error) {
22+
bool RunCommand() {
2423
StreamCommand cmd(&fbase_);
2524
return cmd.execute("BEGIN_STREAM", &in_, &out_);
2625
}
2726

2827
MockInputStream in_;
2928
MockOutputStream out_;
3029
MockFirebase fbase_;
31-
std::unique_ptr<FirebaseStream> stream_;
3230
};
3331

3432
TEST_F(StreamCommandTest, streams) {
3533
const String path("/test/path");
34+
35+
const String no_error = "";
36+
EXPECT_CALL(fbase_, error()).WillRepeatedly(ReturnRef(no_error));
37+
38+
const String data = "TestValue";
39+
const String value(String("{\"path\":\"/test/path\",\"data\":\"") + data + "\",\"type\":\"PUT\"}");
40+
41+
const FirebaseObject fo = FirebaseObject(value.c_str());
42+
EXPECT_CALL(fbase_, readEvent()).WillRepeatedly(Return(fo));
43+
3644
EXPECT_CALL(in_, available())
3745
.WillRepeatedly(Return(true));
3846

3947
EXPECT_CALL(in_, readLine())
4048
.WillOnce(Return(path))
4149
.WillOnce(Return("END_STREAM"));
4250

43-
const String data = "Test Value";
44-
const String value(String("{\"path\" : \"/test/path\", \"data\" : \"") + data + "\"}");
45-
EXPECT_CALL(fbase_, available())
51+
EXPECT_CALL(fbase_, available())
4652
.WillOnce(Return(true))
4753
.WillRepeatedly(Return(false));
48-
49-
EXPECT_CALL(fbase_, startStreaming());
50-
EXPECT_CALL(*stream_, read(_))
51-
.WillOnce(Invoke([&value](std::string& json) {
52-
json = value.c_str();
53-
return FirebaseStream::PUT;
54-
}));
54+
EXPECT_CALL(fbase_, stream(path));
5555

5656
EXPECT_CALL(out_, print(String("+")))
5757
.WillOnce(Return(1));
@@ -70,21 +70,23 @@ TEST_F(StreamCommandTest, streams) {
7070
EXPECT_CALL(out_, println(String("+OK")))
7171
.WillOnce(Return(1));
7272

73-
ASSERT_TRUE(RunCommand(FirebaseError()));
73+
ASSERT_TRUE(RunCommand());
7474
}
7575

7676
TEST_F(StreamCommandTest, handlesError) {
77-
FirebaseError error(-200, "Test Error.");
77+
const String error("Test Error.");
7878
const String path("/test/path");
7979
EXPECT_CALL(in_, readLine())
8080
.WillOnce(Return(path));
8181

82+
EXPECT_CALL(fbase_, error()).WillRepeatedly(ReturnRef(error));
83+
8284
EXPECT_CALL(out_, print(String("-FAIL ")))
8385
.WillOnce(Return(1));
8486

85-
EXPECT_CALL(out_, println(String(error.message().c_str())))
87+
EXPECT_CALL(out_, println(String(error.c_str())))
8688
.WillOnce(Return(1));
87-
ASSERT_FALSE(RunCommand(error));
89+
ASSERT_FALSE(RunCommand());
8890
}
8991

9092
} // modem

src/FirebaseArduino.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ class FirebaseArduino {
191191
* monitoring available() and calling readEvent() to get new events.
192192
* \param path The path inside of your db to the node you wish to monitor.
193193
*/
194-
void stream(const String& path);
194+
virtual void stream(const String& path);
195195

196196
/**
197197
* Checks if there are new events available. This is only meaningful once

0 commit comments

Comments
 (0)