!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/opt/cpanel/ea-ruby27/src/passenger-release-6.0.23/test/cxx/DataStructures/   drwxr-xr-x
Free 289.76 GB of 429.69 GB (67.43%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     StringKeyTableTest.cpp (7.17 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#include <TestSupport.h>
#include <string>
#include <DataStructures/StringKeyTable.h>

using namespace Passenger;
using namespace std;

namespace tut {
    struct DataStructures_StringKeyTableTest: public TestBase {
        StringKeyTable<string> table;
        string *value;

        DataStructures_StringKeyTableTest() {
            value = NULL;
        }

        class Counter {
            private:
                BOOST_MOVABLE_BUT_NOT_COPYABLE(Counter)

            public:
                int value;

                Counter()
                    : value(0)
                    { }

                Counter(int v)
                    : value(v)
                    { }

                Counter(BOOST_RV_REF(Counter) other)
                    : value(other.value)
                {
                    other.value = -1;
                }

                Counter &operator=(BOOST_RV_REF(Counter) other) {
                    value = other.value;
                    other.value = -1;
                    return *this;
                }
            };
    };

    DEFINE_TEST_GROUP(DataStructures_StringKeyTableTest);

    TEST_METHOD(1) {
        set_test_name("Initial state");
        ensure_equals(table.size(), 0u);
        ensure_equals(table.arraySize(), (unsigned int) StringKeyTable<string>::DEFAULT_SIZE);
    }

    TEST_METHOD(2) {
        set_test_name("On an empty StringKeyTable, iterators reach the end immediately");
        StringKeyTable<string>::Iterator it(table);
        ensure_equals<void *>(*it, NULL);
    }

    TEST_METHOD(3) {
        set_test_name("On an empty StringKeyTable, lookups return NULL");
        ensure(!table.lookup("hello", &value));
        ensure_equals<void *>(value, NULL);
        ensure(!table.lookup("?", &value));
        ensure_equals<void *>(value, NULL);
        ensure(!table.lookupRandom(NULL, &value));
        ensure_equals<void *>(value, NULL);
    }

    TEST_METHOD(4) {
        set_test_name("Insertions work");

        table.insert("Content-Length", "5");
        ensure_equals(table.size(), 1u);
        ensure(!table.lookup("hello", &value));
        ensure_equals<void *>("(1)", value, NULL);
        ensure(!table.lookup("Host", &value));
        ensure_equals<void *>("(2)", value, NULL);
        ensure(table.lookup("Content-Length", &value));
        ensure_equals("(3)", *value, "5");

        table.insert("Host", "foo.com");
        ensure_equals(table.size(), 2u);
        ensure(!table.lookup("hello", &value));
        ensure_equals<void *>("(5)", value, NULL);
        ensure(table.lookup("Host", &value));
        ensure_equals("(6)", *value, "foo.com");
        ensure(table.lookup("Content-Length", &value));
        ensure_equals("(7)", *value, "5");
    }

    TEST_METHOD(5) {
        set_test_name("Large amounts of insertions");

        table.insert("Host", "foo.com");
        table.insert("Content-Length", "5");
        table.insert("Accept", "text/html");
        table.insert("Accept-Encoding", "gzip");
        table.insert("Accept-Language", "nl");
        table.insert("User-Agent", "Mozilla");
        table.insert("Set-Cookie", "foo=bar");
        table.insert("Connection", "keep-alive");
        table.insert("Cache-Control", "no-cache");
        table.insert("Pragma", "no-cache");

        ensure(!table.lookup("MyHeader", &value));

        ensure(table.lookup("Host", &value));
        ensure_equals(*value, "foo.com");
        ensure(table.lookup("Content-Length", &value));
        ensure_equals(*value, "5");
        ensure(table.lookup("Accept", &value));
        ensure_equals(*value, "text/html");
        ensure(table.lookup("Accept-Encoding", &value));
        ensure_equals(*value, "gzip");
        ensure(table.lookup("Accept-Language", &value));
        ensure_equals(*value, "nl");
        ensure(table.lookup("User-Agent", &value));
        ensure_equals(*value, "Mozilla");
        ensure(table.lookup("Set-Cookie", &value));
        ensure_equals(*value, "foo=bar");
        ensure(table.lookup("Connection", &value));
        ensure_equals(*value, "keep-alive");
        ensure(table.lookup("Cache-Control", &value));
        ensure_equals(*value, "no-cache");
        ensure(table.lookup("Pragma", &value));
        ensure_equals(*value, "no-cache");
    }

    TEST_METHOD(6) {
        set_test_name("Iterators work");
        table.insert("Content-Length", "5");
        table.insert("Host", "foo.com");

        StringKeyTable<string>::Iterator it(table);
        ensure(*it != NULL);
        if (it.getKey() == "Content-Length") {
            ensure_equals(it.getKey(), "Content-Length");
            it.next();
            ensure_equals(it.getKey(), "Host");
        } else {
            ensure_equals(it.getKey(), "Host");
            it.next();
            ensure_equals(it.getKey(), "Content-Length");
        }

        it.next();
        ensure_equals<void *>(*it, NULL);
    }

    TEST_METHOD(7) {
        set_test_name("Dynamically growing the bucket on insert");
        table = StringKeyTable<string>(4);
        ensure_equals(table.size(), 0u);
        ensure_equals(table.arraySize(), 4u);

        table.insert("Host", "foo.com");
        table.insert("Content-Length", "5");
        ensure_equals(table.size(), 2u);
        ensure_equals(table.arraySize(), 4u);

        table.insert("Accept", "text/html");
        ensure_equals(table.size(), 3u);
        ensure_equals(table.arraySize(), 8u);

        ensure(!table.lookup("MyHeader", &value));
        ensure_equals<void *>(value, NULL);
        ensure(table.lookup("Host", &value));
        ensure_equals(*value, "foo.com");
        ensure(table.lookup("Content-Length", &value));
        ensure_equals(*value, "5");
        ensure(table.lookup("Accept", &value));
        ensure_equals(*value, "text/html");
    }

    TEST_METHOD(8) {
        set_test_name("Clearing");

        table.insert("Host", "foo.com");
        table.insert("Content-Length", "5");
        table.insert("Accept", "text/html");

        table.clear();
        ensure_equals(table.size(), 0u);
        ensure_equals(table.arraySize(), (unsigned int) StringKeyTable<string>::DEFAULT_SIZE);

        ensure(!table.lookup("Host", &value));
        ensure_equals<void *>(value, NULL);
        ensure(!table.lookup("Content-Length", &value));
        ensure_equals<void *>(value, NULL);
        ensure(!table.lookup("Accept", &value));
        ensure_equals<void *>(value, NULL);
    }

    TEST_METHOD(9) {
        set_test_name("lookupRandom() works");
        HashedStaticString key;

        table.insert("a", "1");
        ensure(table.lookupRandom(&key, &value));
        ensure_equals(key, "a");
        ensure_equals(*value, "1");

        table.insert("b", "2");
        ensure(table.lookupRandom(&key, &value));
        ensure_equals(key, "b");
        ensure_equals(*value, "2");

        table.insert("c", "3");
        ensure(table.lookupRandom(&key, &value));
        ensure_equals(key, "c");
        ensure_equals(*value, "3");

        ensure(table.erase("b"));
        ensure(table.lookupRandom(&key, &value));
        ensure_equals(key, "c");
        ensure_equals(*value, "3");

        ensure(table.erase("c"));
        ensure(table.lookupRandom(&key, &value));
        ensure_equals(key, "a");
        ensure_equals(*value, "1");

        ensure(table.erase("a"));
        ensure(!table.lookupRandom(&key, &value));
    }

    TEST_METHOD(10) {
        set_test_name("Initial size 0");
        StringKeyTable<string> t(0, 0);

        ensure_equals(t.lookupCopy("a"), "");
        t.insert("a", "b");
        ensure_equals(t.lookupCopy("a"), "b");
    }

    TEST_METHOD(11) {
        set_test_name("Move support");

        StringKeyTable<Counter, SKT_EnableMoveSupport> t(1);
        Counter *result;

        ensure_equals("Initial table array size is 1", t.arraySize(), 1u);

        t.insertByMoving("a", Counter(1));
        ensure("1: a is in the table", t.lookup("a", &result));
        ensure_equals("1: a's value is 1", result->value, 1);

        Counter f(2);
        t.insertByMoving("a", boost::move(f));
        ensure("2: a is in the table", t.lookup("a", &result));
        ensure_equals("2: a's value is 2", result->value, 2);
        ensure_equals("2: original variable's value is -1", f.value, -1);

        t.insertByMoving("b", Counter(3));
        ensure_equals("3: New table array size is 2", t.arraySize(), 4u);
        ensure("3: a is in the table", t.lookup("a", &result));
        ensure_equals("3: a's value is 2", result->value, 2);
        ensure("3: a is in the table", t.lookup("b", &result));
        ensure_equals("3: b's value is 3", result->value, 3);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.005 ]--