#include <cstdio> #include <cstring> #include <mosquittopp.h> void print_error(const char *topic, char **topics, int topic_count) { int i; printf("TOPIC: %s\n", topic); printf("TOKENS: "); for(i=0; i<topic_count; i++){ printf("%s", topics[i]); if(i+1<topic_count){ printf("/"); } } printf("\n"); } int main(int argc, char *argv[]) { char **topics; int topic_count; if(mosqpp::sub_topic_tokenise("topic", &topics, &topic_count)){ printf("Out of memory.\n"); return 1; } if(topic_count != 1 || strcmp(topics[0], "topic")){ print_error("topic", topics, topic_count); return 1; } mosqpp::sub_topic_tokens_free(&topics, topic_count); if(mosqpp::sub_topic_tokenise("a/deep/topic/hierarchy", &topics, &topic_count)){ printf("Out of memory.\n"); return 1; } if(topic_count != 4 || strcmp(topics[0], "a") || strcmp(topics[1], "deep") || strcmp(topics[2], "topic") || strcmp(topics[3], "hierarchy")){ print_error("a/deep/topic/hierarchy", topics, topic_count); return 1; } mosqpp::sub_topic_tokens_free(&topics, topic_count); if(mosqpp::sub_topic_tokenise("/a/deep/topic/hierarchy", &topics, &topic_count)){ printf("Out of memory.\n"); return 1; } if(topic_count != 5 || topics[0] || strcmp(topics[1], "a") || strcmp(topics[2], "deep") || strcmp(topics[3], "topic") || strcmp(topics[4], "hierarchy")){ print_error("/a/deep/topic/hierarchy", topics, topic_count); return 1; } mosqpp::sub_topic_tokens_free(&topics, topic_count); if(mosqpp::sub_topic_tokenise("a/b/c", &topics, &topic_count)){ printf("Out of memory.\n"); return 1; } if(topic_count != 3 || strcmp(topics[0], "a") || strcmp(topics[1], "b") || strcmp(topics[2], "c")){ print_error("a/b/c", topics, topic_count); return 1; } mosqpp::sub_topic_tokens_free(&topics, topic_count); if(mosqpp::sub_topic_tokenise("/a/b/c", &topics, &topic_count)){ printf("Out of memory.\n"); return 1; } if(topic_count != 4 || topics[0] || strcmp(topics[1], "a") || strcmp(topics[2], "b") || strcmp(topics[3], "c")){ print_error("/a/b/c", topics, topic_count); return 1; } mosqpp::sub_topic_tokens_free(&topics, topic_count); if(mosqpp::sub_topic_tokenise("a///hierarchy", &topics, &topic_count)){ printf("Out of memory.\n"); return 1; } if(topic_count != 4 || strcmp(topics[0], "a") || topics[1] || topics[2] || strcmp(topics[3], "hierarchy")){ print_error("a///hierarchy", topics, topic_count); return 1; } mosqpp::sub_topic_tokens_free(&topics, topic_count); if(mosqpp::sub_topic_tokenise("/a///hierarchy", &topics, &topic_count)){ printf("Out of memory.\n"); return 1; } if(topic_count != 5 || topics[0] || strcmp(topics[1], "a") || topics[2] || topics[3] || strcmp(topics[4], "hierarchy")){ print_error("/a///hierarchy", topics, topic_count); return 1; } mosqpp::sub_topic_tokens_free(&topics, topic_count); if(mosqpp::sub_topic_tokenise("/a///hierarchy/", &topics, &topic_count)){ printf("Out of memory.\n"); return 1; } if(topic_count != 6 || topics[0] || strcmp(topics[1], "a") || topics[2] || topics[3] || strcmp(topics[4], "hierarchy") || topics[3]){ print_error("/a///hierarchy/", topics, topic_count); return 1; } mosqpp::sub_topic_tokens_free(&topics, topic_count); return 0; }