From 8af0a45b4701aa99616b6d5975025ce793172a9c Mon Sep 17 00:00:00 2001 From: Caio Marcelo de Oliveira Filho Date: Fri, 6 Jul 2018 11:26:13 -0700 Subject: [PATCH] util/set: add a basic unit test Reviewed-by: Eric Anholt --- configure.ac | 1 + src/util/Makefile.am | 3 ++- src/util/meson.build | 1 + src/util/tests/set/Makefile.am | 42 +++++++++++++++++++++++++++++++ src/util/tests/set/meson.build | 30 ++++++++++++++++++++++ src/util/tests/set/set_test.cpp | 55 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 src/util/tests/set/Makefile.am create mode 100644 src/util/tests/set/meson.build create mode 100644 src/util/tests/set/set_test.cpp diff --git a/configure.ac b/configure.ac index f135d05..c946454 100644 --- a/configure.ac +++ b/configure.ac @@ -3156,6 +3156,7 @@ AC_CONFIG_FILES([Makefile src/mesa/state_tracker/tests/Makefile src/util/Makefile src/util/tests/hash_table/Makefile + src/util/tests/set/Makefile src/util/tests/string_buffer/Makefile src/util/tests/vma/Makefile src/util/xmlpool/Makefile diff --git a/src/util/Makefile.am b/src/util/Makefile.am index 6579433..bafb574 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am @@ -22,7 +22,8 @@ SUBDIRS = . \ xmlpool \ tests/hash_table \ - tests/string_buffer + tests/string_buffer \ + tests/set if HAVE_STD_CXX11 SUBDIRS += tests/vma diff --git a/src/util/meson.build b/src/util/meson.build index 1838719..8c91be8 100644 --- a/src/util/meson.build +++ b/src/util/meson.build @@ -164,4 +164,5 @@ if with_tests subdir('tests/hash_table') subdir('tests/string_buffer') subdir('tests/vma') + subdir('tests/set') endif diff --git a/src/util/tests/set/Makefile.am b/src/util/tests/set/Makefile.am new file mode 100644 index 0000000..5529f4c --- /dev/null +++ b/src/util/tests/set/Makefile.am @@ -0,0 +1,42 @@ +# Copyright © 2018 Intel +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +AM_CPPFLAGS = \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/include \ + -I$(top_srcdir)/src/gtest/include \ + $(PTHREAD_CFLAGS) \ + $(DEFINES) + +TESTS = set_test + +check_PROGRAMS = $(TESTS) + +set_test_SOURCES = \ + set_test.cpp + +set_test_LDADD = \ + $(top_builddir)/src/gtest/libgtest.la \ + $(top_builddir)/src/util/libmesautil.la \ + $(PTHREAD_LIBS) \ + $(DLOPEN_LIBS) + +EXTRA_DIST = meson.build diff --git a/src/util/tests/set/meson.build b/src/util/tests/set/meson.build new file mode 100644 index 0000000..add3fc5 --- /dev/null +++ b/src/util/tests/set/meson.build @@ -0,0 +1,30 @@ +# Copyright © 2018 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +test( + 'set', + executable( + 'set_test', + 'set_test.cpp', + dependencies : [dep_thread, dep_dl, idep_gtest], + include_directories : inc_common, + link_with : [libmesa_util], + ) +) diff --git a/src/util/tests/set/set_test.cpp b/src/util/tests/set/set_test.cpp new file mode 100644 index 0000000..e6a83f1 --- /dev/null +++ b/src/util/tests/set/set_test.cpp @@ -0,0 +1,55 @@ +/* + * Copyright © 2018 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include +#include "util/hash_table.h" +#include "util/set.h" + +TEST(set, basic) +{ + struct set *s = _mesa_set_create(NULL, _mesa_hash_pointer, + _mesa_key_pointer_equal); + struct set_entry *entry; + + const void *a = (const void *)10; + const void *b = (const void *)20; + + _mesa_set_add(s, a); + _mesa_set_add(s, b); + EXPECT_EQ(s->entries, 2); + + _mesa_set_add(s, a); + EXPECT_EQ(s->entries, 2); + + entry = _mesa_set_search(s, a); + EXPECT_TRUE(entry); + EXPECT_EQ(entry->key, a); + + _mesa_set_remove(s, entry); + EXPECT_EQ(s->entries, 1); + + entry = _mesa_set_search(s, a); + EXPECT_FALSE(entry); + + _mesa_set_destroy(s, NULL); +} -- 2.7.4