Пример #1
0
 void testQueryParams()
 {
     cxxtools::QueryParams q;
     q.add("p1", "value1");
     q.add("p2", "value2");
     q.add("value3");
     CXXTOOLS_UNIT_ASSERT(q.has("p1"));
     CXXTOOLS_UNIT_ASSERT(q.has("p2"));
     CXXTOOLS_UNIT_ASSERT(!q.has("p3"));
     CXXTOOLS_UNIT_ASSERT_EQUALS(q["p1"], "value1");
     CXXTOOLS_UNIT_ASSERT_EQUALS(q["p2"], "value2");
     CXXTOOLS_UNIT_ASSERT_EQUALS(q[0], "value3");
 }
Пример #2
0
        void muldiv()
        {
            cxxtools::Seconds t1(2500);

            cxxtools::Timespan d = t1 * 2.0;
            CXXTOOLS_UNIT_ASSERT_EQUALS(d, cxxtools::Seconds(5000));

            d = 3.0 * t1;
            CXXTOOLS_UNIT_ASSERT_EQUALS(d, cxxtools::Seconds(7500));

            d = t1 / 2.0;
            CXXTOOLS_UNIT_ASSERT_EQUALS(d, cxxtools::Seconds(1250));
        }
Пример #3
0
 void testCopy()
 {
     cxxtools::QueryParams q;
     q.add("p1", "value1");
     q.add("p2", "value2");
     q.add("value3");
     cxxtools::QueryParams q2 = q;
     CXXTOOLS_UNIT_ASSERT(q2.has("p1"));
     CXXTOOLS_UNIT_ASSERT(q2.has("p2"));
     CXXTOOLS_UNIT_ASSERT(!q2.has("p3"));
     CXXTOOLS_UNIT_ASSERT_EQUALS(q2["p1"], "value1");
     CXXTOOLS_UNIT_ASSERT_EQUALS(q2["p2"], "value2");
     CXXTOOLS_UNIT_ASSERT_EQUALS(q2[0], "value3");
 }
Пример #4
0
void StringTest::testReserve()
{
    const cxxtools::Char c1[] = { 'a', 'b', 'c', 'd', '\0' };
    cxxtools::String s(L"abcd");
    cxxtools::String s2 = s;
    s2.reserve(10);

    CXXTOOLS_UNIT_ASSERT( s2.capacity() >= 10 );
    CXXTOOLS_UNIT_ASSERT( s2.size() == 4 );
    CXXTOOLS_UNIT_ASSERT_EQUALS( std::char_traits<cxxtools::Char>::compare(s2.c_str(), c1, 4) , 0 );

    CXXTOOLS_UNIT_ASSERT( s.capacity() >= 4 );
    CXXTOOLS_UNIT_ASSERT_EQUALS( s.size(), 4 );
    CXXTOOLS_UNIT_ASSERT_EQUALS( std::char_traits<cxxtools::Char>::compare(s.c_str(), c1, 4) , 0 );
}
Пример #5
0
        void testArgChar()
        {
            int argc = 5;
            char* argv[] = { arg("prog"), arg("-D"), arg("A"), arg("-F"), arg("\t"), 0 };

            cxxtools::Arg<char> optionA(argc, argv, 'A');
            cxxtools::Arg<char> optionD(argc, argv, 'D');
            cxxtools::Arg<char> optionF(argc, argv, 'F');
            CXXTOOLS_UNIT_ASSERT(!optionA.isSet());
            CXXTOOLS_UNIT_ASSERT(optionD.isSet());
            CXXTOOLS_UNIT_ASSERT(optionF.isSet());
            CXXTOOLS_UNIT_ASSERT_EQUALS(*optionD, 'A');
            CXXTOOLS_UNIT_ASSERT_EQUALS(*optionF, '\t');
            CXXTOOLS_UNIT_ASSERT_EQUALS(argc, 1);
        }
Пример #6
0
 void multipartMessage()
 {
     cxxtools::MimeMultipart mp;
     mp.addObject();
     mp.addObject();
     CXXTOOLS_UNIT_ASSERT_EQUALS(mp.size(), 2);
 }
