Add working TopicTree unit test

This commit is contained in:
Alex Hultman
2021-01-28 00:28:10 +01:00
parent 90e61e88fd
commit 8690dd31ca
2 changed files with 69 additions and 11 deletions
+3 -3
View File
@@ -1,9 +1,9 @@
default: default:
#$(CXX) -std=c++17 -fsanitize=address TopicTree.cpp -o TopicTree $(CXX) -std=c++17 -fsanitize=address TopicTree.cpp -o TopicTree
#./TopicTree ./TopicTree
$(CXX) -std=c++17 -fsanitize=address HttpRouter.cpp -o HttpRouter $(CXX) -std=c++17 -fsanitize=address HttpRouter.cpp -o HttpRouter
./HttpRouter ./HttpRouter
$(CXX) -std=c++17 -fsanitize=address BloomFilter.cpp -o BloomFilter $(CXX) -std=c++17 -fsanitize=address BloomFilter.cpp -o BloomFilter
./BloomFilter ./BloomFilter
$(CXX) -std=c++17 -fsanitize=address ExtensionsNegotiator.cpp -o ExtensionsNegotiator $(CXX) -std=c++17 -fsanitize=address ExtensionsNegotiator.cpp -o ExtensionsNegotiator
./ExtensionsNegotiator ./ExtensionsNegotiator
+66 -8
View File
@@ -7,14 +7,16 @@ void testUnsubscribeInside() {
std::cout << "TestUnsubscribeInside" << std::endl; std::cout << "TestUnsubscribeInside" << std::endl;
uWS::TopicTree *topicTree; uWS::TopicTree *topicTree;
std::map<void *, std::string> expectedResult; std::map<void *, std::pair<std::string, std::string>> expectedResult;
topicTree = new uWS::TopicTree([&topicTree, &expectedResult](uWS::Subscriber *s, std::pair<std::string_view, std::string_view> dataChannels) {
std::string_view data = dataChannels.second;
topicTree = new uWS::TopicTree([&topicTree, &expectedResult](uWS::Subscriber *s, std::string_view data) {
/* Check for unexpected subscribers */ /* Check for unexpected subscribers */
assert(expectedResult.find(s) != expectedResult.end()); assert(expectedResult.find(s) != expectedResult.end());
/* Check for unexpected data */ /* Check for unexpected data */
assert(expectedResult[s] == data); assert(expectedResult[s].first == dataChannels.first && expectedResult[s].second == dataChannels.second);
/* This one causes mess-up */ /* This one causes mess-up */
topicTree->unsubscribeAll(s); topicTree->unsubscribeAll(s);
@@ -28,8 +30,8 @@ void testUnsubscribeInside() {
/* Fill out expectedResult */ /* Fill out expectedResult */
expectedResult = { expectedResult = {
{s1, "Ett!"}, {s1, {"Ett!", "Ett!"}},
{s2, "Två!"} {s2, {"Två!", "Två!"}}
}; };
/* Make sure s1 < s2 */ /* Make sure s1 < s2 */
@@ -44,8 +46,62 @@ void testUnsubscribeInside() {
topicTree->subscribe("1", s1); topicTree->subscribe("1", s1);
/* This order matters, as it fills triggeredTopics array in order */ /* This order matters, as it fills triggeredTopics array in order */
topicTree->publish("1", "Ett!"); topicTree->publish("1", {std::string_view("Ett!"), std::string_view("Ett!")});
topicTree->publish("2", "Två!"); topicTree->publish("2", {std::string_view("Två!"), std::string_view("Ett!")});
topicTree->drain();
/* Release resources */
topicTree->unsubscribeAll(s1);
topicTree->unsubscribeAll(s2);
delete s1;
delete s2;
delete topicTree;
}
void testPublisherHoles() {
std::cout << "TestPublisherHoles" << std::endl;
uWS::TopicTree *topicTree;
std::map<void *, std::pair<std::string, std::string>> expectedResult;
topicTree = new uWS::TopicTree([&topicTree, &expectedResult](uWS::Subscriber *s, std::pair<std::string_view, std::string_view> dataChannels) {
/* Check for unexpected subscribers */
assert(expectedResult.find(s) != expectedResult.end());
/* Check for unexpected data */
assert(expectedResult[s].first == dataChannels.first && expectedResult[s].second == dataChannels.second);
/* We actually don't use this one */
return 0;
});
uWS::Subscriber *s1 = new uWS::Subscriber(nullptr);
uWS::Subscriber *s2 = new uWS::Subscriber(nullptr);
/* Fill out expectedResult */
expectedResult = {
{s1, {"Två!", "Två!"}}, // todo: this one should not receive what he sent himself
{s2, {"Två!", "Två!"}}
};
/* Make sure s1 < s2 */
if (s2 < s1) {
uWS::Subscriber *tmp = s1;
s1 = s2;
s2 = tmp;
}
/* This order does not matter as it fills a tree */
topicTree->subscribe("1", s2);
topicTree->subscribe("1", s1);
/* This order matters, as it fills triggeredTopics array in order */
//topicTree->publish("1", {std::string_view("Ett!"), std::string_view("Ett!")});
topicTree->publish("1", {std::string_view("Två!"), std::string_view("Två!")});
topicTree->drain(); topicTree->drain();
@@ -60,5 +116,7 @@ void testUnsubscribeInside() {
} }
int main() { int main() {
testUnsubscribeInside(); //testUnsubscribeInside();
testPublisherHoles();
} }