diff options
Diffstat (limited to 'Library/Formula/msgpack.rb')
| -rw-r--r-- | Library/Formula/msgpack.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Library/Formula/msgpack.rb b/Library/Formula/msgpack.rb index 6715aa773..681fb22ec 100644 --- a/Library/Formula/msgpack.rb +++ b/Library/Formula/msgpack.rb @@ -13,4 +13,44 @@ class Msgpack < Formula system "./configure", "--disable-dependency-tracking", "--prefix=#{prefix}" system "make install" end + + def test + # Reference: http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+C+Language + mktemp do + (Pathname.pwd/'test.c').write <<-EOS.undent + #include <msgpack.h> + #include <stdio.h> + + int main(void) + { + msgpack_sbuffer* buffer = msgpack_sbuffer_new(); + msgpack_packer* pk = msgpack_packer_new(buffer, msgpack_sbuffer_write); + msgpack_pack_int(pk, 1); + msgpack_pack_int(pk, 2); + msgpack_pack_int(pk, 3); + + /* deserializes these objects using msgpack_unpacker. */ + msgpack_unpacker pac; + msgpack_unpacker_init(&pac, MSGPACK_UNPACKER_INIT_BUFFER_SIZE); + + /* feeds the buffer. */ + msgpack_unpacker_reserve_buffer(&pac, buffer->size); + memcpy(msgpack_unpacker_buffer(&pac), buffer->data, buffer->size); + msgpack_unpacker_buffer_consumed(&pac, buffer->size); + + /* now starts streaming deserialization. */ + msgpack_unpacked result; + msgpack_unpacked_init(&result); + + while(msgpack_unpacker_next(&pac, &result)) { + msgpack_object_print(stdout, result.data); + puts(""); + } + } + EOS + + system ENV.cc, "-o", "test", "test.c", "-lmsgpack" + `./test` == "1\n2\n3\n" + end + end end |
