|
darco |
b3016b |
/*! ========================================================================
|
|
darco |
b3016b |
** Extended Template and Library Test Suite
|
|
darco |
b3016b |
** stringf Procedure Test
|
|
dooglus |
36d01e |
** $Id$
|
|
darco |
b3016b |
**
|
|
darco |
b3016b |
** Copyright (c) 2002 Robert B. Quattlebaum Jr.
|
|
darco |
b3016b |
**
|
|
darco |
b3016b |
** This package is free software; you can redistribute it and/or
|
|
darco |
b3016b |
** modify it under the terms of the GNU General Public License as
|
|
darco |
b3016b |
** published by the Free Software Foundation; either version 2 of
|
|
darco |
b3016b |
** the License, or (at your option) any later version.
|
|
darco |
b3016b |
**
|
|
darco |
b3016b |
** This package is distributed in the hope that it will be useful,
|
|
darco |
b3016b |
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
darco |
b3016b |
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
darco |
b3016b |
** General Public License for more details.
|
|
darco |
b3016b |
**
|
|
darco |
b3016b |
** === N O T E S ===========================================================
|
|
darco |
b3016b |
**
|
|
darco |
b3016b |
** ========================================================================= */
|
|
darco |
b3016b |
|
|
darco |
b3016b |
/* === H E A D E R S ======================================================= */
|
|
darco |
b3016b |
|
|
darco |
b3016b |
#include <iostream></iostream>
|
|
darco |
b3016b |
#include <etl stringf=""></etl>
|
|
darco |
b3016b |
#include <stdio.h></stdio.h>
|
|
darco |
b3016b |
|
|
darco |
b3016b |
/* === M A C R O S ========================================================= */
|
|
darco |
b3016b |
|
|
darco |
b3016b |
using namespace etl;
|
|
darco |
b3016b |
using namespace std;
|
|
darco |
b3016b |
|
|
darco |
b3016b |
/* === C L A S S E S ======================================================= */
|
|
darco |
b3016b |
|
|
darco |
b3016b |
|
|
darco |
b3016b |
/* === P R O C E D U R E S ================================================= */
|
|
darco |
b3016b |
|
|
darco |
b3016b |
int basic_test(void)
|
|
darco |
b3016b |
{
|
|
darco |
b3016b |
int ret=0;
|
|
darco |
b3016b |
char mystring[80]="My formatted string!";
|
|
darco |
b3016b |
string myotherstring="my other string!";
|
|
dooglus |
cee594 |
|
|
darco |
b3016b |
cout<<strprintf("this a="" is="" of="" test="">>%s<<.",mystring)<</strprintf("this>
|
|
darco |
b3016b |
|
|
darco |
b3016b |
myotherstring="5 6.75 George 7";
|
|
darco |
b3016b |
int i,i2;
|
|
darco |
b3016b |
float f;
|
|
dooglus |
cee594 |
|
|
darco |
b3016b |
#ifndef ETL_NO_STRSCANF
|
|
darco |
b3016b |
strscanf(myotherstring,"%d %f %s %d",&i, &f, mystring, &i2);
|
|
darco |
b3016b |
#else
|
|
darco |
b3016b |
cout<<"warning: strscanf() disabled at compile time..."<
|
|
darco |
b3016b |
i=5;f=6.75;i2=7;
|
|
darco |
b3016b |
#endif
|
|
darco |
b3016b |
|
|
darco |
b3016b |
cout<
|
|
darco |
b3016b |
|
|
darco |
b3016b |
cout<
|
|
darco |
b3016b |
return ret;
|
|
darco |
b3016b |
}
|
|
darco |
b3016b |
|
|
darco |
b3016b |
int base_and_dir_name_test(void)
|
|
darco |
b3016b |
{
|
|
darco |
b3016b |
int ret=0;
|
|
darco |
b3016b |
|
|
darco |
b3016b |
string str(unix_to_local_path("/usr/bin/bleh.exe"));
|
|
darco |
b3016b |
cout<<"Test Case 1 -> "<
|
|
darco |
b3016b |
cout<<"basename -> "<
|
|
darco |
b3016b |
if(basename(str)!="bleh.exe")
|
|
darco |
b3016b |
cerr<<"error:Bad basename"<
|
|
darco |
b3016b |
cout<<"dirname -> "<
|
|
darco |
b3016b |
if(dirname(str)!=unix_to_local_path("/usr/bin"))
|
|
darco |
b3016b |
cerr<<"error:Bad dirname"<
|
|
darco |
b3016b |
cout<
|
|
darco |
b3016b |
|
|
darco |
b3016b |
str=unix_to_local_path("/usr/bin/");
|
|
darco |
b3016b |
cout<<"Test Case 2 -> "<
|
|
darco |
b3016b |
cout<<"basename -> "<
|
|
darco |
b3016b |
if(basename(str)!="bin")
|
|
darco |
b3016b |
cerr<<"error:Bad basename"<
|
|
darco |
b3016b |
cout<<"dirname -> "<
|
|
darco |
b3016b |
if(dirname(str)!=unix_to_local_path("/usr"))
|
|
darco |
b3016b |
cerr<<"error:Bad dirname"<
|
|
darco |
b3016b |
cout<
|
|
darco |
b3016b |
|
|
darco |
b3016b |
str="bleh.exe";
|
|
darco |
b3016b |
cout<<"Test Case 3 -> "<
|
|
darco |
b3016b |
cout<<"basename -> "<
|
|
darco |
b3016b |
if(basename(str)!="bleh.exe")
|
|
darco |
b3016b |
cerr<<"error:Bad basename"<
|
|
darco |
b3016b |
cout<<"dirname -> "<
|
|
darco |
b3016b |
if(dirname(str)!=unix_to_local_path("."))
|
|
darco |
b3016b |
cerr<<"error:Bad dirname"<
|
|
darco |
b3016b |
cout<
|
|
darco |
b3016b |
|
|
darco |
b3016b |
return ret;
|
|
darco |
b3016b |
}
|
|
darco |
b3016b |
|
|
darco |
b3016b |
int relative_path_test()
|
|
darco |
b3016b |
{
|
|
darco |
b3016b |
int ret=0;
|
|
darco |
b3016b |
|
|
darco |
b3016b |
string curr_path=unix_to_local_path("/usr/local/bin/.");
|
|
darco |
b3016b |
string dest_path=unix_to_local_path("/usr/share");
|
|
darco |
b3016b |
|
|
darco |
b3016b |
cout<<"curr_path="<
|
|
darco |
b3016b |
cout<<"relative_path="<
|
|
darco |
b3016b |
if(relative_path(curr_path,dest_path)!=unix_to_local_path("../../share"))
|
|
darco |
b3016b |
cerr<<"Bad relative path"<
|
|
darco |
b3016b |
|
|
darco |
aefba0 |
cout<
|
|
darco |
aefba0 |
|
|
darco |
aefba0 |
curr_path=unix_to_local_path("/home/darco/projects/voria");
|
|
darco |
aefba0 |
dest_path=unix_to_local_path("/home/darco/projects/voria/myfile.txt");
|
|
darco |
aefba0 |
cout<<"curr_path="<
|
|
darco |
aefba0 |
cout<<"relative_path="<
|
|
darco |
aefba0 |
if(relative_path(curr_path,dest_path)!=unix_to_local_path("myfile.txt"))
|
|
darco |
aefba0 |
cerr<<"Bad relative path"<
|
|
dooglus |
cee594 |
|
|
darco |
aefba0 |
cout<
|
|
darco |
aefba0 |
|
|
darco |
aefba0 |
curr_path=unix_to_local_path("/home/darco/projects/voria");
|
|
darco |
aefba0 |
dest_path=unix_to_local_path("/home/darco/projects/voria/files/myfile.txt");
|
|
darco |
aefba0 |
cout<<"curr_path="<
|
|
darco |
aefba0 |
cout<<"relative_path="<
|
|
darco |
aefba0 |
if(relative_path(curr_path,dest_path)!=unix_to_local_path("files/myfile.txt"))
|
|
darco |
aefba0 |
cerr<<"Bad relative path"<
|
|
dooglus |
cee594 |
|
|
darco |
aefba0 |
cout<
|
|
darco |
aefba0 |
|
|
darco |
b3016b |
curr_path=unix_to_local_path("/usr/local/../include/sys/../linux/linux.h");
|
|
darco |
b3016b |
cout<<"dirty_path="<
|
|
darco |
b3016b |
cout<<"clean_path="<
|
|
darco |
b3016b |
|
|
darco |
b3016b |
cout<<"current_working_directory="<
|
|
darco |
b3016b |
return ret;
|
|
darco |
b3016b |
}
|
|
darco |
b3016b |
|
|
darco |
b3016b |
|
|
darco |
b3016b |
/* === E N T R Y P O I N T ================================================= */
|
|
darco |
b3016b |
|
|
darco |
b3016b |
int main()
|
|
darco |
b3016b |
{
|
|
darco |
b3016b |
int error=0;
|
|
dooglus |
cee594 |
|
|
darco |
b3016b |
error+=basic_test();
|
|
darco |
b3016b |
error+=base_and_dir_name_test();
|
|
darco |
b3016b |
error+=relative_path_test();
|
|
darco |
b3016b |
|
|
darco |
b3016b |
return error;
|
|
darco |
b3016b |
}
|