Пример #7
0
    void bunzip2OstreamTest()
    {
        // test
        std::stringstream bzip2target;

        {
            zim::Bzip2Stream compressor(bzip2target);
            compressor << testtext << std::flush;
            compressor.end();
        }

        {
            std::ostringstream msg;
            msg << "teststring with " << testtext.size() << " bytes compressed into " << bzip2target.str().size() << " bytes";
            reportMessage(msg.str());
        }

        std::ostringstream bunzip2target;

        {
            zim::Bunzip2Stream bunzip2(bunzip2target); // bunzip2 is a ostream here
            bunzip2 << bzip2target.str() << std::flush;
        }

        {
            std::ostringstream msg;
            msg << "teststring uncompressed to " << bunzip2target.str().size() << " bytes";
            reportMessage(msg.str());
        }

        CXXTOOLS_UNIT_ASSERT_EQUALS(testtext, bunzip2target.str());
    }
Пример #8
0
    void inflatorOstreamTest()
    {
      // test 
      std::stringstream deflatetarget;
      zim::DeflateStream deflator(deflatetarget);
      deflator << testtext << std::flush;

      {
        std::ostringstream msg;
        msg << "teststring with " << testtext.size() << " bytes compressed into " << deflatetarget.str().size() << " bytes";
        reportMessage(msg.str());
      }

      std::ostringstream inflatetarget;
      zim::InflateStream inflator(inflatetarget); // inflator is a ostream here
      inflator << deflatetarget.str() << std::flush;

      {
        std::ostringstream msg;
        msg << "teststring uncompressed to " << inflatetarget.str().size() << " bytes";
        reportMessage(msg.str());
      }

      CXXTOOLS_UNIT_ASSERT_EQUALS(testtext, inflatetarget.str());
    }
Пример #9
0
        ////////////////////////////////////////////////////////////
        // Multiple calls
        //
        void Multiple()
        {
            _server->registerMethod("multiply", *this, &BinRpcTest::multiplyDouble);

            typedef cxxtools::RemoteProcedure<double, double, double> Multiply;

            std::vector<cxxtools::bin::RpcClient> clients;
            std::vector<Multiply> procs;

            clients.reserve(16);
            procs.reserve(16);

            for (unsigned i = 0; i < 16; ++i)
            {
                clients.push_back(cxxtools::bin::RpcClient(_loop, "", _port));
                procs.push_back(Multiply(clients.back(), "multiply"));
                procs.back().begin(i, i);
            }

            for (unsigned i = 0; i < 16; ++i)
            {
                CXXTOOLS_UNIT_ASSERT_EQUALS(procs[i].end(2000), i*i);
            }

        }
Пример #10
0
        void testPlainInt()
        {
            std::ostringstream out;
            cxxtools::JsonSerializer serializer(out);
            serializer.serialize(-4711).finish();

            CXXTOOLS_UNIT_ASSERT_EQUALS(out.str(), "-4711");
        }
Пример #11
0
        void testPlainEmpty()
        {
            std::ostringstream out;
            cxxtools::JsonSerializer serializer(out);
            serializer.finish();

            CXXTOOLS_UNIT_ASSERT_EQUALS(out.str(), "");
        }
Пример #12
0
        void testInt()
        {
            std::ostringstream out;
            cxxtools::JsonSerializer serializer(out);
            serializer.serialize(-4711, "value").finish();

            CXXTOOLS_UNIT_ASSERT_EQUALS(out.str(), "{\"value\":-4711}");
        }
