From 410acd74ef6841cf767c5b8fb18fcbea154cf0fd Mon Sep 17 00:00:00 2001 From: Rodrigo Braz Monteiro Date: Mon, 10 Nov 2008 00:47:24 +0000 Subject: [PATCH] Added some early test cases. Originally committed to SVN as r2440. --- unit_test/src/athenasub/athenasub_suite.h | 39 ++++++++++ unit_test/src/athenasub/test_time.cpp | 94 +++++++++++++++++++++++ unit_test/src/main.cpp | 54 ++++++++++++- unit_test/src/suites.h | 38 +++++++++ unit_test/unit_test.vcproj | 12 +++ 5 files changed, 235 insertions(+), 2 deletions(-) create mode 100644 unit_test/src/athenasub/athenasub_suite.h create mode 100644 unit_test/src/athenasub/test_time.cpp create mode 100644 unit_test/src/suites.h diff --git a/unit_test/src/athenasub/athenasub_suite.h b/unit_test/src/athenasub/athenasub_suite.h new file mode 100644 index 000000000..25e23571f --- /dev/null +++ b/unit_test/src/athenasub/athenasub_suite.h @@ -0,0 +1,39 @@ +// Copyright (c) 2008, Rodrigo Braz Monteiro +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + +class AthenasubSuite : public CppUnit::TestSuite { +public: + static std::string getName() { return "Athenasub"; } +}; diff --git a/unit_test/src/athenasub/test_time.cpp b/unit_test/src/athenasub/test_time.cpp new file mode 100644 index 000000000..a9670650d --- /dev/null +++ b/unit_test/src/athenasub/test_time.cpp @@ -0,0 +1,94 @@ +// Copyright (c) 2008, Rodrigo Braz Monteiro +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + +#include +#include +#include "../../../aegilib/include/athenasub/athenasub.h" +#include "../suites.h" +using namespace Athenasub; + + +class AthenasubTimeTest : public CppUnit::TestFixture { + CPPUNIT_TEST_SUITE(AthenasubTimeTest); + CPPUNIT_TEST(testBounds); + CPPUNIT_TEST(testComparison); + CPPUNIT_TEST_SUITE_END(); + +private: + Time a; + Time *b; + Time *c; + Time *d; + Time e; + +public: + void setUp() + { + a; + b = new Time(0); + c = new Time(5000); + d = new Time(-500); + e.SetMS(-1000); + } + + void tearDown() + { + delete b; + delete c; + } + + void testComparison() + { + CPPUNIT_ASSERT(a == a); + CPPUNIT_ASSERT(a <= a); + CPPUNIT_ASSERT(a >= a); + CPPUNIT_ASSERT(a == *b); + CPPUNIT_ASSERT(a == *d); + CPPUNIT_ASSERT(a != *c); + CPPUNIT_ASSERT(*b != *c); + CPPUNIT_ASSERT(a < *c); + CPPUNIT_ASSERT(a <= *c); + CPPUNIT_ASSERT(*c > *b); + CPPUNIT_ASSERT(*c >= *b); + } + + void testBounds() + { + CPPUNIT_ASSERT(d->GetMS() >= 0); + CPPUNIT_ASSERT(e.GetMS() >= 0); + } +}; + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(AthenasubTimeTest,AegisubSuites::athenasub()); diff --git a/unit_test/src/main.cpp b/unit_test/src/main.cpp index a1e88f0ae..17cc8b030 100644 --- a/unit_test/src/main.cpp +++ b/unit_test/src/main.cpp @@ -1,6 +1,56 @@ -#include +// Copyright (c) 2008, Rodrigo Braz Monteiro +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + +#include +#include +#include "athenasub/athenasub_suite.h" +#include "suites.h" + + +#ifdef _MSC_VER +#pragma comment(lib,"cppunit.lib") +#endif + int main() { - return 0; + CppUnit::TextUi::TestRunner runner; + + runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(AegisubSuites::athenasub()).makeTest()); + runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); + + bool result = runner.run("",false); + return result ? 0 : 1; } diff --git a/unit_test/src/suites.h b/unit_test/src/suites.h new file mode 100644 index 000000000..26cdac39b --- /dev/null +++ b/unit_test/src/suites.h @@ -0,0 +1,38 @@ +// Copyright (c) 2008, Rodrigo Braz Monteiro +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + +namespace AegisubSuites { + static std::string athenasub() { return "athenasub"; } +}; diff --git a/unit_test/unit_test.vcproj b/unit_test/unit_test.vcproj index 378523e3b..a66b6df09 100644 --- a/unit_test/unit_test.vcproj +++ b/unit_test/unit_test.vcproj @@ -172,6 +172,18 @@ RelativePath=".\src\main.cpp" > + + + + + +