#include "PathTest.h"
#include <cppunit/Test.h>
#include <cppunit/TestCaller.h>
#include <cppunit/TestSuite.h>
#include <Directory.h>
#include <Entry.h>
#include <Path.h>
#include <TypeConstants.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <string>
using std::string;
CppUnit::Test*
PathTest::Suite() {
CppUnit::TestSuite *suite = new CppUnit::TestSuite();
typedef CppUnit::TestCaller<PathTest> TC;
suite->addTest( new TC("BPath::Init Test1", &PathTest::InitTest1) );
suite->addTest( new TC("BPath::Init Test2", &PathTest::InitTest2) );
suite->addTest( new TC("BPath::Append Test", &PathTest::AppendTest) );
suite->addTest( new TC("BPath::Leaf Test", &PathTest::LeafTest) );
suite->addTest( new TC("BPath::Parent Test", &PathTest::ParentTest) );
suite->addTest( new TC("BPath::Comparison Test",
&PathTest::ComparisonTest) );
suite->addTest( new TC("BPath::Assignment Test",
&PathTest::AssignmentTest) );
suite->addTest( new TC("BPath::Flattenable Test",
&PathTest::FlattenableTest) );
return suite;
}
void
PathTest::setUp()
{
BasicTest::setUp();
}
void
PathTest::tearDown()
{
BasicTest::tearDown();
}
void
PathTest::InitTest1()
{
NextSubTest();
{
BPath path;
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
const char *pathName = "/";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/doesn't/exist/but/who/cares";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/.///.";
const char *normalizedPathName = "/";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(normalizedPathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot/";
const char *normalizedPathName = "/boot";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(normalizedPathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/doesn't/exist/but///who/cares";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
const char *pathName = "/";
BPath path(pathName, NULL, true);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
BPath path(pathName, NULL, true);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/doesn't/exist/but/who/cares";
BPath path(pathName, NULL, true);
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
}
chdir("/");
NextSubTest();
{
const char *pathName = "boot";
const char *absolutePathName = "/boot";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
chdir("/boot");
NextSubTest();
{
const char *pathName = "doesn't/exist/but/who/cares";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
}
chdir("/");
NextSubTest();
{
const char *pathName = "boot/";
const char *normalizedPathName = "/boot";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(normalizedPathName) == path.Path() );
}
chdir("/boot");
NextSubTest();
{
const char *pathName = "doesn't/exist/but///who/cares";
BPath path(pathName);
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
}
chdir("/");
NextSubTest();
{
const char *pathName = "boot";
const char *absolutePathName = "/boot";
BPath path(pathName, NULL, true);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
chdir("/boot");
NextSubTest();
{
const char *pathName = "doesn't/exist/but/who/cares";
BPath path(pathName, NULL, true);
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
const char *pathName = "/";
const char *leafName = "boot";
const char *absolutePathName = "/boot";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
const char *leafName = "home/Desktop";
const char *absolutePathName = "/boot/home/Desktop";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/doesn't/exist";
const char *leafName = "but/who/cares";
const char *absolutePathName = "/doesn't/exist/but/who/cares";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/.///";
const char *leafName = ".";
const char *absolutePathName = "/";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
const char *leafName = "home/..";
const char *absolutePathName = "/boot";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/doesn't/exist";
const char *leafName = "but//who/cares";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
const char *pathName = "/doesn't/exist";
const char *leafName = "but/who/cares";
BPath path(pathName, leafName, true);
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
}
chdir("/");
NextSubTest();
{
const char *pathName = "boot";
const char *leafName = "home";
const char *absolutePathName = "/boot/home";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
chdir("/boot");
NextSubTest();
{
const char *pathName = "doesn't/exist";
const char *leafName = "but/who/cares";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
}
chdir("/boot");
NextSubTest();
{
const char *pathName = "home";
const char *leafName = "Desktop//";
const char *normalizedPathName = "/boot/home/Desktop";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(normalizedPathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/";
const char *leafName = "/boot";
BPath path(pathName, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
BPath path((const char*)NULL, "test");
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
BPath path((const char*)NULL);
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
const char *pathName = "/";
BDirectory dir(pathName);
BPath path(&dir, NULL);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
BDirectory dir(pathName);
BPath path(&dir, NULL);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/";
BDirectory dir(pathName);
BPath path(&dir, NULL, true);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
BDirectory dir(pathName);
BPath path(&dir, NULL, true);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/";
const char *leafName = "boot";
const char *absolutePathName = "/boot";
BDirectory dir(pathName);
BPath path(&dir, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
const char *leafName = "home/Desktop";
const char *absolutePathName = "/boot/home/Desktop";
BDirectory dir(pathName);
BPath path(&dir, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
const char *leafName = "home/..";
const char *absolutePathName = "/boot";
BDirectory dir(pathName);
BPath path(&dir, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/";
const char *leafName = "/boot";
BDirectory dir(pathName);
BPath path(&dir, leafName);
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
BDirectory dir;
BPath path(&dir, "test");
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
BDirectory dir("/this/dir/doesn't/exists");
BPath path(&dir, "test");
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
}
#if !TEST_R5
NextSubTest();
{
BPath path((const BDirectory*)NULL, "test");
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
BPath path((const BDirectory*)NULL, NULL);
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
}
#endif
NextSubTest();
{
const char *pathName = "/";
BEntry entry(pathName);
BPath path(&entry);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
BEntry entry(pathName);
BPath path(&entry);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot/shouldn't exist";
BEntry entry(pathName);
BPath path(&entry);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
BEntry entry;
BPath path(&entry);
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
BEntry entry("/this/doesn't/exist");
BPath path(&entry);
CPPUNIT_ASSERT( equals(path.InitCheck(), B_NO_INIT, B_ENTRY_NOT_FOUND) );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
BPath path((const BEntry*)NULL);
CPPUNIT_ASSERT( equals(path.InitCheck(), B_NO_INIT, B_BAD_VALUE) );
CPPUNIT_ASSERT( path.Path() == NULL );
}
NextSubTest();
{
const char *pathName = "/";
BEntry entry(pathName);
entry_ref ref;
CPPUNIT_ASSERT( entry.GetRef(&ref) == B_OK );
BPath path(&ref);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot";
BEntry entry(pathName);
entry_ref ref;
CPPUNIT_ASSERT( entry.GetRef(&ref) == B_OK );
BPath path(&ref);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
const char *pathName = "/boot/shouldn't exist";
BEntry entry(pathName);
entry_ref ref;
CPPUNIT_ASSERT( entry.GetRef(&ref) == B_OK );
BPath path(&ref);
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
}
NextSubTest();
{
BPath path((const entry_ref*)NULL);
CPPUNIT_ASSERT( equals(path.InitCheck(), B_NO_INIT, B_BAD_VALUE) );
CPPUNIT_ASSERT( path.Path() == NULL );
}
}
void
PathTest::InitTest2()
{
BPath path;
const char *pathName;
const char *leafName;
const char *absolutePathName;
const char *normalizedPathName;
BDirectory dir;
BEntry entry;
entry_ref ref;
NextSubTest();
pathName = "/";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/boot";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/doesn't/exist/but/who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/.///.";
normalizedPathName = "/";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(normalizedPathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/boot/";
normalizedPathName = "/boot";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(normalizedPathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/doesn't/exist/but///who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
pathName = "/";
CPPUNIT_ASSERT( path.SetTo(pathName, NULL, true) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/boot";
CPPUNIT_ASSERT( path.SetTo(pathName, NULL, true) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/doesn't/exist/but/who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName, NULL, true) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
chdir("/");
NextSubTest();
pathName = "boot";
absolutePathName = "/boot";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
chdir("/boot");
NextSubTest();
pathName = "doesn't/exist/but/who/cares";
absolutePathName = "/boot/doesn't/exist/but/who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
chdir("/");
NextSubTest();
pathName = "boot/";
normalizedPathName = "/boot";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(normalizedPathName) == path.Path() );
path.Unset();
chdir("/boot");
NextSubTest();
pathName = "doesn't/exist/but///who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
chdir("/");
NextSubTest();
pathName = "boot";
absolutePathName = "/boot";
CPPUNIT_ASSERT( path.SetTo(pathName, NULL, true) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
chdir("/boot");
NextSubTest();
pathName = "doesn't/exist/but/who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName, NULL, true) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
pathName = "/";
leafName = "boot";
absolutePathName = "/boot";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/boot";
leafName = "home/Desktop";
absolutePathName = "/boot/home/Desktop";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/doesn't/exist";
leafName = "but/who/cares";
absolutePathName = "/doesn't/exist/but/who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/.///";
leafName = ".";
absolutePathName = "/";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/boot";
leafName = "home/..";
absolutePathName = "/boot";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/boot/home";
leafName = "home/Desktop";
absolutePathName = "/boot/home/Desktop";
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(path.Path(), ".///./") == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
CPPUNIT_ASSERT( path.SetTo(path.Path(), "..") == B_OK );
CPPUNIT_ASSERT( string("/boot") == path.Path() );
CPPUNIT_ASSERT( path.SetTo(path.Path(), leafName) == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
NextSubTest();
pathName = "/doesn't/exist";
leafName = "but//who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
pathName = "/doesn't/exist";
leafName = "but/who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName, true) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
chdir("/");
NextSubTest();
pathName = "boot";
leafName = "home";
absolutePathName = "/boot/home";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
chdir("/boot");
NextSubTest();
pathName = "doesn't/exist";
leafName = "but/who/cares";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
chdir("/boot");
NextSubTest();
pathName = "home";
leafName = "Desktop//";
normalizedPathName = "/boot/home/Desktop";
CPPUNIT_ASSERT( path.SetTo(pathName, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(normalizedPathName) == path.Path() );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/", "/boot") == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo((const char*)NULL, "test") == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo((const char*)NULL) == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
pathName = "/";
CPPUNIT_ASSERT( dir.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&dir, NULL) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
dir.Unset();
NextSubTest();
pathName = "/boot";
CPPUNIT_ASSERT( dir.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&dir, NULL) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
dir.Unset();
NextSubTest();
pathName = "/";
CPPUNIT_ASSERT( dir.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&dir, NULL, true) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
dir.Unset();
NextSubTest();
pathName = "/boot";
CPPUNIT_ASSERT( dir.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&dir, NULL, true) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
dir.Unset();
NextSubTest();
pathName = "/";
leafName = "boot";
absolutePathName = "/boot";
CPPUNIT_ASSERT( dir.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&dir, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
dir.Unset();
NextSubTest();
pathName = "/boot";
leafName = "home/Desktop";
absolutePathName = "/boot/home/Desktop";
CPPUNIT_ASSERT( dir.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&dir, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
dir.Unset();
NextSubTest();
pathName = "/boot";
leafName = "home/..";
absolutePathName = "/boot";
CPPUNIT_ASSERT( dir.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&dir, leafName) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(absolutePathName) == path.Path() );
path.Unset();
dir.Unset();
NextSubTest();
pathName = "/";
leafName = "/boot";
CPPUNIT_ASSERT( dir.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&dir, leafName) == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
dir.Unset();
NextSubTest();
CPPUNIT_ASSERT( dir.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.SetTo(&dir, "test") == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
dir.Unset();
NextSubTest();
CPPUNIT_ASSERT( dir.SetTo("/this/dir/doesn't/exists") == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.SetTo(&dir, "test") == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
dir.Unset();
#if !TEST_R5
NextSubTest();
CPPUNIT_ASSERT( path.SetTo((const BDirectory*)NULL, "test") == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
dir.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo((const BDirectory*)NULL, NULL) == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
dir.Unset();
#endif
NextSubTest();
pathName = "/";
CPPUNIT_ASSERT( entry.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&entry) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
entry.Unset();
NextSubTest();
pathName = "/boot";
CPPUNIT_ASSERT( entry.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&entry) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
entry.Unset();
NextSubTest();
pathName = "/boot/shouldn't exist";
CPPUNIT_ASSERT( entry.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&entry) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
entry.Unset();
NextSubTest();
CPPUNIT_ASSERT( entry.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.SetTo(&entry) == B_NO_INIT );
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
entry.Unset();
NextSubTest();
CPPUNIT_ASSERT( entry.SetTo("/this/doesn't/exist") == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( equals(path.SetTo(&entry), B_NO_INIT, B_ENTRY_NOT_FOUND) );
CPPUNIT_ASSERT( equals(path.InitCheck(), B_NO_INIT, B_ENTRY_NOT_FOUND) );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
entry.Unset();
NextSubTest();
CPPUNIT_ASSERT( equals(path.SetTo((const BEntry*)NULL), B_NO_INIT,
B_BAD_VALUE) );
CPPUNIT_ASSERT( equals(path.InitCheck(), B_NO_INIT, B_BAD_VALUE) );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
entry.Unset();
NextSubTest();
pathName = "/";
CPPUNIT_ASSERT( entry.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( entry.GetRef(&ref) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&ref) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
entry.Unset();
NextSubTest();
pathName = "/boot";
CPPUNIT_ASSERT( entry.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( entry.GetRef(&ref) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&ref) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
entry.Unset();
NextSubTest();
pathName = "/boot/shouldn't exist";
CPPUNIT_ASSERT( entry.SetTo(pathName) == B_OK );
CPPUNIT_ASSERT( entry.GetRef(&ref) == B_OK );
CPPUNIT_ASSERT( path.SetTo(&ref) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
CPPUNIT_ASSERT( string(pathName) == path.Path() );
path.Unset();
entry.Unset();
NextSubTest();
CPPUNIT_ASSERT( equals(path.SetTo((const entry_ref*)NULL), B_NO_INIT,
B_BAD_VALUE) );
CPPUNIT_ASSERT( equals(path.InitCheck(), B_NO_INIT, B_BAD_VALUE) );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
entry.Unset();
}
void
PathTest::AppendTest()
{
BPath path;
NextSubTest();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.Append("test") == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/") == B_OK );
CPPUNIT_ASSERT( string("/") == path.Path() );
CPPUNIT_ASSERT( path.Append("boot") == B_OK );
CPPUNIT_ASSERT( string("/boot") == path.Path() );
CPPUNIT_ASSERT( path.Append("home/Desktop") == B_OK );
CPPUNIT_ASSERT( string("/boot/home/Desktop") == path.Path() );
CPPUNIT_ASSERT( path.Append("non/existing") == B_OK );
CPPUNIT_ASSERT( string("/boot/home/Desktop/non/existing") == path.Path() );
CPPUNIT_ASSERT( path.Append("at/least/not//now") == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/boot") == B_OK );
CPPUNIT_ASSERT( string("/boot") == path.Path() );
CPPUNIT_ASSERT( path.Append("home/non-existing", true) == B_OK );
CPPUNIT_ASSERT( string("/boot/home/non-existing") == path.Path() );
CPPUNIT_ASSERT( path.Append("not/now", true) == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.InitCheck() == B_ENTRY_NOT_FOUND );
CPPUNIT_ASSERT( path.Path() == NULL );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/boot") == B_OK );
CPPUNIT_ASSERT( path.Append(NULL) == B_OK );
CPPUNIT_ASSERT( string("/boot") == path.Path() );
CPPUNIT_ASSERT( path.SetTo("/boot") == B_OK );
CPPUNIT_ASSERT( path.Append("/tmp") == B_BAD_VALUE );
CPPUNIT_ASSERT( path.InitCheck() == B_BAD_VALUE );
CPPUNIT_ASSERT( path.SetTo("/boot") == B_OK );
CPPUNIT_ASSERT( path.Append("") == B_OK );
CPPUNIT_ASSERT( string("/boot") == path.Path() );
path.Unset();
}
void
PathTest::LeafTest()
{
BPath path;
NextSubTest();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.Leaf() == NULL );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/") == B_OK );
CPPUNIT_ASSERT( string("") == path.Leaf() );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/boot") == B_OK );
CPPUNIT_ASSERT( string("boot") == path.Leaf() );
CPPUNIT_ASSERT( path.SetTo("/boot/home") == B_OK );
CPPUNIT_ASSERT( string("home") == path.Leaf() );
CPPUNIT_ASSERT( path.SetTo("/boot/home/Desktop") == B_OK );
CPPUNIT_ASSERT( string("Desktop") == path.Leaf() );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/non-existing") == B_OK );
CPPUNIT_ASSERT( string("non-existing") == path.Leaf() );
CPPUNIT_ASSERT( path.SetTo("/non/existing/dir") == B_OK );
CPPUNIT_ASSERT( string("dir") == path.Leaf() );
path.Unset();
}
void
PathTest::ParentTest()
{
BPath path;
BPath parent;
#if !TEST_R5
NextSubTest();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.GetParent(&parent) == B_NO_INIT );
path.Unset();
parent.Unset();
#endif
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/") == B_OK );
CPPUNIT_ASSERT( path.GetParent(&parent) == B_ENTRY_NOT_FOUND );
path.Unset();
parent.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/boot") == B_OK );
CPPUNIT_ASSERT( path.GetParent(&parent) == B_OK );
CPPUNIT_ASSERT( string("/") == parent.Path() );
CPPUNIT_ASSERT( path.SetTo("/boot/home") == B_OK );
CPPUNIT_ASSERT( path.GetParent(&parent) == B_OK );
CPPUNIT_ASSERT( string("/boot") == parent.Path() );
CPPUNIT_ASSERT( path.SetTo("/boot/home/Desktop") == B_OK );
CPPUNIT_ASSERT( path.GetParent(&parent) == B_OK );
CPPUNIT_ASSERT( string("/boot/home") == parent.Path() );
path.Unset();
parent.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/non-existing") == B_OK );
CPPUNIT_ASSERT( path.GetParent(&parent) == B_OK );
CPPUNIT_ASSERT( string("/") == parent.Path() );
CPPUNIT_ASSERT( path.SetTo("/non/existing/dir") == B_OK );
CPPUNIT_ASSERT( path.GetParent(&parent) == B_OK );
CPPUNIT_ASSERT( string("/non/existing") == parent.Path() );
path.Unset();
parent.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/non/existing/dir") == B_OK );
CPPUNIT_ASSERT( path.GetParent(&path) == B_OK );
CPPUNIT_ASSERT( string("/non/existing") == path.Path() );
CPPUNIT_ASSERT( path.GetParent(&path) == B_OK );
CPPUNIT_ASSERT( string("/non") == path.Path() );
CPPUNIT_ASSERT( path.GetParent(&path) == B_OK );
CPPUNIT_ASSERT( string("/") == path.Path() );
CPPUNIT_ASSERT( path.GetParent(&path) == B_ENTRY_NOT_FOUND );
path.Unset();
parent.Unset();
#if !TEST_R5
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/non/existing/dir") == B_OK );
CPPUNIT_ASSERT( path.GetParent(NULL) == B_BAD_VALUE );
path.Unset();
parent.Unset();
#endif
}
void
PathTest::ComparisonTest()
{
BPath path;
BPath path2;
NextSubTest();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path2.InitCheck() == B_NO_INIT );
#if !TEST_R5
CPPUNIT_ASSERT( (path == path2) == true );
CPPUNIT_ASSERT( (path != path2) == false );
#endif
path.Unset();
path2.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/") == B_OK );
CPPUNIT_ASSERT( path2.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( (path == path2) == false );
CPPUNIT_ASSERT( (path != path2) == true );
path.Unset();
path2.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path2.SetTo("/") == B_OK );
CPPUNIT_ASSERT( (path == path2) == false );
CPPUNIT_ASSERT( (path != path2) == true );
path.Unset();
path2.Unset();
NextSubTest();
const char *paths[] = { "/", "/boot", "/boot/home", "/boot/home/Desktop" };
int32 pathCount = sizeof(paths) / sizeof(const char*);
for (int32 i = 0; i < pathCount; i++) {
for (int32 k = 0; k < pathCount; k++) {
CPPUNIT_ASSERT( path.SetTo(paths[i]) == B_OK );
CPPUNIT_ASSERT( path2.SetTo(paths[k]) == B_OK );
CPPUNIT_ASSERT( (path == path2) == (i == k) );
CPPUNIT_ASSERT( (path != path2) == (i != k) );
}
}
path.Unset();
path2.Unset();
const char *pathName;
NextSubTest();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
pathName = "/";
CPPUNIT_ASSERT( (path == pathName) == false );
CPPUNIT_ASSERT( (path != pathName) == true );
path.Unset();
NextSubTest();
for (int32 i = 0; i < pathCount; i++) {
for (int32 k = 0; k < pathCount; k++) {
CPPUNIT_ASSERT( path.SetTo(paths[i]) == B_OK );
pathName = paths[k];
CPPUNIT_ASSERT( (path == pathName) == (i == k) );
CPPUNIT_ASSERT( (path != pathName) == (i != k) );
}
}
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/") == B_OK );
pathName = NULL;
#if !TEST_R5
CPPUNIT_ASSERT( (path == pathName) == false );
CPPUNIT_ASSERT( (path != pathName) == true );
#endif
path.Unset();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
#if !TEST_R5
CPPUNIT_ASSERT( (path == pathName) == true );
CPPUNIT_ASSERT( (path != pathName) == false );
#endif
path.Unset();
}
void
PathTest::AssignmentTest()
{
NextSubTest();
{
BPath path;
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
BPath path2(path);
CPPUNIT_ASSERT( path2.InitCheck() == B_NO_INIT );
}
NextSubTest();
{
BPath path("/boot/home/Desktop");
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
BPath path2(path);
CPPUNIT_ASSERT( path2.InitCheck() == B_OK );
CPPUNIT_ASSERT( path == path2 );
}
NextSubTest();
{
BPath path;
BPath path2;
path2 = path;
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path2.InitCheck() == B_NO_INIT );
}
NextSubTest();
{
BPath path;
BPath path2("/");
CPPUNIT_ASSERT( path2.InitCheck() == B_OK );
path2 = path;
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path2.InitCheck() == B_NO_INIT );
}
NextSubTest();
{
BPath path("/boot/home");
CPPUNIT_ASSERT( path.InitCheck() == B_OK );
BPath path2;
path2 = path;
CPPUNIT_ASSERT( path2.InitCheck() == B_OK );
CPPUNIT_ASSERT( path == path2 );
}
NextSubTest();
{
const char *pathName = "/boot/home";
BPath path2;
path2 = pathName;
CPPUNIT_ASSERT( path2.InitCheck() == B_OK );
CPPUNIT_ASSERT( path2 == pathName );
}
NextSubTest();
{
const char *pathName = NULL;
BPath path2;
path2 = pathName;
CPPUNIT_ASSERT( path2.InitCheck() == B_NO_INIT );
}
}
void
PathTest::FlattenableTest()
{
BPath path;
NextSubTest();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.IsFixedSize() == false );
CPPUNIT_ASSERT( path.TypeCode() == B_REF_TYPE );
CPPUNIT_ASSERT( path.AllowsTypeCode(B_REF_TYPE) == true );
CPPUNIT_ASSERT( path.AllowsTypeCode(B_STRING_TYPE) == false );
CPPUNIT_ASSERT( path.AllowsTypeCode(B_FLOAT_TYPE) == false );
path.Unset();
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/boot/home") == B_OK );
CPPUNIT_ASSERT( path.IsFixedSize() == false );
CPPUNIT_ASSERT( path.TypeCode() == B_REF_TYPE );
CPPUNIT_ASSERT( path.AllowsTypeCode(B_REF_TYPE) == true );
CPPUNIT_ASSERT( path.AllowsTypeCode(B_STRING_TYPE) == false );
CPPUNIT_ASSERT( path.AllowsTypeCode(B_FLOAT_TYPE) == false );
path.Unset();
char buffer[1024];
NextSubTest();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
ssize_t size = path.FlattenedSize();
CPPUNIT_ASSERT( size == sizeof(dev_t) + sizeof(ino_t) );
CPPUNIT_ASSERT( path.Flatten(buffer, sizeof(buffer)) == B_OK );
CPPUNIT_ASSERT( path.Unflatten(B_REF_TYPE, buffer, size) == B_OK );
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
path.Unset();
NextSubTest();
const char *paths[] = { "/", "/boot", "/boot/home", "/boot/home/Desktop",
"/boot/home/non-existing" };
int32 pathCount = sizeof(paths) / sizeof(const char*);
for (int32 i = 0; i < pathCount; i++) {
const char *pathName = paths[i];
CPPUNIT_ASSERT( path.SetTo(pathName) == B_OK );
BEntry entry;
CPPUNIT_ASSERT( entry.SetTo(pathName) == B_OK );
entry_ref ref;
CPPUNIT_ASSERT( entry.GetRef(&ref) == B_OK );
struct flattened_ref { dev_t device; ino_t directory; char name[1]; };
size = path.FlattenedSize();
ssize_t expectedSize
= sizeof(dev_t) + sizeof(ino_t) + strlen(ref.name) + 1;
CPPUNIT_ASSERT( size == expectedSize);
CPPUNIT_ASSERT( path.Flatten(buffer, sizeof(buffer)) == B_OK );
const flattened_ref &fref = *(flattened_ref*)buffer;
CPPUNIT_ASSERT( ref.device == fref.device );
CPPUNIT_ASSERT( ref.directory == fref.directory );
CPPUNIT_ASSERT( strcmp(ref.name, fref.name) == 0 );
path.Unset();
CPPUNIT_ASSERT( path.InitCheck() == B_NO_INIT );
CPPUNIT_ASSERT( path.Unflatten(B_REF_TYPE, buffer, size) == B_OK );
CPPUNIT_ASSERT( path == pathName );
path.Unset();
}
NextSubTest();
CPPUNIT_ASSERT( path.SetTo("/boot/home") == B_OK );
#if !TEST_R5
CPPUNIT_ASSERT( path.Flatten(NULL, sizeof(buffer)) == B_BAD_VALUE );
CPPUNIT_ASSERT( path.Flatten(buffer, path.FlattenedSize() - 2)
== B_BAD_VALUE );
#endif
path.Unset();
}