Пример #13
0
        ////////////////////////////////////////////////////////////
        // Array
        //
        void Array()
        {
            _server->registerMethod("multiply", *this, &BinRpcTest::multiplyVector);

            cxxtools::bin::RpcClient client(_loop, "", _port);
            cxxtools::RemoteProcedure< std::vector<int>, std::vector<int>, std::vector<int> > multiply(client, "multiply");

            std::vector<int> vec;
            vec.push_back(10);
            vec.push_back(20);

            multiply.begin(vec, vec);
            std::vector<int> r = multiply.end(2000);
            CXXTOOLS_UNIT_ASSERT_EQUALS(r.size(), 2);
            CXXTOOLS_UNIT_ASSERT_EQUALS(r.at(0), 100);
            CXXTOOLS_UNIT_ASSERT_EQUALS(r.at(1), 400);
        }
Пример #14
0
        ////////////////////////////////////////////////////////////
        // Connect
        //
        void Connect()
        {
            _server->registerMethod("boolean", *this, &BinRpcTest::boolean);

            // test connect using cxxtools::net::AddrInfo
            {
                cxxtools::bin::RpcClient client(_loop);
                cxxtools::RemoteProcedure<bool, bool, bool> boolean(client, "boolean");

                client.connect(cxxtools::net::AddrInfo("", _port));
                boolean.begin(true, true);
                CXXTOOLS_UNIT_ASSERT_EQUALS(boolean.end(2000), true);
            }

            // test connect using host and port
            {
                cxxtools::bin::RpcClient client(_loop);
                cxxtools::RemoteProcedure<bool, bool, bool> boolean(client, "boolean");

                client.connect("", _port);
                boolean.begin(true, true);
                CXXTOOLS_UNIT_ASSERT_EQUALS(boolean.end(2000), true);
            }

            // test connect using uri
            {
                cxxtools::bin::RpcClient client(_loop);
                cxxtools::RemoteProcedure<bool, bool, bool> boolean(client, "boolean");

                std::ostringstream uri;
                uri << "http://localhost:" << _port << '/';
                client.connect(cxxtools::net::Uri(uri.str()));
                boolean.begin(true, true);
                CXXTOOLS_UNIT_ASSERT_EQUALS(boolean.end(2000), true);
            }

            // test failing connect
            {
                cxxtools::bin::RpcClient client(_loop);
                cxxtools::RemoteProcedure<bool, bool, bool> boolean(client, "boolean");

                CXXTOOLS_UNIT_ASSERT_THROW(client.connect("", _port + 1), cxxtools::IOError);
            }

        }
Пример #15
0
        void testArgBool()
        {
            int argc = 7;
            char* argv[] = { arg("prog"), arg("-i"), arg("-j"), arg("-k"),
                arg("-cf"), arg("--foo"), arg("foo"), 0 };

            cxxtools::Arg<bool> optionJ(argc, argv, 'j');
            cxxtools::Arg<bool> optionL(argc, argv, 'l');
            cxxtools::Arg<bool> optionC(argc, argv, 'c');
            cxxtools::Arg<bool> optionFoo(argc, argv, "--foo");
            cxxtools::Arg<bool> optionBar(argc, argv, "--bar");

            CXXTOOLS_UNIT_ASSERT(optionJ);
            CXXTOOLS_UNIT_ASSERT(!optionL);
            CXXTOOLS_UNIT_ASSERT(optionC);
            CXXTOOLS_UNIT_ASSERT(optionFoo);
            CXXTOOLS_UNIT_ASSERT(!optionBar);
            CXXTOOLS_UNIT_ASSERT_EQUALS(argc, 5);
            CXXTOOLS_UNIT_ASSERT_EQUALS(strcmp(argv[0], "prog"), 0);
            CXXTOOLS_UNIT_ASSERT_EQUALS(strcmp(argv[1], "-i"), 0);
            CXXTOOLS_UNIT_ASSERT_EQUALS(strcmp(argv[2], "-k"), 0);
            CXXTOOLS_UNIT_ASSERT_EQUALS(strcmp(argv[3], "-f"), 0);
            CXXTOOLS_UNIT_ASSERT_EQUALS(strcmp(argv[4], "foo"), 0);
            CXXTOOLS_UNIT_ASSERT_EQUALS(argv[5], static_cast<const char*>(0));
        }
