Refactor Kernel FS tests

Change-Id: Ic8c403bf02a080c12d199bb44d30c694e600f351
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10674
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
Kacper Kasper
2026-04-07 13:16:46 +00:00
parent 71fc6a97b4
commit 499154375f
3 changed files with 312 additions and 404 deletions
+309 -359
View File
@@ -4,15 +4,14 @@
*/ */
#include "KPathTest.h"
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <fs/KPath.h> #include <fs/KPath.h>
#include <cppunit/TestCaller.h> #include <TestSuiteAddon.h>
#include <cppunit/TestSuite.h> #include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
typedef void* mutex; typedef void* mutex;
@@ -73,358 +72,309 @@ _mutex_unlock(mutex* lock)
} }
// #pragma mark - class KPathTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(KPathTest);
CPPUNIT_TEST(TestSetToAndPath);
KPathTest::KPathTest() CPPUNIT_TEST(TestLazyAlloc);
{ CPPUNIT_TEST(TestLeaf);
} CPPUNIT_TEST(TestReplaceLeaf);
CPPUNIT_TEST(TestRemoveLeaf);
CPPUNIT_TEST(TestAdopt);
KPathTest::~KPathTest() CPPUNIT_TEST(TestLockBuffer);
{ CPPUNIT_TEST(TestDetachBuffer);
} CPPUNIT_TEST(TestNormalize);
CPPUNIT_TEST(TestAssign);
CPPUNIT_TEST(TestEquals);
void CPPUNIT_TEST(TestNotEquals);
KPathTest::TestSetToAndPath() CPPUNIT_TEST_SUITE_END();
{
KPath path; public:
status_t status = path.InitCheck(); void TestSetToAndPath()
CPPUNIT_ASSERT_MESSAGE("1. ", status == B_OK); {
KPath path;
status = path.SetTo("a/b/c"); status_t status = path.InitCheck();
CPPUNIT_ASSERT_MESSAGE("2. ", status == B_OK); CPPUNIT_ASSERT_MESSAGE("1. ", status == B_OK);
CPPUNIT_ASSERT(strcmp(path.Path(), "a/b/c") == 0);
CPPUNIT_ASSERT(path.Length() == 5); status = path.SetTo("a/b/c");
CPPUNIT_ASSERT(path.BufferSize() == B_PATH_NAME_LENGTH); CPPUNIT_ASSERT_MESSAGE("2. ", status == B_OK);
CPPUNIT_ASSERT(strcmp(path.Path(), "a/b/c") == 0);
status = path.SetPath("abc/def"); CPPUNIT_ASSERT(path.Length() == 5);
CPPUNIT_ASSERT_MESSAGE("3. ", status == B_OK); CPPUNIT_ASSERT(path.BufferSize() == B_PATH_NAME_LENGTH);
CPPUNIT_ASSERT(strcmp(path.Path(), "abc/def") == 0);
CPPUNIT_ASSERT(path.Length() == 7); status = path.SetPath("abc/def");
CPPUNIT_ASSERT(path.BufferSize() == B_PATH_NAME_LENGTH); CPPUNIT_ASSERT_MESSAGE("3. ", status == B_OK);
CPPUNIT_ASSERT(strcmp(path.Path(), "abc/def") == 0);
status = path.SetTo("a/b/c", false, 10); CPPUNIT_ASSERT(path.Length() == 7);
CPPUNIT_ASSERT_MESSAGE("4. ", status == B_OK); CPPUNIT_ASSERT(path.BufferSize() == B_PATH_NAME_LENGTH);
CPPUNIT_ASSERT(strcmp(path.Path(), "a/b/c") == 0);
CPPUNIT_ASSERT(path.Length() == 5); status = path.SetTo("a/b/c", false, 10);
CPPUNIT_ASSERT(path.BufferSize() == 10); CPPUNIT_ASSERT_MESSAGE("4. ", status == B_OK);
CPPUNIT_ASSERT(strcmp(path.Path(), "a/b/c") == 0);
status = path.SetPath("sorry/i'm/too/long"); CPPUNIT_ASSERT(path.Length() == 5);
CPPUNIT_ASSERT(status == B_BUFFER_OVERFLOW); CPPUNIT_ASSERT(path.BufferSize() == 10);
CPPUNIT_ASSERT(strcmp(path.Path(), "a/b/c") == 0);
CPPUNIT_ASSERT(path.Length() == 5); status = path.SetPath("sorry/i'm/too/long");
CPPUNIT_ASSERT(status == B_BUFFER_OVERFLOW);
status = path.SetTo(NULL, KPath::DEFAULT, SIZE_MAX); CPPUNIT_ASSERT(strcmp(path.Path(), "a/b/c") == 0);
CPPUNIT_ASSERT(status == B_NO_MEMORY); CPPUNIT_ASSERT(path.Length() == 5);
}
status = path.SetTo(NULL, KPath::DEFAULT, SIZE_MAX);
CPPUNIT_ASSERT(status == B_NO_MEMORY);
void }
KPathTest::TestLazyAlloc()
{ void TestLazyAlloc()
KPath path(NULL, KPath::LAZY_ALLOC); {
CPPUNIT_ASSERT(path.Path() == NULL); KPath path(NULL, KPath::LAZY_ALLOC);
CPPUNIT_ASSERT(path.Length() == 0); CPPUNIT_ASSERT(path.Path() == NULL);
CPPUNIT_ASSERT(path.BufferSize() == B_PATH_NAME_LENGTH); CPPUNIT_ASSERT(path.Length() == 0);
CPPUNIT_ASSERT(path.InitCheck() == B_OK); CPPUNIT_ASSERT(path.BufferSize() == B_PATH_NAME_LENGTH);
CPPUNIT_ASSERT(path.InitCheck() == B_OK);
path.SetPath("/b");
CPPUNIT_ASSERT(path.Path() != NULL); path.SetPath("/b");
CPPUNIT_ASSERT(strcmp(path.Path(), "/b") == 0); CPPUNIT_ASSERT(path.Path() != NULL);
CPPUNIT_ASSERT(path.Length() == 2); CPPUNIT_ASSERT(strcmp(path.Path(), "/b") == 0);
CPPUNIT_ASSERT(path.BufferSize() == B_PATH_NAME_LENGTH); CPPUNIT_ASSERT(path.Length() == 2);
CPPUNIT_ASSERT(path.BufferSize() == B_PATH_NAME_LENGTH);
KPath second("yo", KPath::LAZY_ALLOC);
CPPUNIT_ASSERT(second.Path() != NULL); KPath second("yo", KPath::LAZY_ALLOC);
CPPUNIT_ASSERT(strcmp(second.Path(), "yo") == 0); CPPUNIT_ASSERT(second.Path() != NULL);
CPPUNIT_ASSERT(second.Length() == 2); CPPUNIT_ASSERT(strcmp(second.Path(), "yo") == 0);
CPPUNIT_ASSERT(second.BufferSize() == B_PATH_NAME_LENGTH); CPPUNIT_ASSERT(second.Length() == 2);
CPPUNIT_ASSERT(second.BufferSize() == B_PATH_NAME_LENGTH);
status_t status = path.SetTo(NULL, KPath::LAZY_ALLOC, SIZE_MAX);
CPPUNIT_ASSERT(status == B_OK); status_t status = path.SetTo(NULL, KPath::LAZY_ALLOC, SIZE_MAX);
status = path.SetPath("test"); CPPUNIT_ASSERT(status == B_OK);
CPPUNIT_ASSERT(status == B_NO_MEMORY); status = path.SetPath("test");
CPPUNIT_ASSERT(path.InitCheck() == B_NO_MEMORY); CPPUNIT_ASSERT(status == B_NO_MEMORY);
} CPPUNIT_ASSERT(path.InitCheck() == B_NO_MEMORY);
}
void void TestLeaf()
KPathTest::TestLeaf() {
{ KPath path("a");
KPath path("a"); CPPUNIT_ASSERT(strcmp(path.Path(), "a") == 0);
CPPUNIT_ASSERT(strcmp(path.Path(), "a") == 0); CPPUNIT_ASSERT(strcmp(path.Leaf(), "a") == 0);
CPPUNIT_ASSERT(strcmp(path.Leaf(), "a") == 0);
path.SetTo("");
path.SetTo(""); CPPUNIT_ASSERT(strcmp(path.Path(), "") == 0);
CPPUNIT_ASSERT(strcmp(path.Path(), "") == 0); CPPUNIT_ASSERT(strcmp(path.Leaf(), "") == 0);
CPPUNIT_ASSERT(strcmp(path.Leaf(), "") == 0);
path.SetTo("/");
path.SetTo("/"); CPPUNIT_ASSERT(strcmp(path.Path(), "/") == 0);
CPPUNIT_ASSERT(strcmp(path.Path(), "/") == 0); CPPUNIT_ASSERT(strcmp(path.Leaf(), "") == 0);
CPPUNIT_ASSERT(strcmp(path.Leaf(), "") == 0);
path.SetTo("a/b");
path.SetTo("a/b"); CPPUNIT_ASSERT(strcmp(path.Path(), "a/b") == 0);
CPPUNIT_ASSERT(strcmp(path.Path(), "a/b") == 0); CPPUNIT_ASSERT(strcmp(path.Leaf(), "b") == 0);
CPPUNIT_ASSERT(strcmp(path.Leaf(), "b") == 0);
path.SetTo("a/b/");
path.SetTo("a/b/"); CPPUNIT_ASSERT(strcmp(path.Path(), "a/b") == 0);
CPPUNIT_ASSERT(strcmp(path.Path(), "a/b") == 0); CPPUNIT_ASSERT(strcmp(path.Leaf(), "b") == 0);
CPPUNIT_ASSERT(strcmp(path.Leaf(), "b") == 0);
path.SetTo("/a/b//c");
path.SetTo("/a/b//c"); CPPUNIT_ASSERT(strcmp(path.Path(), "/a/b//c") == 0);
CPPUNIT_ASSERT(strcmp(path.Path(), "/a/b//c") == 0); CPPUNIT_ASSERT(strcmp(path.Leaf(), "c") == 0);
CPPUNIT_ASSERT(strcmp(path.Leaf(), "c") == 0); }
}
void TestReplaceLeaf()
{
void KPath path;
KPathTest::TestReplaceLeaf() status_t status = path.ReplaceLeaf("x");
{ CPPUNIT_ASSERT(status == B_OK);
KPath path;
status_t status = path.ReplaceLeaf("x"); path.SetTo("/a/b/c");
CPPUNIT_ASSERT(status == B_OK); CPPUNIT_ASSERT(path.Length() == 6);
path.SetTo("/a/b/c"); status = path.ReplaceLeaf(NULL);
CPPUNIT_ASSERT(path.Length() == 6); CPPUNIT_ASSERT(status == B_OK);
CPPUNIT_ASSERT(path.Length() == 4);
status = path.ReplaceLeaf(NULL); CPPUNIT_ASSERT(strcmp(path.Path(), "/a/b") == 0);
CPPUNIT_ASSERT(status == B_OK);
CPPUNIT_ASSERT(path.Length() == 4); status = path.ReplaceLeaf("");
CPPUNIT_ASSERT(strcmp(path.Path(), "/a/b") == 0); CPPUNIT_ASSERT(status == B_OK);
CPPUNIT_ASSERT(path.Length() == 2);
status = path.ReplaceLeaf(""); CPPUNIT_ASSERT(strcmp(path.Path(), "/a") == 0);
CPPUNIT_ASSERT(status == B_OK);
CPPUNIT_ASSERT(path.Length() == 2); status = path.ReplaceLeaf("c");
CPPUNIT_ASSERT(strcmp(path.Path(), "/a") == 0); CPPUNIT_ASSERT(status == B_OK);
CPPUNIT_ASSERT(path.Length() == 2);
status = path.ReplaceLeaf("c"); CPPUNIT_ASSERT(strcmp(path.Path(), "/c") == 0);
CPPUNIT_ASSERT(status == B_OK); }
CPPUNIT_ASSERT(path.Length() == 2);
CPPUNIT_ASSERT(strcmp(path.Path(), "/c") == 0); void TestRemoveLeaf()
} {
KPath path;
bool removed = path.RemoveLeaf();
void CPPUNIT_ASSERT(!removed);
KPathTest::TestRemoveLeaf()
{ path.SetTo("a//b/c");
KPath path; removed = path.RemoveLeaf();
bool removed = path.RemoveLeaf(); CPPUNIT_ASSERT_MESSAGE("1. removed", removed);
CPPUNIT_ASSERT(!removed); CPPUNIT_ASSERT(strcmp(path.Path(), "a//b") == 0);
CPPUNIT_ASSERT(path.Length() == 4);
path.SetTo("a//b/c");
removed = path.RemoveLeaf(); removed = path.RemoveLeaf();
CPPUNIT_ASSERT_MESSAGE("1. removed", removed); CPPUNIT_ASSERT_MESSAGE("2. removed", removed);
CPPUNIT_ASSERT(strcmp(path.Path(), "a//b") == 0); CPPUNIT_ASSERT(strcmp(path.Path(), "a") == 0);
CPPUNIT_ASSERT(path.Length() == 4); CPPUNIT_ASSERT(path.Length() == 1);
removed = path.RemoveLeaf(); removed = path.RemoveLeaf();
CPPUNIT_ASSERT_MESSAGE("2. removed", removed); CPPUNIT_ASSERT_MESSAGE("3. !removed", !removed);
CPPUNIT_ASSERT(strcmp(path.Path(), "a") == 0); CPPUNIT_ASSERT(strcmp(path.Path(), "a") == 0);
CPPUNIT_ASSERT(path.Length() == 1); CPPUNIT_ASSERT(path.Length() == 1);
removed = path.RemoveLeaf(); path.SetTo("/a");
CPPUNIT_ASSERT_MESSAGE("3. !removed", !removed); removed = path.RemoveLeaf();
CPPUNIT_ASSERT(strcmp(path.Path(), "a") == 0); CPPUNIT_ASSERT_MESSAGE("4. removed", removed);
CPPUNIT_ASSERT(path.Length() == 1); CPPUNIT_ASSERT(strcmp(path.Path(), "/") == 0);
CPPUNIT_ASSERT(path.Length() == 1);
path.SetTo("/a");
removed = path.RemoveLeaf(); removed = path.RemoveLeaf();
CPPUNIT_ASSERT_MESSAGE("4. removed", removed); CPPUNIT_ASSERT_MESSAGE("5. !removed", !removed);
CPPUNIT_ASSERT(strcmp(path.Path(), "/") == 0); CPPUNIT_ASSERT(strcmp(path.Path(), "/") == 0);
CPPUNIT_ASSERT(path.Length() == 1); CPPUNIT_ASSERT(path.Length() == 1);
}
removed = path.RemoveLeaf();
CPPUNIT_ASSERT_MESSAGE("5. !removed", !removed); void TestAdopt()
CPPUNIT_ASSERT(strcmp(path.Path(), "/") == 0); {
CPPUNIT_ASSERT(path.Length() == 1); KPath one("first", false, 10);
} CPPUNIT_ASSERT(one.InitCheck() == B_OK);
CPPUNIT_ASSERT(one.BufferSize() == 10);
CPPUNIT_ASSERT(one.Length() == 5);
void KPath two("second", false, 20);
KPathTest::TestAdopt() CPPUNIT_ASSERT(two.InitCheck() == B_OK);
{ CPPUNIT_ASSERT(two.BufferSize() == 20);
KPath one("first", false, 10);
CPPUNIT_ASSERT(one.InitCheck() == B_OK); one.Adopt(two);
CPPUNIT_ASSERT(one.BufferSize() == 10); CPPUNIT_ASSERT(one.InitCheck() == B_OK);
CPPUNIT_ASSERT(one.Length() == 5); CPPUNIT_ASSERT(one.BufferSize() == 20);
KPath two("second", false, 20); CPPUNIT_ASSERT(one.Length() == 6);
CPPUNIT_ASSERT(two.InitCheck() == B_OK); CPPUNIT_ASSERT(strcmp(one.Path(), "second") == 0);
CPPUNIT_ASSERT(two.BufferSize() == 20); CPPUNIT_ASSERT(two.Length() == 0);
CPPUNIT_ASSERT(two.BufferSize() == 0);
one.Adopt(two); CPPUNIT_ASSERT(two.InitCheck() == B_NO_INIT);
CPPUNIT_ASSERT(one.InitCheck() == B_OK);
CPPUNIT_ASSERT(one.BufferSize() == 20); two.SetTo(NULL, KPath::LAZY_ALLOC);
CPPUNIT_ASSERT(one.Length() == 6); CPPUNIT_ASSERT(two.InitCheck() == B_OK);
CPPUNIT_ASSERT(strcmp(one.Path(), "second") == 0); CPPUNIT_ASSERT(two.Path() == NULL);
CPPUNIT_ASSERT(two.Length() == 0); CPPUNIT_ASSERT(two.Length() == 0);
CPPUNIT_ASSERT(two.BufferSize() == 0); one.Adopt(two);
CPPUNIT_ASSERT(two.InitCheck() == B_NO_INIT);
CPPUNIT_ASSERT(two.InitCheck() == B_OK);
two.SetTo(NULL, KPath::LAZY_ALLOC); CPPUNIT_ASSERT(one.Path() == NULL);
CPPUNIT_ASSERT(two.InitCheck() == B_OK); CPPUNIT_ASSERT(one.Length() == 0);
CPPUNIT_ASSERT(two.Path() == NULL); one.SetPath("test");
CPPUNIT_ASSERT(two.Length() == 0); CPPUNIT_ASSERT(one.Path() != NULL);
one.Adopt(two); CPPUNIT_ASSERT(strcmp(one.Path(), "test") == 0);
CPPUNIT_ASSERT(one.Length() == 4);
CPPUNIT_ASSERT(two.InitCheck() == B_OK); }
CPPUNIT_ASSERT(one.Path() == NULL);
CPPUNIT_ASSERT(one.Length() == 0); void TestLockBuffer()
one.SetPath("test"); {
CPPUNIT_ASSERT(one.Path() != NULL); KPath path;
CPPUNIT_ASSERT(strcmp(one.Path(), "test") == 0); CPPUNIT_ASSERT(path.Path() != NULL);
CPPUNIT_ASSERT(one.Length() == 4); CPPUNIT_ASSERT(path.Length() == 0);
} char* buffer = path.LockBuffer();
CPPUNIT_ASSERT(path.Path() == buffer);
strcpy(buffer, "test");
void CPPUNIT_ASSERT(path.Length() == 0);
KPathTest::TestLockBuffer() path.UnlockBuffer();
{ CPPUNIT_ASSERT(path.Length() == 4);
KPath path;
CPPUNIT_ASSERT(path.Path() != NULL); KPath second(NULL, KPath::LAZY_ALLOC);
CPPUNIT_ASSERT(path.Length() == 0); CPPUNIT_ASSERT(second.Path() == NULL);
char* buffer = path.LockBuffer(); CPPUNIT_ASSERT(second.Length() == 0);
CPPUNIT_ASSERT(path.Path() == buffer); buffer = second.LockBuffer();
strcpy(buffer, "test"); CPPUNIT_ASSERT(second.Path() == NULL);
CPPUNIT_ASSERT(path.Length() == 0); CPPUNIT_ASSERT(buffer == NULL);
path.UnlockBuffer();
CPPUNIT_ASSERT(path.Length() == 4); KPath third(NULL, KPath::LAZY_ALLOC);
CPPUNIT_ASSERT(third.Path() == NULL);
KPath second(NULL, KPath::LAZY_ALLOC); buffer = third.LockBuffer(true);
CPPUNIT_ASSERT(second.Path() == NULL); CPPUNIT_ASSERT(third.Path() != NULL);
CPPUNIT_ASSERT(second.Length() == 0); CPPUNIT_ASSERT(buffer != NULL);
buffer = second.LockBuffer(); strcpy(buffer, "test");
CPPUNIT_ASSERT(second.Path() == NULL); CPPUNIT_ASSERT(third.Length() == 0);
CPPUNIT_ASSERT(buffer == NULL); third.UnlockBuffer();
CPPUNIT_ASSERT(third.Length() == 4);
KPath third(NULL, KPath::LAZY_ALLOC); }
CPPUNIT_ASSERT(third.Path() == NULL);
buffer = third.LockBuffer(true); void TestDetachBuffer()
CPPUNIT_ASSERT(third.Path() != NULL); {
CPPUNIT_ASSERT(buffer != NULL); KPath path("test");
strcpy(buffer, "test"); CPPUNIT_ASSERT(path.InitCheck() == B_OK);
CPPUNIT_ASSERT(third.Length() == 0);
third.UnlockBuffer(); char* buffer = path.DetachBuffer();
CPPUNIT_ASSERT(third.Length() == 4); CPPUNIT_ASSERT(buffer != NULL);
} CPPUNIT_ASSERT(strcmp(buffer, "test") == 0);
CPPUNIT_ASSERT(path.Path() == NULL);
void CPPUNIT_ASSERT(path.InitCheck() == B_NO_INIT);
KPathTest::TestDetachBuffer() }
{
KPath path("test"); void TestNormalize()
CPPUNIT_ASSERT(path.InitCheck() == B_OK); {
// Outside the kernel, we only test the error case.
char* buffer = path.DetachBuffer(); KPath path("test/../out");
CPPUNIT_ASSERT(buffer != NULL); CPPUNIT_ASSERT(path.InitCheck() == B_OK);
CPPUNIT_ASSERT(strcmp(buffer, "test") == 0);
status_t status = path.Normalize(true);
CPPUNIT_ASSERT(path.Path() == NULL); CPPUNIT_ASSERT(status == B_NOT_SUPPORTED);
CPPUNIT_ASSERT(path.InitCheck() == B_NO_INIT); CPPUNIT_ASSERT(path.Path() != NULL);
} CPPUNIT_ASSERT(path.Path()[0] == '\0');
CPPUNIT_ASSERT(path.Path() == path.Leaf());
void status = path.SetTo("test/../in", KPath::NORMALIZE);
KPathTest::TestNormalize() CPPUNIT_ASSERT(status == B_NOT_SUPPORTED);
{ CPPUNIT_ASSERT(path.Path() != NULL);
// Outside the kernel, we only test the error case. CPPUNIT_ASSERT(path.Path()[0] == '\0');
KPath path("test/../out"); CPPUNIT_ASSERT(path.Path() == path.Leaf());
CPPUNIT_ASSERT(path.InitCheck() == B_OK); }
status_t status = path.Normalize(true); void TestAssign()
CPPUNIT_ASSERT(status == B_NOT_SUPPORTED); {
CPPUNIT_ASSERT(path.Path() != NULL); KPath one("first", false, 10);
CPPUNIT_ASSERT(path.Path()[0] == '\0'); CPPUNIT_ASSERT(one.Length() == 5);
CPPUNIT_ASSERT(path.Path() == path.Leaf()); KPath two("second", false, 20);
status = path.SetTo("test/../in", KPath::NORMALIZE); two = one;
CPPUNIT_ASSERT(status == B_NOT_SUPPORTED); CPPUNIT_ASSERT(strcmp(two.Path(), one.Path()) == 0);
CPPUNIT_ASSERT(path.Path() != NULL); CPPUNIT_ASSERT(two.Path() != one.Path());
CPPUNIT_ASSERT(path.Path()[0] == '\0'); CPPUNIT_ASSERT(two.BufferSize() == one.BufferSize());
CPPUNIT_ASSERT(path.Path() == path.Leaf()); CPPUNIT_ASSERT(two.Length() == one.Length());
}
one = "/whatever";
CPPUNIT_ASSERT(one.Length() == 9);
void CPPUNIT_ASSERT(one.BufferSize() == two.BufferSize());
KPathTest::TestAssign() CPPUNIT_ASSERT(strcmp(one.Path(), "/whatever") == 0);
{ }
KPath one("first", false, 10);
CPPUNIT_ASSERT(one.Length() == 5); void TestEquals()
KPath two("second", false, 20); {
KPath a("one");
two = one; KPath b("two");
CPPUNIT_ASSERT(strcmp(two.Path(), one.Path()) == 0); CPPUNIT_ASSERT_MESSAGE("1.", !(a == b));
CPPUNIT_ASSERT(two.Path() != one.Path());
CPPUNIT_ASSERT(two.BufferSize() == one.BufferSize()); b = a;
CPPUNIT_ASSERT(two.Length() == one.Length()); CPPUNIT_ASSERT_MESSAGE("2.", a == b);
one = "/whatever"; b = "ones";
CPPUNIT_ASSERT(one.Length() == 9); CPPUNIT_ASSERT_MESSAGE("3.", !(a == b));
CPPUNIT_ASSERT(one.BufferSize() == two.BufferSize()); }
CPPUNIT_ASSERT(strcmp(one.Path(), "/whatever") == 0);
} void TestNotEquals()
{
KPath a("one");
void KPath b("two");
KPathTest::TestEquals() CPPUNIT_ASSERT_MESSAGE("1.", a != b);
{
KPath a("one"); b = a;
KPath b("two"); CPPUNIT_ASSERT_MESSAGE("2.", !(a != b));
CPPUNIT_ASSERT_MESSAGE("1.", !(a == b));
b = "ones";
b = a; CPPUNIT_ASSERT_MESSAGE("3.", a != b);
CPPUNIT_ASSERT_MESSAGE("2.", a == b); }
};
b = "ones";
CPPUNIT_ASSERT_MESSAGE("3.", !(a == b));
} CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(KPathTest, getTestSuiteName());
void
KPathTest::TestNotEquals()
{
KPath a("one");
KPath b("two");
CPPUNIT_ASSERT_MESSAGE("1.", a != b);
b = a;
CPPUNIT_ASSERT_MESSAGE("2.", !(a != b));
b = "ones";
CPPUNIT_ASSERT_MESSAGE("3.", a != b);
}
/*static*/ void
KPathTest::AddTests(BTestSuite& parent)
{
CppUnit::TestSuite& suite = *new CppUnit::TestSuite("KPathTest");
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestSetToAndPath", &KPathTest::TestSetToAndPath));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestLazyAlloc", &KPathTest::TestLazyAlloc));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestLeaf", &KPathTest::TestLeaf));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestReplaceLeaf", &KPathTest::TestReplaceLeaf));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestRemoveLeaf", &KPathTest::TestRemoveLeaf));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestAdopt", &KPathTest::TestAdopt));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestLockBuffer", &KPathTest::TestLockBuffer));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestDetachBuffer", &KPathTest::TestDetachBuffer));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestNormalize", &KPathTest::TestNormalize));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestAssign", &KPathTest::TestAssign));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestEquals", &KPathTest::TestEquals));
suite.addTest(new CppUnit::TestCaller<KPathTest>(
"KPathTest::TestNotEquals", &KPathTest::TestNotEquals));
parent.addTest("KPathTest", &suite);
}
-35
View File
@@ -1,35 +0,0 @@
/*
* Copyright 2017, Axel Dörfler, [email protected].
* Distributed under the terms of the MIT License.
*/
#ifndef KPATH_TEST_H
#define KPATH_TEST_H
#include <TestCase.h>
#include <TestSuite.h>
class KPathTest : public CppUnit::TestCase {
public:
KPathTest();
virtual ~KPathTest();
void TestSetToAndPath();
void TestLazyAlloc();
void TestLeaf();
void TestReplaceLeaf();
void TestRemoveLeaf();
void TestAdopt();
void TestLockBuffer();
void TestDetachBuffer();
void TestNormalize();
void TestAssign();
void TestEquals();
void TestNotEquals();
static void AddTests(BTestSuite& suite);
};
#endif // KPATH_TEST_H
@@ -4,18 +4,11 @@
*/ */
#include <TestSuite.h>
#include <TestSuiteAddon.h> #include <TestSuiteAddon.h>
#include "KPathTest.h"
const char*
BTestSuite* getTestSuiteName()
getTestSuite()
{ {
BTestSuite* suite = new BTestSuite("KernelFS"); return "KernelFS";
KPathTest::AddTests(*suite);
return suite;
} }