diff --git a/examples/6_buffer_failtest.cpp b/examples/6_buffer_failtest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a2b5784927b77d6e22ad67aabe262226c426f1e5 --- /dev/null +++ b/examples/6_buffer_failtest.cpp @@ -0,0 +1,72 @@ + +#include <iostream> +#include <sstream> +#include <cassert> +#include <tscpp.h> +#include "types.h" + +using namespace std; +using namespace tscpp; + +int main() +{ + //BufferTooSmall while serialize + { + Point3d p1(1,2,3); + char buffer[10]; + assert(serialize(buffer,sizeof(buffer),p1)==BufferTooSmall); + } + + //BufferTooSmall while unserialize + { + Point3d p1(1,2,3); + char buffer[64]; + int serializedSize=serialize(buffer,sizeof(buffer),p1); + assert(serializedSize>0); + + Point3d p2; + assert(unserialize(p2,buffer,serializedSize-1)==BufferTooSmall); + assert(p2.x==0 && p2.y==0 && p2.z==0); + } + + //WrongType while unserialize + { + Point3d p(1,2,3); + char buffer[64]; + int serializedSize=serialize(buffer,sizeof(buffer),p); + assert(serializedSize>0); + + Point2d q; + assert(unserialize(q,buffer,serializedSize)==WrongType); + assert(q.x==0 && q.y==0); + } + + TypePool tp; + tp.registerType<Point2d>([&](Point2d& t) { assert(false); }); + tp.registerType<Point3d>([&](Point3d& t) { assert(false); }); + + { + Point3d p(1,2,3); + char buffer[64]; + int serializedSize=serialize(buffer,sizeof(buffer),p); + assert(serializedSize>0); + + //BufferTooSmall while unserializeUnknown (name) + assert(unserializeUnknown(tp,buffer,1)==BufferTooSmall); + + //BufferTooSmall while unserializeUnknown (type) + assert(unserializeUnknown(tp,buffer,serializedSize-1)==BufferTooSmall); + } + + //UnknownType while unserializeUnknown + { + MiscData md; + char buffer[1024]; + int serializedSize=serialize(buffer,sizeof(buffer),md); + assert(serializedSize>0); + + assert(unserializeUnknown(tp,buffer,serializedSize)==UnknownType); + } + + cout<<"Test passed"<<endl; +} diff --git a/examples/Makefile b/examples/Makefile index 2f227a461da343a7e73710e3d27c980eec665107..ab098d7dec963b3d71b3b03d91cf5b837a06c41f 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -1,6 +1,6 @@ CXX = g++ -CXXFLAGS = -std=c++11 -O2 -Wall -I.. +CXXFLAGS = -std=c++11 -g -O0 -fsanitize=address -Wall -I.. all: $(CXX) $(CXXFLAGS) 1_stream_known.cpp ../tscpp.cpp -o 1_stream_known @@ -8,12 +8,14 @@ all: $(CXX) $(CXXFLAGS) 3_buffer_known.cpp ../tscpp.cpp -o 3_buffer_known $(CXX) $(CXXFLAGS) 4_buffer_unknown.cpp ../tscpp.cpp -o 4_buffer_unknown $(CXX) $(CXXFLAGS) 5_stream_failtest.cpp ../tscpp.cpp -o 5_stream_failtest + $(CXX) $(CXXFLAGS) 6_buffer_failtest.cpp ../tscpp.cpp -o 6_buffer_failtest ./1_stream_known ./2_stream_unknown ./3_buffer_known ./4_buffer_unknown ./5_stream_failtest + ./6_buffer_failtest clean: rm -f 1_stream_known 2_stream_unknown 3_buffer_known 4_buffer_unknown \ - 5_stream_failtest + 5_stream_failtest 6_buffer_failtest