Пример #16
0
    void poolTest()
    {
      {
        typedef cxxtools::Pool<Object> PoolType;
        PoolType pool;

        {
          PoolType::Ptr p = pool.get();
          CXXTOOLS_UNIT_ASSERT_EQUALS(pool.size(), 0);
          CXXTOOLS_UNIT_ASSERT_EQUALS(Object::ctorCount, 1);
        }

        CXXTOOLS_UNIT_ASSERT_EQUALS(pool.size(), 1);

        {
          PoolType::Ptr p = pool.get();
          CXXTOOLS_UNIT_ASSERT_EQUALS(pool.size(), 0);
        }

        CXXTOOLS_UNIT_ASSERT_EQUALS(pool.size(), 1);
        CXXTOOLS_UNIT_ASSERT_EQUALS(Object::ctorCount, 1);
      }

      CXXTOOLS_UNIT_ASSERT_EQUALS(Object::instCount, 0);
    }
Пример #17
0
 void serialize()
 {
     cxxtools::Timespan t(1234567);
     cxxtools::SerializationInfo si;
     si <<= t;
     cxxtools::Timespan t2;
     si >>= t2;
     CXXTOOLS_UNIT_ASSERT_EQUALS(t, t2);
 }
Пример #18
0
 void testPlain()
 {
   std::string src = "<html><body><h1>Hello World!<h1>\n</body></html>";
   std::istringstream ecpp(src);
   Handler handler;
   tnt::ecpp::Parser parser(handler, std::string());
   parser.parse(ecpp);
   CXXTOOLS_UNIT_ASSERT_EQUALS(handler.result(), "start()onHtml(" + src + ")end()");
 }
Пример #19
0
 void testPre()
 {
   std::string src = "<foo><%pre> #include <iostream> </%pre></foo>";
   std::istringstream ecpp(src);
   Handler handler;
   tnt::ecpp::Parser parser(handler, std::string());
   parser.parse(ecpp);
   CXXTOOLS_UNIT_ASSERT_EQUALS(handler.result(), "start()onHtml(<foo>)onPre( #include <iostream> )onHtml(</foo>)end()");
 }
Пример #20
0
 void testStringArgs()
 {
   std::string src = "<foo><%args> foo=\"bar\"; </%args></foo>";
   std::istringstream ecpp(src);
   Handler handler;
   tnt::ecpp::Parser parser(handler, std::string());
   parser.parse(ecpp);
   CXXTOOLS_UNIT_ASSERT_EQUALS(handler.result(), "start()onHtml(<foo>)onArg(foo, \"bar\")onHtml(</foo>)end()");
 }
Пример #21
0
 void joinString()
 {
     std::vector<std::string> d;
     d.push_back("Hello");
     d.push_back("World");
     d.push_back("!");
     std::string result = cxxtools::join(d.begin(), d.end(), " ");
     CXXTOOLS_UNIT_ASSERT_EQUALS(result, "Hello World !");
 }
Пример #22
0
 void testTypedVectorArgs()
 {
   std::string src = "<foo><%args> int foo[]; </%args></foo>";
   std::istringstream ecpp(src);
   Handler handler;
   tnt::ecpp::Parser parser(handler, std::string());
   parser.parse(ecpp);
   CXXTOOLS_UNIT_ASSERT_EQUALS(handler.result(), "start()onHtml(<foo>)onArg(int foo[], )onHtml(</foo>)end()");
 }
Пример #23
0
 void testHtmlExpression()
 {
   std::string src = "<foo><$$ a+b $></foo>";
   std::istringstream ecpp(src);
   Handler handler;
   tnt::ecpp::Parser parser(handler, std::string());
   parser.parse(ecpp);
   CXXTOOLS_UNIT_ASSERT_EQUALS(handler.result(), "start()onHtml(<foo>)onHtmlExpression( a+b )onHtml(</foo>)end()");
 }
Пример #24
0
 void joinInt()
 {
     std::vector<int> d;
     d.push_back(4);
     d.push_back(17);
     d.push_back(-12);
     std::string result = cxxtools::join(d.begin(), d.end(), ", ");
     CXXTOOLS_UNIT_ASSERT_EQUALS(result, "4, 17, -12");
 }
