| /* |
| * upb - a minimalist implementation of protocol buffers. |
| * |
| * Copyright (c) 2011 Google Inc. See LICENSE for details. |
| * Author: Josh Haberman <jhaberman@gmail.com> |
| * |
| * Tests for C++ wrappers. |
| */ |
| |
| #include <stdio.h> |
| #include <iostream> |
| #include "upb/bytestream.hpp" |
| #include "upb/def.hpp" |
| #include "upb/handlers.hpp" |
| #include "upb/upb.hpp" |
| #include "upb/pb/decoder.hpp" |
| #include "upb/pb/glue.hpp" |
| |
| static void TestSymbolTable(const char *descriptor_file) { |
| upb::SymbolTable *s = upb::SymbolTable::New(); |
| upb::Status status; |
| if (!upb::LoadDescriptorFileIntoSymtab(s, descriptor_file, &status)) { |
| std::cerr << "Couldn't load descriptor: " << status; |
| exit(1); |
| } |
| const upb::MessageDef *md = s->LookupMessage("A"); |
| assert(md); |
| |
| s->Unref(); |
| md->Unref(); |
| } |
| |
| static void TestByteStream() { |
| upb::StringSource stringsrc; |
| stringsrc.Reset("testing", 7); |
| upb::ByteRegion* byteregion = stringsrc.AllBytes(); |
| assert(byteregion->FetchAll() == UPB_BYTE_OK); |
| char* str = byteregion->StrDup(); |
| assert(strcmp(str, "testing") == 0); |
| free(str); |
| } |
| |
| int main(int argc, char *argv[]) { |
| if (argc < 2) { |
| fprintf(stderr, "Usage: test_cpp <descriptor file>\n"); |
| return 1; |
| } |
| TestSymbolTable(argv[1]); |
| TestByteStream(); |
| return 0; |
| } |