diff --git a/src/common/util.hpp b/src/common/util.hpp index 7b036e1be..82b29439e 100644 --- a/src/common/util.hpp +++ b/src/common/util.hpp @@ -34,26 +34,34 @@ namespace util { using std::string; + + template + inline int + sgn (NUM n) + { + return (n==0)? 0 :((n<0)? -1:+1 ); + } + /** a family of util functions providing a "no value whatsoever" test. Works on strings and all STL containers, includes NULL test for pointers */ template inline bool - isnil(const CONT& container) + isnil (const CONT& container) { return container.empty(); } template inline bool - isnil(const CONT* pContainer) + isnil (const CONT* pContainer) { return !pContainer || pContainer->empty(); } template <> inline bool - isnil(const char* pCStr) + isnil (const char* pCStr) { return !pCStr || 0 == std::strlen(pCStr); } diff --git a/tests/51asset.tests b/tests/51asset.tests index 0e6b6c009..9bc0186fd 100644 --- a/tests/51asset.tests +++ b/tests/51asset.tests @@ -2,6 +2,15 @@ TESTING "Component Test Suite: Asset Manager" ./test-components --group=asset +TEST "AssetCategory_test" AssetCategory_test < + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "common/test/run.hpp" +#include "common/util.hpp" + +#include "proc/asset/category.hpp" + +#include +#include + +using boost::format; +using util::isnil; +using std::string; +using std::cout; + + +namespace asset + { + namespace test + { + + + + + /*********************************************************************** + * @test checking the properties of Asset Category structs. + * They are included in the Asset::Ident identification tuple + * of Assets and can be used to organize Assets into a tree + * like structure + */ + class AssetCategory_test : public Test + { + virtual void run(Arg arg) + { + createCategory(); + containmentQuery(); + ordering(); + } + + + + + void createCategory() + { + Category c1 (AUDIO); + Category c2 (VIDEO,"bin1"); + Category c3 (VIDEO,"bin1/subbin"); + Category c4 (EFFECT,"some_kind"); + + format fmt ("Category: %s"); + + cout << fmt % c1 << "\n"; + cout << fmt % c2 << "\n"; + cout << fmt % c3 << "\n"; + cout << fmt % c4 << "\n"; + } + + + void containmentQuery() + { + Category c1 (VIDEO); + Category c2 (VIDEO,"bin1"); + Category c3 (VIDEO,"bin1/subbin"); + Category c4 (EFFECT,"some_kind"); + + ASSERT ( c1.hasKind(VIDEO) ); + ASSERT (!c1.hasKind(AUDIO) ); + ASSERT ( c2.isWithin(c1) ); + ASSERT ( c3.isWithin(c2) ); + ASSERT ( c3.isWithin(c1) ); + ASSERT (!c1.isWithin(c2) ); + ASSERT (!c2.isWithin(c3) ); + ASSERT (!c1.isWithin(c3) ); + ASSERT (!c3.isWithin(c4) ); + ASSERT (!c4.isWithin(c3) ); + } + + + void ordering() + { + Category c1 (AUDIO); + Category c2 (VIDEO); + Category c3 (EFFECT); + Category c4 (CODEC); + Category c5 (STRUCT); + Category c6 (META); + + ASSERT (0 > c1.compare(c2)); + ASSERT (0 > c2.compare(c3)); + ASSERT (0 > c3.compare(c4)); + ASSERT (0 > c4.compare(c5)); + ASSERT (0 > c5.compare(c6)); + + ASSERT (0 ==c1.compare(c1)); + ASSERT (0 > c1.compare(c6)); + + Category c21 (VIDEO,"bin1"); + Category c22 (VIDEO,"bin2"); + Category c23 (VIDEO,"bin2/sub"); + + ASSERT (0 > c1.compare(c21)); + ASSERT (0 > c2.compare(c21)); + ASSERT (0 < c22.compare(c21)); + ASSERT (0 < c23.compare(c22)); + ASSERT (0 < c23.compare(c21)); + ASSERT ( 0==c22.compare(c22)); + + + ASSERT ( c2 == c2 ); + ASSERT ( c2 != c22 ); + ASSERT ( c2 != c3 ); + } + }; + + + /** Register this test class... */ + LAUNCHER (AssetCategory_test, "unit asset"); + + + + } // namespace test + +} // namespace asset diff --git a/tests/components/proc/asset/orderingofassetstest.cpp b/tests/components/proc/asset/orderingofassetstest.cpp index e456a356e..99381c9e6 100644 --- a/tests/components/proc/asset/orderingofassetstest.cpp +++ b/tests/components/proc/asset/orderingofassetstest.cpp @@ -84,17 +84,17 @@ namespace asset ASSERT (key4 != key5); ASSERT (key1 != key5); - ASSERT (-1 == key2.compare(key3)); - ASSERT (+1 == key3.compare(key2)); + ASSERT ( 0 > key2.compare(key3)); + ASSERT ( 0 < key3.compare(key2)); - ASSERT (-1 == key3.compare(key4)); - ASSERT (-1 == key4.compare(key5)); - ASSERT (-1 == key1.compare(key5)); - ASSERT (-1 == key2.compare(key5)); - ASSERT (-1 == key3.compare(key5)); - ASSERT (-1 == key1.compare(key3)); - ASSERT (-1 == key1.compare(key4)); - ASSERT (-1 == key2.compare(key4)); + ASSERT ( 0 > key3.compare(key4)); + ASSERT ( 0 > key4.compare(key5)); + ASSERT ( 0 > key1.compare(key5)); + ASSERT ( 0 > key2.compare(key5)); + ASSERT ( 0 > key3.compare(key5)); + ASSERT ( 0 > key1.compare(key3)); + ASSERT ( 0 > key1.compare(key4)); + ASSERT ( 0 > key2.compare(key4)); // ordering of Asset smart ptrs