Пример #25
0
 void testAttr()
 {
   std::string src = "<foo><%attr> method=\"post\"; </%attr></foo>";
   std::istringstream ecpp(src);
   Handler handler;
   tnt::ecpp::Parser parser(handler, std::string());
   parser.parse(ecpp);
   CXXTOOLS_UNIT_ASSERT_EQUALS(handler.result(), "start()onHtml(<foo>)onAttr(method, \"post\")onHtml(</foo>)end()");
 }
Пример #26
0
        void testEmptyObject()
        {
            std::ostringstream out;
            cxxtools::JsonSerializer serializer(out);
            serializer.setObject();
            serializer.finish();

            CXXTOOLS_UNIT_ASSERT_EQUALS(out.str(), "{}");
        }
Пример #27
0
        void testGetUrl()
        {
            cxxtools::QueryParams q;
            q.add("first name", "Tommi");
            q.add("last name", "M\xa4kitalo");
            q.add("some value");

            std::string url = q.getUrl();
            CXXTOOLS_UNIT_ASSERT_EQUALS(url, "first+name=Tommi&last+name=M%A4kitalo&some+value");
        }
Пример #28
0
 void testIniParser()
 {
     std::istringstream inifile(
         "[s1]\n"
         "k1=v1\n");
     E e;
     cxxtools::IniParser p(e);
     p.parse(inifile);
     CXXTOOLS_UNIT_ASSERT_EQUALS(e.result(), "S(s1)K(k1)V(v1)");
 }
Пример #29
0
        void testMultipleObjects()
        {
            std::ostringstream out;
            cxxtools::JsonSerializer serializer(out);
            serializer.serialize("Hi", "a")
                      .serialize(42, "b")
                      .finish();

            CXXTOOLS_UNIT_ASSERT_EQUALS(out.str(), "{\"a\":\"Hi\",\"b\":42}");
        }
Пример #30
0
        void istreamunits()
        {
            {
                std::istringstream s("823u");
                cxxtools::Timespan ts;
                s >> ts;
                CXXTOOLS_UNIT_ASSERT(!s.fail());
                CXXTOOLS_UNIT_ASSERT_EQUALS(ts, cxxtools::Microseconds(823));
            }

            {
                std::istringstream s("823ms");
                cxxtools::Seconds ts;
                s >> ts;
                CXXTOOLS_UNIT_ASSERT(s);
                CXXTOOLS_UNIT_ASSERT_EQUALS(ts, cxxtools::Milliseconds(823));
            }

            {
                std::istringstream s("823s");
                cxxtools::Timespan ts;
                s >> ts;
                CXXTOOLS_UNIT_ASSERT(s);
                CXXTOOLS_UNIT_ASSERT_EQUALS(ts, cxxtools::Seconds(823));
            }

            {
                std::istringstream s("823.5m");
                cxxtools::Timespan ts;
                s >> ts;
                CXXTOOLS_UNIT_ASSERT(s);
                CXXTOOLS_UNIT_ASSERT_EQUALS(ts, cxxtools::Minutes(823.5));
            }

            {
                std::istringstream s("823mi");
                cxxtools::Timespan ts;
                s >> ts;
                CXXTOOLS_UNIT_ASSERT(s);
                CXXTOOLS_UNIT_ASSERT_EQUALS(ts, cxxtools::Minutes(823));
            }

            {
                std::istringstream s("823h");
                cxxtools::Timespan ts;
                s >> ts;
                CXXTOOLS_UNIT_ASSERT(s);
                CXXTOOLS_UNIT_ASSERT_EQUALS(ts, cxxtools::Hours(823));
            }

            {
                std::istringstream s("823d");
                cxxtools::Timespan ts;
                s >> ts;
                CXXTOOLS_UNIT_ASSERT(s);
                CXXTOOLS_UNIT_ASSERT_EQUALS(ts, cxxtools::Days(823));
            }
        }