00001
00002 #include <ept/config.h>
00003 #include <ept/core/desktop.h>
00004 #include <ept/core/list.h>
00005 #include <ept/test.h>
00006
00007 using namespace ept::core;
00008
00009 struct TestDesktop {
00010 desktop::Source desk;
00011 ept::Token t;
00012
00013 TestDesktop() : desk( TEST_ENV_DIR "desktop" ) {}
00014
00015 template< desktop::PropertyId P, typename L >
00016 void checkIteration2( int c, const char **check, L l ) {
00017 int i = 0;
00018 while ( !l.empty() ) {
00019 assert_eq( l.head().template get< P >(), check[ i ] );
00020 l = l.tail();
00021 ++ i;
00022 }
00023 assert_eq( i, c );
00024 }
00025
00026 template< desktop::PropertyId P, typename L >
00027 void checkIteration( int c, const char **check, L l ) {
00028 checkIteration2< P >( c, check, list::sort( l ) );
00029 }
00030
00031 Test iteration() {
00032 const char *check[] = { "Kdict", "foo", "XQF", "X-Server" };
00033 checkIteration< desktop::Name >(
00034 4, check, desk.list< desktop::Name >() );
00035 }
00036
00037 Test groupProperty() {
00038 const char *check[] = {
00039 "{ KDE, Qt, Utility }",
00040 "{ KDE, Qt, Utility }",
00041 "{ Application, Game, X-SuSE-Core-Game }",
00042 "{ KDE, Qt, X-KDE-information }",
00043 };
00044 checkIteration< desktop::Group >(
00045 4, check, desk.list< desktop::Name >() );
00046 }
00047
00048 Test groups() {
00049 const char *check[] = { "Kdict", "foo" };
00050 checkIteration< desktop::Name >(
00051 2, check, desk.group( "{ KDE, Qt, Utility }" ) );
00052 }
00053
00054 Test emptyGroupList() {
00055 desktop::InternalList l;
00056 assert( l.empty() );
00057 }
00058 };