示例#1
0
static void BencTestArrayAppend()
{
    BencArray *array = new BencArray();
    for (size_t i = 1; i <= ITERATION_COUNT; i++) {
        array->Add(i);
        utassert(array->Length() == i);
    }
    array->Add(new BencDict());
    for (size_t i = 1; i <= ITERATION_COUNT; i++) {
        BencInt *obj = array->GetInt(i - 1);
        utassert(obj && obj->Type() == BT_INT);
        utassert(obj->Value() == (int64_t)i);
        utassert(!array->GetString(i - 1));
        utassert(!array->GetArray(i - 1));
        utassert(!array->GetDict(i - 1));
    }
    utassert(!array->GetInt(ITERATION_COUNT));
    utassert(array->GetDict(ITERATION_COUNT));
    BencTestRoundtrip(array);
    delete array->Remove(ITERATION_COUNT);
    delete array->Remove(0);
    delete array->Remove(ITERATION_COUNT + 13);
    utassert(array->Length() == ITERATION_COUNT - 1);
    utassert(array->GetInt(0)->Value() == 2);
    utassert(array->GetInt(ITERATION_COUNT - 2)->Value() == ITERATION_COUNT);
    BencTestRoundtrip(array);
    delete array;
}