summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2011-02-05 18:53:32 -0800
committerJoshua Haberman <joshua@reverberate.org>2011-02-05 18:53:32 -0800
commit3affb319260263efc3cee502896d9f981186c7da (patch)
tree6d519e32a23dc1d3b03c3da0791fd2ea00f154f4 /tests
parente170259e4ababf39829fa9339fdf0817e38c949e (diff)
Tons of work: we're close to passing test_vs_proto2 again.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_decoder.c9
-rw-r--r--tests/test_vs_proto2.cc79
2 files changed, 48 insertions, 40 deletions
diff --git a/tests/test_decoder.c b/tests/test_decoder.c
index f48472d..714871a 100644
--- a/tests/test_decoder.c
+++ b/tests/test_decoder.c
@@ -13,13 +13,14 @@ int main() {
upb_stdio_reset(in, stdin);
upb_stdio *out = upb_stdio_new();
upb_stdio_reset(out, stdout);
- upb_decoder *d = upb_decoder_new(upb_downcast_msgdef(fds));
- upb_decoder_reset(d, upb_stdio_bytesrc(in));
+ upb_decoder d;
+ upb_decoder_init(&d, upb_downcast_msgdef(fds));
+ upb_decoder_reset(&d, upb_stdio_bytesrc(in));
upb_textprinter *p = upb_textprinter_new();
upb_handlers handlers;
upb_handlers_init(&handlers);
upb_textprinter_reset(p, &handlers, upb_stdio_bytesink(out), false);
- upb_src *src = upb_decoder_src(d);
+ upb_src *src = upb_decoder_src(&d);
upb_src_sethandlers(src, &handlers);
upb_status status = UPB_STATUS_INIT;
@@ -30,7 +31,7 @@ int main() {
upb_status_uninit(&status);
upb_stdio_free(in);
upb_stdio_free(out);
- upb_decoder_free(d);
+ upb_decoder_uninit(&d);
upb_textprinter_free(p);
upb_def_unref(fds);
upb_symtab_unref(symtab);
diff --git a/tests/test_vs_proto2.cc b/tests/test_vs_proto2.cc
index 9446b8f..bf0296c 100644
--- a/tests/test_vs_proto2.cc
+++ b/tests/test_vs_proto2.cc
@@ -4,9 +4,10 @@
#include <stdio.h>
#include <stdlib.h>
#include <google/protobuf/descriptor.h>
-#include "upb_msg.h"
-#include "upb_def.h"
#include "upb_decoder.h"
+#include "upb_def.h"
+#include "upb_glue.h"
+#include "upb_msg.h"
#include "upb_strstream.h"
int num_assertions = 0;
@@ -26,7 +27,7 @@ void compare_arrays(const google::protobuf::Reflection *r,
upb_msg *upb_msg, upb_fielddef *upb_f)
{
ASSERT(upb_msg_has(upb_msg, upb_f));
- upb_array *arr = upb_msg_get(upb_msg, upb_f).arr;
+ upb_array *arr = upb_value_getarr(upb_msg_get(upb_msg, upb_f));
ASSERT(upb_array_len(arr) == (upb_arraylen_t)r->FieldSize(proto2_msg, proto2_f));
for(upb_arraylen_t i = 0; i < upb_array_len(arr); i++) {
upb_value v = upb_array_get(arr, upb_f, i);
@@ -34,37 +35,38 @@ void compare_arrays(const google::protobuf::Reflection *r,
default:
ASSERT(false);
case UPB_TYPE(DOUBLE):
- ASSERT(r->GetRepeatedDouble(proto2_msg, proto2_f, i) == v._double);
+ ASSERT(r->GetRepeatedDouble(proto2_msg, proto2_f, i) == upb_value_getdouble(v));
break;
case UPB_TYPE(FLOAT):
- ASSERT(r->GetRepeatedFloat(proto2_msg, proto2_f, i) == v._float);
+ ASSERT(r->GetRepeatedFloat(proto2_msg, proto2_f, i) == upb_value_getfloat(v));
break;
case UPB_TYPE(INT64):
case UPB_TYPE(SINT64):
case UPB_TYPE(SFIXED64):
- ASSERT(r->GetRepeatedInt64(proto2_msg, proto2_f, i) == v.int64);
+ ASSERT(r->GetRepeatedInt64(proto2_msg, proto2_f, i) == upb_value_getint64(v));
break;
case UPB_TYPE(UINT64):
case UPB_TYPE(FIXED64):
- ASSERT(r->GetRepeatedUInt64(proto2_msg, proto2_f, i) == v.uint64);
+ ASSERT(r->GetRepeatedUInt64(proto2_msg, proto2_f, i) == upb_value_getuint64(v));
break;
case UPB_TYPE(SFIXED32):
case UPB_TYPE(SINT32):
case UPB_TYPE(INT32):
case UPB_TYPE(ENUM):
- ASSERT(r->GetRepeatedInt32(proto2_msg, proto2_f, i) == v.int32);
+ ASSERT(r->GetRepeatedInt32(proto2_msg, proto2_f, i) == upb_value_getint32(v));
break;
case UPB_TYPE(FIXED32):
case UPB_TYPE(UINT32):
- ASSERT(r->GetRepeatedUInt32(proto2_msg, proto2_f, i) == v.uint32);
+ ASSERT(r->GetRepeatedUInt32(proto2_msg, proto2_f, i) == upb_value_getuint32(v));
break;
case UPB_TYPE(BOOL):
- ASSERT(r->GetRepeatedBool(proto2_msg, proto2_f, i) == v._bool);
+ ASSERT(r->GetRepeatedBool(proto2_msg, proto2_f, i) == upb_value_getbool(v));
break;
case UPB_TYPE(STRING):
case UPB_TYPE(BYTES): {
std::string str = r->GetRepeatedString(proto2_msg, proto2_f, i);
- std::string str2(upb_string_getrobuf(v.str), upb_string_len(v.str));
+ upb_string *upbstr = upb_value_getstr(v);
+ std::string str2(upb_string_getrobuf(upbstr), upb_string_len(upbstr));
ASSERT(str == str2);
break;
}
@@ -72,7 +74,7 @@ void compare_arrays(const google::protobuf::Reflection *r,
case UPB_TYPE(MESSAGE):
ASSERT(upb_dyncast_msgdef(upb_f->def) != NULL);
compare(r->GetRepeatedMessage(proto2_msg, proto2_f, i),
- v.msg, upb_downcast_msgdef(upb_f->def));
+ upb_value_getmsg(v), upb_downcast_msgdef(upb_f->def));
}
}
}
@@ -87,44 +89,45 @@ void compare_values(const google::protobuf::Reflection *r,
default:
ASSERT(false);
case UPB_TYPE(DOUBLE):
- ASSERT(r->GetDouble(proto2_msg, proto2_f) == v._double);
+ ASSERT(r->GetDouble(proto2_msg, proto2_f) == upb_value_getdouble(v));
break;
case UPB_TYPE(FLOAT):
- ASSERT(r->GetFloat(proto2_msg, proto2_f) == v._float);
+ ASSERT(r->GetFloat(proto2_msg, proto2_f) == upb_value_getfloat(v));
break;
case UPB_TYPE(INT64):
case UPB_TYPE(SINT64):
case UPB_TYPE(SFIXED64):
- ASSERT(r->GetInt64(proto2_msg, proto2_f) == v.int64);
+ ASSERT(r->GetInt64(proto2_msg, proto2_f) == upb_value_getint64(v));
break;
case UPB_TYPE(UINT64):
case UPB_TYPE(FIXED64):
- ASSERT(r->GetUInt64(proto2_msg, proto2_f) == v.uint64);
+ ASSERT(r->GetUInt64(proto2_msg, proto2_f) == upb_value_getuint64(v));
break;
case UPB_TYPE(SFIXED32):
case UPB_TYPE(SINT32):
case UPB_TYPE(INT32):
case UPB_TYPE(ENUM):
- ASSERT(r->GetInt32(proto2_msg, proto2_f) == v.int32);
+ ASSERT(r->GetInt32(proto2_msg, proto2_f) == upb_value_getint32(v));
break;
case UPB_TYPE(FIXED32):
case UPB_TYPE(UINT32):
- ASSERT(r->GetUInt32(proto2_msg, proto2_f) == v.uint32);
+ ASSERT(r->GetUInt32(proto2_msg, proto2_f) == upb_value_getuint32(v));
break;
case UPB_TYPE(BOOL):
- ASSERT(r->GetBool(proto2_msg, proto2_f) == v._bool);
+ ASSERT(r->GetBool(proto2_msg, proto2_f) == upb_value_getbool(v));
break;
case UPB_TYPE(STRING):
case UPB_TYPE(BYTES): {
std::string str = r->GetString(proto2_msg, proto2_f);
- std::string str2(upb_string_getrobuf(v.str), upb_string_len(v.str));
+ upb_string *upbstr = upb_value_getstr(v);
+ std::string str2(upb_string_getrobuf(upbstr), upb_string_len(upbstr));
ASSERT(str == str2);
break;
}
case UPB_TYPE(GROUP):
case UPB_TYPE(MESSAGE):
compare(r->GetMessage(proto2_msg, proto2_f),
- v.msg, upb_downcast_msgdef(upb_f->def));
+ upb_value_getmsg(v), upb_downcast_msgdef(upb_f->def));
}
}
@@ -173,7 +176,7 @@ void parse_and_compare(MESSAGE_CIDENT *proto2_msg,
// Parse to both proto2 and upb.
ASSERT(proto2_msg->ParseFromArray(upb_string_getrobuf(str), upb_string_len(str)));
upb_status status = UPB_STATUS_INIT;
- upb_msg_decodestr(upb_msg, upb_md, str, &status);
+ upb_strtomsg(str, upb_msg, upb_md, &status);
ASSERT(upb_ok(&status));
compare(*proto2_msg, upb_msg, upb_md);
}
@@ -205,24 +208,28 @@ int main(int argc, char *argv[])
upb_symtab_add_descriptorproto(symtab);
upb_def *fds_msgdef = upb_symtab_lookup(
symtab, UPB_STRLIT("google.protobuf.FileDescriptorSet"));
+ assert(fds_msgdef);
- upb_stringsrc *ssrc = upb_stringsrc_new();
- upb_stringsrc_reset(ssrc, fds);
- upb_decoder *decoder = upb_decoder_new(upb_downcast_msgdef(fds_msgdef));
- upb_decoder_reset(decoder, upb_stringsrc_bytesrc(ssrc));
- upb_symtab_addfds(symtab, upb_decoder_src(decoder), &status);
+ upb_stringsrc ssrc;
+ upb_stringsrc_init(&ssrc);
+ upb_stringsrc_reset(&ssrc, fds);
+ upb_decoder decoder;
+ upb_decoder_init(&decoder, upb_downcast_msgdef(fds_msgdef));
+ upb_decoder_reset(&decoder, upb_stringsrc_bytesrc(&ssrc));
+ upb_symtab_addfds(symtab, upb_decoder_src(&decoder), &status);
if(!upb_ok(&status)) {
fprintf(stderr, "Error importing " MESSAGE_DESCRIPTOR_FILE ": ");
upb_printerr(&status);
return 1;
}
upb_string_unref(fds);
- upb_decoder_free(decoder);
- upb_stringsrc_free(ssrc);
+ upb_decoder_uninit(&decoder);
+ upb_stringsrc_uninit(&ssrc);
upb_string *proto_name = upb_strdupc(MESSAGE_NAME);
- upb_msgdef *def = upb_downcast_msgdef(upb_symtab_lookup(symtab, proto_name));
- if(!def) {
+ upb_def *def = upb_symtab_lookup(symtab, proto_name);
+ upb_msgdef *msgdef;
+ if(!def || !(msgdef = upb_dyncast_msgdef(def))) {
fprintf(stderr, "Error finding symbol '" UPB_STRFMT "'.\n",
UPB_STRARG(proto_name));
return 1;
@@ -238,13 +245,13 @@ int main(int argc, char *argv[])
// Run twice to test proper object reuse.
MESSAGE_CIDENT proto2_msg;
- upb_msg *upb_msg = upb_msg_new(def);
- parse_and_compare(&proto2_msg, upb_msg, def, str);
- parse_and_compare(&proto2_msg, upb_msg, def, str);
+ upb_msg *upb_msg = upb_msg_new(msgdef);
+ parse_and_compare(&proto2_msg, upb_msg, msgdef, str);
+ parse_and_compare(&proto2_msg, upb_msg, msgdef, str);
printf("All tests passed, %d assertions.\n", num_assertions);
- upb_msg_unref(upb_msg, def);
- upb_def_unref(UPB_UPCAST(def));
+ upb_msg_unref(upb_msg, msgdef);
+ upb_def_unref(UPB_UPCAST(msgdef));
upb_string_unref(str);
upb_symtab_unref(symtab);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback