X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=src%2Flibswift%2Ftests%2Fdgramtest.cpp;fp=src%2Flibswift%2Ftests%2Fdgramtest.cpp;h=701b9c3e345c058ce72083f18745c566aaedbb27;hb=45963a7511531cd1656ad5d3847d2dafd015c54d;hp=0000000000000000000000000000000000000000;hpb=d069796805ad79542fd7e4406d1e9c6d2d8c2ef7;p=swifty.git diff --git a/src/libswift/tests/dgramtest.cpp b/src/libswift/tests/dgramtest.cpp new file mode 100644 index 0000000..701b9c3 --- /dev/null +++ b/src/libswift/tests/dgramtest.cpp @@ -0,0 +1,115 @@ +/* + * dgramtest.cpp + * serp++ + * + * Created by Victor Grishchenko on 3/13/09. + * Copyright 2009-2012 TECHNISCHE UNIVERSITEIT DELFT. All rights reserved. + * + */ +#include +//#include +#include "swift.h" // Arno: for LibraryInit + +using namespace swift; + +struct event_base *evbase; +struct event evrecv; + +void ReceiveCallback(int fd, short event, void *arg) { +} + +TEST(Datagram, AddressTest) { + Address addr("127.0.0.1:1000"); + EXPECT_EQ(INADDR_LOOPBACK,addr.ipv4()); + EXPECT_EQ(1000,addr.port()); + Address das2("node300.das2.ewi.tudelft.nl:20000"); + Address das2b("130.161.211.200:20000"); + EXPECT_EQ(das2.ipv4(),das2b.ipv4()); + EXPECT_EQ(20000,das2.port()); +} + + +TEST(Datagram, BinaryTest) { + evutil_socket_t socket = Channel::Bind(7001); + ASSERT_TRUE(socket>0); + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(7001); + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + const char * text = "text"; + const uint8_t num8 = 0xab; + const uint16_t num16 = 0xabcd; + const uint32_t num32 = 0xabcdef01; + const uint64_t num64 = 0xabcdefabcdeffULL; + char buf[1024]; + int i; + struct evbuffer *snd = evbuffer_new(); + evbuffer_add(snd, text, strlen(text)); + evbuffer_add_8(snd, num8); + evbuffer_add_16be(snd, num16); + evbuffer_add_32be(snd, num32); + evbuffer_add_64be(snd, num64); + int datalen = evbuffer_get_length(snd); + unsigned char *data = evbuffer_pullup(snd, datalen); + for(i=0; i0); + ASSERT_TRUE(sock2>0); + /*struct sockaddr_in addr1, addr2; + addr1.sin_family = AF_INET; + addr1.sin_port = htons(10001); + addr1.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + addr2.sin_family = AF_INET; + addr2.sin_port = htons(10002); + addr2.sin_addr.s_addr = htonl(INADDR_LOOPBACK);*/ + struct evbuffer *snd = evbuffer_new(); + evbuffer_add_32be(snd, 1234); + Channel::SendTo(sock1,Address("127.0.0.1:10002"),snd); + evbuffer_free(snd); + event_assign(&evrecv, evbase, sock2, EV_READ, ReceiveCallback, NULL); + event_add(&evrecv, NULL); + event_base_dispatch(evbase); + struct evbuffer *rcv = evbuffer_new(); + Address address; + Channel::RecvFrom(sock2, address, rcv); + uint32_t test = evbuffer_remove_32be(rcv); + ASSERT_EQ(1234,test); + evbuffer_free(rcv); + Channel::CloseSocket(sock1); + Channel::CloseSocket(sock2); +} + +int main (int argc, char** argv) { + swift::LibraryInit(); + evbase = event_base_new(); + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}