#include "unit.h"
#define uiComboboxPtrFromState(s) uiControlPtrFromState(uiCombobox, s)
static void comboboxNew(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
}
static void comboboxNumItemsDefault(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
assert_int_equal(uiComboboxNumItems(*c), 0);
}
static void comboboxSelectedDefault(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
assert_int_equal(uiComboboxSelected(*c), -1);
}
static void comboboxAppend(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
const char *item0 = "Item 0";
const char *item1 = "Item 1";
*c = uiNewCombobox();
uiComboboxAppend(*c, item0);
assert_int_equal(uiComboboxNumItems(*c), 1);
uiComboboxAppend(*c, item1);
assert_int_equal(uiComboboxNumItems(*c), 2);
assert_int_equal(uiComboboxSelected(*c), -1);
}
static void comboboxAppendDuplicate(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
const char *duplicate = "Duplicate";
*c = uiNewCombobox();
uiComboboxAppend(*c, duplicate);
uiComboboxAppend(*c, duplicate);
assert_int_equal(uiComboboxNumItems(*c), 2);
}
static void comboboxSetSelected(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxAppend(*c, "Item 0");
uiComboboxAppend(*c, "Item 1");
uiComboboxSetSelected(*c, 1);
assert_int_equal(uiComboboxSelected(*c), 1);
uiComboboxSetSelected(*c, 0);
assert_int_equal(uiComboboxSelected(*c), 0);
uiComboboxSetSelected(*c, -1);
assert_int_equal(uiComboboxSelected(*c), -1);
}
static void comboboxInsertAt(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
const char *item0 = "Item 0";
const char *item1 = "Item 1";
const char *item2 = "Item 2";
const char *item3 = "Item 3";
*c = uiNewCombobox();
uiComboboxInsertAt(*c, 0, item0);
assert_int_equal(uiComboboxNumItems(*c), 1);
assert_int_equal(uiComboboxSelected(*c), -1);
uiComboboxSetSelected(*c, 0);
uiComboboxInsertAt(*c, 0, item1);
assert_int_equal(uiComboboxNumItems(*c), 2);
assert_int_equal(uiComboboxSelected(*c), 1);
uiComboboxInsertAt(*c, 1, item2);
assert_int_equal(uiComboboxNumItems(*c), 3);
assert_int_equal(uiComboboxSelected(*c), 2);
uiComboboxInsertAt(*c, 3, item3);
assert_int_equal(uiComboboxNumItems(*c), 4);
assert_int_equal(uiComboboxSelected(*c), 2);
}
static void comboboxInsertAtDuplicate(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
const char *duplicate = "Duplicate";
*c = uiNewCombobox();
uiComboboxInsertAt(*c, 0, duplicate);
uiComboboxInsertAt(*c, 1, duplicate);
assert_int_equal(uiComboboxNumItems(*c), 2);
}
static void comboboxClearEmpty(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxClear(*c);
assert_int_equal(uiComboboxNumItems(*c), 0);
assert_int_equal(uiComboboxSelected(*c), -1);
uiComboboxClear(*c);
assert_int_equal(uiComboboxNumItems(*c), 0);
assert_int_equal(uiComboboxSelected(*c), -1);
}
static void comboboxClear(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxAppend(*c, "Item 0");
uiComboboxAppend(*c, "Item 1");
assert_int_equal(uiComboboxNumItems(*c), 2);
uiComboboxSetSelected(*c, 1);
uiComboboxClear(*c);
assert_int_equal(uiComboboxNumItems(*c), 0);
assert_int_equal(uiComboboxSelected(*c), -1);
}
static void comboboxClearAppend(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxAppend(*c, "Item 0");
uiComboboxAppend(*c, "Item 1");
assert_int_equal(uiComboboxNumItems(*c), 2);
uiComboboxClear(*c);
assert_int_equal(uiComboboxNumItems(*c), 0);
uiComboboxAppend(*c, "Item 2");
uiComboboxAppend(*c, "Item 3");
assert_int_equal(uiComboboxNumItems(*c), 2);
}
static void comboboxDelete(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
const char *item0 = "Item 0";
const char *item1 = "Item 1";
const char *item2 = "Item 2";
*c = uiNewCombobox();
uiComboboxAppend(*c, item0);
uiComboboxAppend(*c, item1);
uiComboboxAppend(*c, item2);
uiComboboxSetSelected(*c, 1);
uiComboboxDelete(*c, 0);
assert_int_equal(uiComboboxNumItems(*c), 2);
assert_int_equal(uiComboboxSelected(*c), 0);
uiComboboxDelete(*c, 0);
assert_int_equal(uiComboboxNumItems(*c), 1);
assert_int_equal(uiComboboxSelected(*c), -1);
uiComboboxSetSelected(*c, 0);
uiComboboxDelete(*c, 0);
assert_int_equal(uiComboboxNumItems(*c), 0);
assert_int_equal(uiComboboxSelected(*c), -1);
}
static void onChangedNoCall(uiCombobox *c, void *data)
{
function_called();
}
static void comboboxSetSelectedNoCallback(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxOnSelected(*c, onChangedNoCall, NULL);
uiComboboxAppend(*c, "Item 0");
uiComboboxAppend(*c, "Item 1");
uiComboboxSetSelected(*c, 1);
uiComboboxSetSelected(*c, 0);
}
static void comboboxInsertAtNoCallback(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxOnSelected(*c, onChangedNoCall, NULL);
uiComboboxInsertAt(*c, 0, "Item 0");
uiComboboxSetSelected(*c, 0);
uiComboboxInsertAt(*c, 0, "Item 1");
uiComboboxInsertAt(*c, 1, "Item 2");
}
static void comboboxClearEmptyNoCallback(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxOnSelected(*c, onChangedNoCall, NULL);
uiComboboxClear(*c);
}
static void comboboxClearNoCallback(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxOnSelected(*c, onChangedNoCall, NULL);
uiComboboxAppend(*c, "Item 0");
uiComboboxAppend(*c, "Item 1");
uiComboboxClear(*c);
uiComboboxAppend(*c, "Item 2");
uiComboboxSetSelected(*c, 0);
uiComboboxClear(*c);
}
static void comboboxDeleteNoCallback(void **state)
{
uiCombobox **c = uiComboboxPtrFromState(state);
*c = uiNewCombobox();
uiComboboxOnSelected(*c, onChangedNoCall, NULL);
uiComboboxAppend(*c, "Item 0");
uiComboboxAppend(*c, "Item 1");
uiComboboxAppend(*c, "Item 2");
uiComboboxDelete(*c, 0);
uiComboboxSetSelected(*c, 1);
uiComboboxDelete(*c, 1);
uiComboboxDelete(*c, 0);
}
#define comboboxUnitTest(f) cmocka_unit_test_setup_teardown((f), \
unitTestSetup, unitTestTeardown)
int comboboxRunUnitTests(void)
{
const struct CMUnitTest tests[] = {
comboboxUnitTest(comboboxNew),
comboboxUnitTest(comboboxNumItemsDefault),
comboboxUnitTest(comboboxSelectedDefault),
comboboxUnitTest(comboboxAppend),
comboboxUnitTest(comboboxAppendDuplicate),
comboboxUnitTest(comboboxSetSelected),
comboboxUnitTest(comboboxInsertAt),
comboboxUnitTest(comboboxInsertAtDuplicate),
comboboxUnitTest(comboboxClearEmpty),
comboboxUnitTest(comboboxClear),
comboboxUnitTest(comboboxClearAppend),
comboboxUnitTest(comboboxDelete),
comboboxUnitTest(comboboxSetSelectedNoCallback),
comboboxUnitTest(comboboxInsertAtNoCallback),
comboboxUnitTest(comboboxClearNoCallback),
comboboxUnitTest(comboboxClearEmptyNoCallback),
comboboxUnitTest(comboboxDeleteNoCallback),
};
return cmocka_run_group_tests_name("uiCombobox", tests, unitTestsSetup, unitTestsTeardown);
}